【技术实现步骤摘要】
一种多级无序索引方法与系统
本专利技术涉及大数据处理技术及存储索引
,尤其涉及一种快速的多级无序索引方法与系统。
技术介绍
随着大数据时代的到来,键值系统(Key-Valuestoragesystem,KV)迎来了飞速的发展。键值系统在首次执行写操作时,为每个值(Value)分配一个全局唯一的键(Key)。在后续的读操作和删除操作时,均需首先获取该键。因此,键的快速索引速度直接影响甚至决定了键值系统的性能。现有的快速索引方法主要有Hash索引和B+树索引两种:Hash索引不支持范围查找、存在哈希冲突,因此应用范围较窄。B+树索引支持范围查找,且不存在哈希冲突的问题,因此成为目前主流的一种方法。B+树索引的精神实质是:将所有键组织成一棵B+树,非叶子节点用于对键的索引,叶子节点保存键和值,在每一层非叶子节点进行一次二分查找(或称折半查找),即可快速地完成对键的索引。但是,针对叶子节点组织的两种现有技术存在严重弊端,无法同时满足读、写、删操作的高性能需求。其一是有序索引,其原理最为简单、最为人们熟知、应用范围最为广泛,已成为本领域的公知常识,如图1所示,其优点是读操作的性能高,缺点是写和删操作的性能低;其二是无序索引,例如CN201310456838.7,如图2所示,其优点是写和删除操作的性能高,缺点是读操作的性能低。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种多级无序索引方法与系统,通过多级无序的叶子节点,巧妙地实现了有序的索引,从而兼具“有序索引”和“无序索引”的优点,同时满足了读、写、删除操作对高性能的需求和效果。本专利技术提供的技术 ...
【技术保护点】
1.一种多级无序索引方法,在基于存储器件构建的键值系统中,将所有键组织成B+树,通过多级无序的叶子节点实现有序的索引;包括如下步骤:1)将所有键组织成一棵B+树;其中:非叶子节点用于对键的索引,每一层非叶子节点都是有序的;叶子节点用于存储所有键和值;叶子节点包括第一无序队列、第二无序队列和第三无序队列;第一无序队列包括位图元素和普通元素;在第二无序队列中每一个非空的键都会在第三无序队列中存储值;键和值成对关联出现;关联的键和值在第二无序队列和第三无序队列的元素序号相同;通过普通元素能够查找到键在第二无序队列的元素序号,以及值在第三无序队列中的元素序号;2)采用顺序法或改进的二分法对键进行快速索引,查找叶子节点中特定的键KeyP及其值,P为字母A~Z;将所述改进的二分法用于对特定键的索引操作;将所述顺序法用于对特定范围键的索引操作;由此实现键值系统的多级无序索引。
【技术特征摘要】
1.一种多级无序索引方法,在基于存储器件构建的键值系统中,将所有键组织成B+树,通过多级无序的叶子节点实现有序的索引;包括如下步骤:1)将所有键组织成一棵B+树;其中:非叶子节点用于对键的索引,每一层非叶子节点都是有序的;叶子节点用于存储所有键和值;叶子节点包括第一无序队列、第二无序队列和第三无序队列;第一无序队列包括位图元素和普通元素;在第二无序队列中每一个非空的键都会在第三无序队列中存储值;键和值成对关联出现;关联的键和值在第二无序队列和第三无序队列的元素序号相同;通过普通元素能够查找到键在第二无序队列的元素序号,以及值在第三无序队列中的元素序号;2)采用顺序法或改进的二分法对键进行快速索引,查找叶子节点中特定的键KeyP及其值,P为字母A~Z;将所述改进的二分法用于对特定键的索引操作;将所述顺序法用于对特定范围键的索引操作;由此实现键值系统的多级无序索引。2.如权利要求1所述多级无序索引方法,其特征是,步骤2)采用顺序法正序遍历叶子节点中所有键和值包括如下过程:2A1)首先读取第一无序队列的第一个元素,记为a;2A2)然后读取第二无序队列的第a个元素,记为KeyA,代表键KeyA;其次读取第三无序队列的第a个元素,记为ValueA,代表值ValueA;2A3)读取第一无序队列的第二个元素,其内容记为b,然后读取第二无序队列的第b个元素,其内容记为KeyB,代表键KeyB;其次读取第三无序队列的第b个元素,其内容记为ValueB,代表值ValueB;继续读取,直至读取第一无序队列的最后一个元素,其内容记为z;然后读取第二无序队列的第z个元素,其内容记为KeyZ,代表键KeyZ。其次读取第三无序队列的第z个元素,其内容记为ValueZ,代表值ValueZ;由此实现键值系统的多级无序索引。3.如权利要求1所述多级无序索引方法,其特征是,步骤2)采用改进的二分查找法查找叶子节点中特定的键KeyP及其值,包括如下步骤:2B1)假设第一无序队列共有k个元素,首先读取第一无序队列的第k/2个元素,记为c;2B2)然后读取第二无序队列的第c个元素,其内容记为KeyC;2B3)对比KeyP和KeyC;如果相等则找到;如果KeyP大于KeyC,那么继续查找k*3/4,如果KeyP小于KeyC,那么继续查找k/4;当找到或确认不存在时终止查找;2B4)假设最终找到第二无序队列的第d个键为KeyP,则第三无序队列的第d个元素的内容即为所查找的ValueP;由此实现键值系统的多级无序索引。4.如权利要求1所述多级无序索引方法,其特征是,步骤2)所述特定键的索引操作包括写操作SET、单键读操作GET和/或删操作DELETE;所述特定范围键的索引操作包括范围读操作SCAN。5.如权利要求4所述多级无序索引方法,其特征是,利用所述多级无序索引方法实现写操作SET,具体执行如下步骤:步骤1:为值ValueN分配全局唯一的键KeyN,KeyN为数字;步骤2:由B+树的根节点起,逐层检索子节点,直至确定该键应存储的叶子节点,标记为叶子节点NodeK;在非叶子节点均按照有序的形式进行组织;步骤3:在叶子节点NodeK中,执行如下操作:步骤3.1:读取第一无序队列中的位图元素,得出节点存储的键的个数count,并且找到第x个元素为0;步骤3.2:将位图中第x个元素由0修改为1,将键KeyN写入第二无序队列的第x元素,将值ValueN写入第三无序队列的第x元素;步骤3.3:将x写入第一无序队列中第y个元素,原第y个元素及其之后元素的元素依次后移;元素y为对第二无序队列中的所有元素的排序后,键KeyN的顺序;通过上述步骤,利用所述多级无序索引方法实现写操作SET。6.如权利要求4所述多级无序索引方法,其特征是,值ValueN对应全局...
【专利技术属性】
技术研发人员:王平,杨洪章,屠要峰,
申请(专利权)人:北京大学,中兴通讯股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。