CN104298687B - 一种哈希分区管理方法及装置 - Google Patents

一种哈希分区管理方法及装置 Download PDF

Info

Publication number
CN104298687B
CN104298687B CN201310303609.1A CN201310303609A CN104298687B CN 104298687 B CN104298687 B CN 104298687B CN 201310303609 A CN201310303609 A CN 201310303609A CN 104298687 B CN104298687 B CN 104298687B
Authority
CN
China
Prior art keywords
key
hash
prefixes
back end
range
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310303609.1A
Other languages
English (en)
Other versions
CN104298687A (zh
Inventor
朱国云
王玉法
赵恒�
杨成虎
侯凤林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310303609.1A priority Critical patent/CN104298687B/zh
Publication of CN104298687A publication Critical patent/CN104298687A/zh
Application granted granted Critical
Publication of CN104298687B publication Critical patent/CN104298687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种哈希分区管理方法及装置,包括确定键值(Key)中包含有范围关键信息;对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。本申请利用key的用于区分不同的范围的Key前缀部分进行哈希运算来分区,保证了具有相同Key前缀的Key分布在了同一数据节点上,使得Key在各数据节点上的分布具有了针对性,从而提高了哈希分区的管理效率。进一步地,基于本申请的哈希分区方法的范围查询确保了需要查找的范围内的key存储在同一数据节点上,大大缩短了响应时间,而且范围查询不需要在每个数据节点上执行,大大减轻了分布式存储系统的负载。

Description

一种哈希分区管理方法及装置
技术领域
本申请涉及分布式存储技术,尤指一种哈希分区管理方法及装置。
背景技术
哈希分区(hash partition)是哈希(hash)在数据库中一个简单的应用,哈希分区的原理就是,利用hash函数对某个键值(key)进行hash运算,然后根据hash值确定哈希分区将其分布到分布式存储系统中不同的数据节点上。现有哈希分区的方法对Key在各数据节点上的分布随意,确保了数据在预先确定数目的分区中的平均分布。
发明内容
为了解决上述技术问题,本申请提供了一种哈希分区管理方法及装置,能够保证Key在各数据节点上的分布具有针对性,从而提高哈希分区的管理效率。
为了达到本申请目的,本申请提供一种哈希分区管理方法,包括:确定键值Key中包含有范围关键信息;
对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。
所述Key包括Key前缀和Key后缀;其中,
所述范围关键信息为key前缀,用于区分不同的范围;
Key后缀是不同的Key的值。
所述key的数据结构包括:
用于表明所述Key的长度的Key的总长度字段;
用于表明所述Key前缀的长度的Key前缀长度字段;以及,
用于携带Key的值的Key值字段。
所述确定Key中包含有范围关键信息包括:判断所述Key的Key前缀长度字段的取值是否大于0,如果大于0,则确定所述Key中包含有范围关键信息。
该方法还包括:如果所述Key的Key前缀长度字段的取值不大于0,则确定所述Key中未包含范围关键信息。
所述对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区包括:
对所述key的key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
该方法还包括:对整个所述key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
当进行范围查找时,该方法还包括:
判断所述范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,则,
对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
所述范围下限Key和范围上限Key中是否均包含有Key前缀包括:
如果所述范围下限Key和范围上限Key的Key前缀长度字段的取值均大于0,则确定范围下限Key和范围上限Key中均包含有Key前缀。
如果判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致,该方法还包括:
返回查询失败,或者按照现有的范围查询方法进行查询。
本申请还提供一种哈希分区管理装置,包括判断模块,及分区模块;其中,判断模块,用于确定Key中包含有范围关键信息,向分区模块发送第一通知;
分区模块,用于接到第一通知,对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。
所述判断模块,具体用于判断所述Key的Key前缀长度字段的取值是否大于0,如果大于0,则确定所述Key中包含有范围关键信息,向分区模块发送第一通知;
所述分区模块,具体用于接收来自判断模块的第一通知,对所述key的key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
所述判断模块,还用于在判断出所述Key的Key前缀长度字段的取值不大于0,则确定所述Key中未包含范围关键信息,向分区模块发送第二通知;
所述分区模块,还用于接收到来自判断模块的第二通知,对整个所述key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
还包括确定模块,此时,
所述判断模块,还用于判断范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,向确定模块发送第三通知;
确定模块,用于接收来自判断模块的第三通知,对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
所述判断模块,还用于在判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致时,向确定模块发送第四通知;
所述确定模块,还用于接收来自判断模块的第四通知,返回查询失败,或者按照现有的范围查询方法进行查询。
本申请提供的方案包括确定Key中包含有范围关键信息;对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。本申请提供的技术方案,利用key的用于区分不同的范围的Key前缀部分进行哈希运算来分区,这样,保证了具有相同Key前缀的Key分布在了同一数据节点上,使得Key在各数据节点上的分布具有了针对性,从而提高了哈希分区的管理效率。
进一步地,基于本申请的哈希分区方法,在进行哈希分区管理如范围查询中,范围下限Key和范围上限Key中均包含有Key前缀且二者一致,利用该Key前缀部分进行查找到的数据节点必然是同一个数据节点。可见,由于通过本申请方案确保了需要查找的范围内的key存储在同一数据节点上,不需要查找的范围内的key存储在哪个数据节点上,也不需要在每个数据节点上进行查找后再合并查找结果,大大缩短了响应时间,而且范围查询不需要在每个数据节点上执行,大大减轻了分布式存储系统的负载。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请哈希分区管理方法的流程示意图;
图2为本申请哈希分区管理装置的组成结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本申请一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
基于采用现有哈希分区方法的分布式存储系统中,由于Key在各数据节点上的分布随意,因此,在进行范围查找时,该范围查找需要在分布式存储系统中的每个数据节点上执行,然后再合并(merge)执行结果后得到范围查找结果。举例来讲,假设查询key的范围是aaab~aaaz(按字符串排序)。对于哈希分区的分布式存储系统,key为aaaba值可能存储在节点1上,key为aaabb值可能存储在节点2上,key为aaayyyy值可能存储在节点n上。而这整个范围区间内可能有任意多个key,且这些key肯定是散落在各个数据节点上的。那么,在进行范围查找时,需要将该范围查询下发至分布式系统中的每一个数据节点上,在每个数据节点上执行后,再合并每个数据节点返回执行结果。
可见,基于现有哈希分区方法的分布式存储系统,Key在各数据节点上的分布太过随意,不便于哈希分区的管理,甚至降低哈希分区的管理效率。比如,在进行范围查询时,一方面,由于无法确定需要查找的范围内的key存储在哪个数据节点上,需要在每个数据节点上进行查找后再合并查找结果,因此,增长了单次查询响应时间,而且随着整个分布式存储系统规模越来越大,响应时间将会越来越长;另一方面,由于每次范围查询都需要在每个数据节点上执行,必然增加了这个分布式存储系统的负载。
图1为本申请哈希分区管理方法的流程示意图,如图1所示,包括:
步骤100:确定Key中包含有范围关键信息。
本步骤中,针对某些Key,预先设置其格式由Key前缀(prefixkey)和Key后缀(suffixkey)两部分组成;其中,key前缀为范围关键信息,用于区分不同的范围。比如,在范围查询中,范围中的各个key的Key前缀是相同的。Key后缀是不同的Key的值。其中,哪些key需要按照包括Key前缀和Key后缀的格式来设置,是由上层业务决定的,也就是说,上层业务需要对key作范围查找,则将该Key设置包括Key前缀和Key后缀的格式。
在分布式存储系统中,由Key前缀和Key后缀两部分组成的key的数据结构主要包括用于表明Key的长度的Key总长度(totalsize)字段、用于表明Key前缀的长度的Key前缀长度(prefixsize)字段,以及用于携带Key的值的Key值(data)字段。其中,如果prefixsize字段的取值等于0,则表明该Key为现有技术中定义的Key值。
本步骤中,确定Key中包含有范围关键信息包括:判断Key的prefixsize字段的取值是否大于0,如果大于0,则确定Key中包含有范围关键信息。
进一步地,如果Key的prefixsize字段的取值不大于0,则确定Key中未包含范围关键信息,此时的Key为现有技术中定义的Key值。
步骤101:对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。
对key的prefixkey部分进行hash运算,并将得到的hash值对系统中最大的分区(maxpartition)值进行取模运算,得到该key落入的分区;最后,根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的Key后缀的值写入找到的数据节点。其中的hash运算、取模运算、查找数据节点的具体实现方法属于本领域技术人员的公知技术,并不属于本申请的保护范围。这里强调的是,对于某些Key,在进行哈希分区时,是利用key的prefixkey部分进行哈希运算来分区的,这样,保证了具有相同Key前缀的Key分布在了同一数据节点上,使得Key在各数据节点上的分布具有了针对性,从而提高了哈希分区的管理效率。
如果确定出Key中未包含范围关键信息,本申请方法还进一步包括,按照现有哈希分区方法,对整个key进行hash运算,并将得到的hash值对系统中最大的分区(maxpartition)值进行取模运算,得到该key落入的分区;最后,根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key值写入找到的数据节点。
基于本申请的哈希分区方法,假设范围查找的范围下限Key为(startkey),范围上限Key(endkey),作为哈希分区的管理中范围查找的具体实现包括:
首先,判断范围下限Key和范围上限Key中是否均包含有Key前缀:如果范围下限Key和范围上限Key的prefixsize字段的取值均大于0,则确定范围下限Key和范围上限Key中均包含有Key前缀;接着,判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果二者相同则一致。
在判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致时,对该Key前缀部分进行hash运算,并将得到的hash值对系统中最大的分区(maxpartition)值进行取模运算,得到该key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,从而实现范围查找。可见,基于本申请的哈希分区方法,本申请的范围查找方法中,需要查找的范围内的key存储在同一数据节点上,大大缩短了响应时间,范围查询不需要在每个数据节点上执行,大大减轻了分布式存储系统的负载。
下面举具体实施例进行说明。上层业务在使用时,在写入Key和范围查询时指定Key前缀(prefixkey)。以某即时通信系统的最近联系人业务为例,假设写入Key时,将当前用户标识(userid)作为prefixkey,以联系的当前时间(timestamp)作为Key后缀(suffixkey),而根据该写入的Key查找到的有效值(value)则是联系的对方userid。按照本申请图1所示的方法,由于当前用户标识(userid)作为prefixkey一致,利用其进行哈希分区后,这些Key必然被写入同一数据节点上。
在进行范围查找时,将当前userid作为prefixkey,范围可以是某个时间区间。比如:userid为10000000,查找当前时间(now)10天内的最近联系人,则查询区间Key为(10000000now~10000000(now-10)),该范围内的所有key都会落入在一个数据节点上执行完成,同样,对于作为范围上限Key和范围下限Key的prefixkey均为当前用户标识(userid),利用其进行哈希分区查找后,必然在同一数据节点上查找到这个范围的所有Key。
进一步地,如果判断出范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者即使都包含但是二者不一致,那么,可以返回查询失败,也可以按照现有的范围查询方法进行查询。
图2为本申请哈希分区管理装置的组成结构示意图,本发明哈希分区管理装置可以设置在分布式系统的配置中心,如图2所示,包括判断模块,及分区模块,其中,
判断模块,用于确定Key中包含有范围关键信息,向分区模块发送第一通知。具体用于:判断Key的Key前缀长度字段的取值是否大于0,如果大于0,则确定所述Key中包含有范围关键信息,向分区模块发送第一通知。
判断模块,还用于在判断出Key的Key前缀长度字段的取值不大于0,则确定所述Key中未包含范围关键信息,向分区模块发送第二通知。
分区模块,用于接到第一通知,对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。具体用于:接收来自判断模块的第一通知,对key的key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
分区模块,还用于接收到来自判断模块的第二通知,对整个所述key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
本申请哈希分区管理装置还包括确定模块,此时,
判断模块,还用于判断范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,向确定模块发送第三通知。
判断模块还用于,在判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致时,向确定模块发送第四通知。
确定模块,用于接收来自判断模块的第三通知,对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
确定模块还用于,接收来自判断模块的第四通知,返回查询失败,或者按照现有的范围查询方法进行查询。
本领域的技术人员应该明白,上述的本申请实施例所提供的装置的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (13)

1.一种哈希分区管理方法,其特征在于,包括:
确定键值Key中包含有范围关键信息,将键值Key划分为Key前缀和Key后缀,所述Key前缀包含Key值的范围关键信息,用于区分不同的范围;Key后缀是不同的Key的值;
对所述Key前缀进行哈希运算,并根据得到的哈希值进行哈希分区;
其中,所述确定Key中包含有范围关键信息包括:当所述Key的Key前缀长度字段的取值大于0时,确定所述Key中包含有范围关键信息。
2.根据权利要求1所述的哈希分区管理方法,其特征在于,所述Key的数据结构包括:
用于表明所述Key的长度的Key的总长度字段;
用于表明所述Key前缀的长度的Key前缀长度字段;以及,
用于携带Key的值的Key值字段。
3.根据权利要求1所述的哈希分区管理方法,其特征在于,该方法还包括:当所述Key的Key前缀长度字段的取值不大于0时,确定所述Key中未包含范围关键信息。
4.根据权利要求1所述的哈希分区管理方法,其特征在于,所述对所述Key前缀进行哈希运算,并根据得到的哈希值进行哈希分区包括:
对所述Key的Key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
5.根据权利要求3所述的哈希分区管理方法,其特征在于,该方法还包括:对整个所述Key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
6.根据权利要求1或4所述的哈希分区管理方法,其特征在于,当进行范围查找时,该方法还包括:
判断所述范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,则,
对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
7.根据权利要求6所述的哈希分区管理方法,其特征在于,所述范围下限Key和范围上限Key中是否均包含有Key前缀包括:
如果所述范围下限Key和范围上限Key的Key前缀长度字段的取值均大于0,则确定范围下限Key和范围上限Key中均包含有Key前缀。
8.根据权利要求6所述的哈希分区管理方法,其特征在于,如果判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致,该方法还包括:
返回查询失败,或者按照现有的范围查询方法进行查询。
9.一种哈希分区管理装置,其特征在于,包括判断模块,及分区模块;其中,判断模块,用于确定Key中包含有范围关键信息,将键值Key划分为Key前缀和Key后缀,所述Key前缀包含Key值的范围关键信息,用于区分不同的范围,Key后缀是不同的Key的值,向分区模块发送第一通知;
分区模块,用于接到第一通知,对所述Key前缀进行哈希运算,并根据得到的哈希值进行哈希分区;
其中,所述确定Key中包含有范围关键信息,包括:当所述Key的Key前缀长度字段的取值大于0时,确定所述Key中包含有范围关键信息。
10.根据权利要求9所述的哈希分区管理装置,其特征在于,
所述分区模块,具体用于接收来自判断模块的第一通知,对所述Key的Key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
11.根据权利要求10所述的哈希分区管理装置,其特征在于,
所述判断模块,还用于当判断所述Key的Key前缀长度字段的取值不大于0时,确定所述Key中未包含范围关键信息,向分区模块发送第二通知;
所述分区模块,还用于接收到来自判断模块的第二通知,对整个所述Key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
12.根据权利要求9~11任一项所述的哈希分区管理装置,其特征在于,还包括确定模块,此时,
所述判断模块,还用于判断范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,向确定模块发送第三通知;
确定模块,用于接收来自判断模块的第三通知,对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该Key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
13.根据权利要求12所述的哈希分区管理装置,其特征在于,
所述判断模块,还用于在判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致时,向确定模块发送第四通知;
所述确定模块,还用于接收来自判断模块的第四通知,返回查询失败,或者按照现有的范围查询方法进行查询。
CN201310303609.1A 2013-07-18 2013-07-18 一种哈希分区管理方法及装置 Active CN104298687B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310303609.1A CN104298687B (zh) 2013-07-18 2013-07-18 一种哈希分区管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310303609.1A CN104298687B (zh) 2013-07-18 2013-07-18 一种哈希分区管理方法及装置

Publications (2)

Publication Number Publication Date
CN104298687A CN104298687A (zh) 2015-01-21
CN104298687B true CN104298687B (zh) 2018-04-03

Family

ID=52318415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310303609.1A Active CN104298687B (zh) 2013-07-18 2013-07-18 一种哈希分区管理方法及装置

Country Status (1)

Country Link
CN (1) CN104298687B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989015B (zh) * 2015-01-28 2021-01-29 创新先进技术有限公司 一种数据库扩容方法和装置以及访问数据库的方法和装置
CN104731864B (zh) * 2015-02-26 2018-05-29 国家计算机网络与信息安全管理中心 一种海量非结构化数据的数据存储方法
CN109117423B (zh) * 2017-06-23 2022-05-03 阿里巴巴集团控股有限公司 数据库系统的表格分区配置方法、装置和系统
CN108345643A (zh) * 2018-01-12 2018-07-31 联动优势电子商务有限公司 一种数据处理方法及装置
CN109241063A (zh) * 2018-09-27 2019-01-18 中国银行股份有限公司 一种数据合并方法及系统
CN110532284B (zh) * 2019-09-06 2023-05-23 深圳前海环融联易信息科技服务有限公司 海量数据存储和检索方法、装置、计算机设备及存储介质
US20220391923A1 (en) * 2019-11-14 2022-12-08 Tetra Laval Holdings & Finance S.A. Generating and storing unique marking codes for liquid food packages
CN111538730B (zh) * 2020-04-30 2022-06-14 福建天晴数码有限公司 一种基于哈希桶算法的数据统计的方法及其系统
CN117215500B (zh) * 2023-11-09 2024-01-23 北京友友天宇系统技术有限公司 一种突破LMDB Key长度的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216821A (zh) * 2007-01-05 2008-07-09 中兴通讯股份有限公司 数据采集系统的存储管理方法
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN102968498A (zh) * 2012-12-05 2013-03-13 华为技术有限公司 数据处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436192B (zh) * 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216821A (zh) * 2007-01-05 2008-07-09 中兴通讯股份有限公司 数据采集系统的存储管理方法
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN102968498A (zh) * 2012-12-05 2013-03-13 华为技术有限公司 数据处理方法及装置

Also Published As

Publication number Publication date
CN104298687A (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
CN104298687B (zh) 一种哈希分区管理方法及装置
TWI682652B (zh) 資料處理方法及裝置
Demertzis et al. Dynamic searchable encryption with small client storage
US20170220614A1 (en) Consistent ring namespaces facilitating data storage and organization in network infrastructures
TW201823988A (zh) 區塊資料校驗方法和裝置
CN106407303A (zh) 数据存储、查询方法及装置
CN106960020B (zh) 一种创建索引表的方法及设备
CN105608142B (zh) 一种Json数据的存储方法及装置
CN108259346B (zh) 一种等价路由表项建立方法和装置
CN110334094B (zh) 一种基于倒排索引的数据查询方法、系统、装置及设备
CN107622079A (zh) 数据存储、查询方法及装置
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN107203532A (zh) 索引系统的构建方法、搜索的实现方法及装置
CN108399175B (zh) 一种数据存储、查询方法及其装置
US20220253419A1 (en) Multi-record index structure for key-value stores
CN103294799B (zh) 一种数据并行批量导入只读查询系统的方法及系统
CN107515807B (zh) 一种存储监控数据的方法及装置
CN109698814A (zh) 僵尸网络发现方法及僵尸网络发现装置
CN116756253B (zh) 关系型数据库的数据存储、查询方法、装置、设备和介质
CN107590160B (zh) 一种监控基数树内部结构以实现测试的方法及装置
CN102833295B (zh) 分布式缓存系统中的数据操作方法和装置
CN108664322A (zh) 数据处理方法及系统
CN105095283A (zh) 网络社交系统中准好友的推荐方法和系统
CN105488056B (zh) 一种对象处理方法与设备
CN101282296B (zh) 获取下一跳路由的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant