面向结构化数据的分布式内存数据库索引方法_2

文档序号:9375905阅读:来源:国知局
用列式存储的方式,压缩后的 原始数据以列为单位进行分布和存储。不同列之间的相关性由源数据库中的row key来决 定,对处理过后的列数据进行切分,分布式存储,同时对切片数据建立数据分布索引,用来 切片的定位。切分后的列数据做局部的字典压缩,节约内存存储空间。
[0062] 按图1所示,name列的数据分布索引由一个map组成,key为一对pair,value为 对应切片的ip所在。其中key内含对应切片中的数据的上限和下限,而具体的上限和下限 又由两个内层pair组成,分别为具体的值和字典entry。
[0063] 数据压缩:
[0064] 由于内存资源宝贵,所以原始数据采用字典压缩和按位压缩两种方式。字典压缩 是将原本出现频数大于一的内容只存储一份,这种压缩对于出现频率很高的内容非常有 效。按位压缩,根据数据的最大值精确到位的个数,重新组织该列的数据类型,完成二次压 缩。
[0065] 分布式联合索引:
[0066] 单列存储引擎中的数据组织为以下三个向量。
[0067] :uL :排序字典。
[0068] Ii:索引偏移量向量,确定字典中每一项起始和截止位置。
[0069] P]:主键存储向量,存储列中具体值的主键位置,是列值的倒排索引,请参考图2。
[0070] 其中P偷女小龙法加下所示,
[0071]
[0072]
[0073] 这样做有三个好处:
[0074] 因为列值是排序存储的,用三种向量就可以消除重复数据,减少单列存储的代价; 在做范围查询的时候,不需要搜索全列,只需要按序找到上下界;有增量数据合并,导致索 引重建时,只有〇(η)的时间复杂度。
[0075] 索引构建流程:
[0076] 如图3,从源数据库(Oracle等)中读取整表数据(或仅是一些元数据信息),得 到数据规模以及字段数,建立行分布索引。
[0077] 根据row key的数据分布索引将建行压缩表子表的命令发给对应数据节点做操 作。数据节点在自己的节点中建立行压缩表的空表,待之后生成列压缩表后再作填写。
[0078] 如图4,通过字段数,启动相应个数的单列DS,在源数据库中按列切分,读出其中 一列的全部数据。
[0079] 如图5,单列DS中进行全列排序,row key根据排序列的顺序调整,形成倒排索引。 排序过后,可以形成该列的全局字典。原始列需保留。
[0080] 如图6,单列DS建立全列数据的组合索引,得到以下三个向量。
[0081] 如图7,形成字典后,单列DS进行以下的工作:
[0082] 对以row key排序的原始列开始做字典替换,形成处理后的数据。
[0083] 向IS请求row key的数据分布索引,并依据索引来切分处理后的数据。
[0084] 将切片后的数据成组发往对应CS,让该CS填行压缩表,之后丢弃原始列。单列DS 先对字典进行均分,再依据字典对处理后的向量切片,同时将Index Offset向量和Row Key 向量都切成对应份数,成为局部向量。切片后可以确定每个切片的ceiling和floor,也就 可以形成该列的数据分布索引了。
[0085] 如图9,单列DS将生成的数据分布索引发送给IS。
[0086] 如图10,按照之前切片的原则,启动或选择对应的CS。
[0087] 如图11,DS将生成的切片数据以及对应的局部三向量,分别发送给CS。
[0088] 所有DS做完后,CS中的彳丁压缩表子表填与完成,请参考图12。
[0089] 结束流程,结束后数据和索引情况如图13和图14。
[0090] 按照上述步骤,便可很好地实现本发明。
[0091] 上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
[0092] 由于采用了字典压缩以及位压缩技术手段,利用字典压缩对重复数据进行去重处 理,避免存储多余的冗余数据,在存储列压缩索引频数向量和行号索引向量中采用位压缩 手段,充分利用物理内存,显著提高内存存储的利用率,所以,有效解决了现有的分布式内 存数据库系统索引存在存储索引效率较低,利用索引查询数据速度较慢,占用内存较多的 技术问题,进而实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩 处理,降低了内存需求的技术效果。
[0093] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造 性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优 选实施例以及落入本发明范围的所有变更和修改。
[0094] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1. 面向结构化数据的分布式内存数据库索引方法,其特征在于,所述方法包括: 接收数据库操作请求; 根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,其中,所述索引 包括:分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分布索 弓丨;所述数据分布索引存储在具有master角色的控制节点中,负责数据和行表的跨机定 位; 所述底层单机索引为细粒度的数据级索引;所述单机索引由两套相对独立的索引集合 构成,包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向量、行 号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射。2. 根据权利要求1所述的面向结构化数据的分布式内存数据库索引方法,其特征在 于,所述数据库索引在执行一个典型的关系型查询时关键步骤如下: 步骤1 :首先从控制节点中获取数据分布索引,得到待查询表某一列所在节点的定位 信息; 步骤2 :连接该节点并根据查询中的过滤条件获取该列满足条件的记录项的行号; 步骤3 :从控制节点获取待查询表的行表所在的节点定位信息; 步骤4 :连接行表所在的节点并根据步骤2获取的行号集合获取待查询其它列待获取 记录项对应的字典下标索引; 步骤5 :将步骤4得到的字典下标索引发送给控制节点,从控制节点获取该字典所在列 的节点信息,控制节点将字典索引发送给对应列所在节点; 步骤6 :步骤5中的列节点收到控制节点发送来的字典索引信息后,通过该索引信息取 出满足查询语句中约束条件的记录,查询结束。3. 根据权利要求2所述的面向结构化数据的分布式内存数据库索引方法,其特征在 于,所述定位信息具体为:节点号或IP。4. 根据权利要求2所述的面向结构化数据的分布式内存数据库索引方法,其特征在 于,所述连接该节点并根据查询中的过滤条件获取该列满足条件的记录项的行号,具体为: 连接该节点并根据查询中的过滤条件,采用二分查找,在IogN时间复杂度下获取结果集 合,获取该列满足条件的记录项的行号。5. 根据权利要求1所述的面向结构化数据的分布式内存数据库索引方法,其特征在 于,所述数据库采用列式存储的方式,压缩后的原始数据以列为单位进行分布和存储,不同 列之间的相关性由源数据库中的row key来决定,对处理过后的列数据进行切分,并分布式 存储;同时对切片数据建立数据分布索引,用来切片的定位;切分后的列数据做局部的字 典压缩处理。6. 根据权利要求1所述的面向结构化数据的分布式内存数据库索引方法,其特征在 于,原始数据采用字典压缩和按位压缩两种方式进行处理。
【专利摘要】本发明公开了面向结构化数据的分布式内存数据库索引方法,述方法包括:接收数据库操作请求;根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,所述索引包括:分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分布索引;所述数据分布索引负责数据和行表的跨机定位;所述底层单机索引为细粒度的数据级索引;所述单机索引包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向量、行号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射,实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
【IPC分类】G06F17/30
【公开号】CN105095520
【申请号】CN201510611902
【发明人】段翰聪, 闵革勇, 王瑾, 郑松, 陈超, 谭春强, 孙振兴
【申请人】电子科技大学
【公开日】2015年11月25日
【申请日】2015年9月23日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1