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

文档序号:9375905阅读:508来源:国知局
面向结构化数据的分布式内存数据库索引方法
【技术领域】
[0001] 本发明涉及计算机软件领域,尤其涉及一种面向结构化数据的分布式内存数据库 索引方法。
【背景技术】
[0002] 随着计算机硬件水平的发展,内存的价格变得可以被大家接受,由于内存相比硬 盘存储速度更快,可以更好的进行查询和访问,因此,越来越多的人们开始研究在内存中实 现数据存储。同时,在信息化社会,大规模数据存储已经变得十分的普遍,为了在分布式环 境下利用内存设计数据库,满足OLAP的需要,我们研究和设计了分布式内存数据库系统。 对于数据库而言,数据库索引技术是其中最为重要的一部分,如何高效地存储索引以及利 用索引快速查询数据是设计数据库的关键所在。另外,由于是内存数据库,内存资源相对宝 贵,而索引占用了较多的内存。
[0003] 综上所述,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上 述技术至少存在如下技术问题:
[0004] 在现有技术中,现有的分布式内存数据库系统索引存在存储索引效率较低,占用 内存较多的技术问题。

【发明内容】

[0005] 本发明提供了一种面向结构化数据的分布式内存数据库索引方法,解决了现有的 分布式内存数据库系统索引存在存储索引效率较低,占用内存较多的技术问题,实现了能 够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的 技术效果。
[0006] 在当前的技术领域,并没有如何构建符合分布式内存数据库特征的索引技术的公 开化资料,本专利的核心目的就是提出一种可行的,经过系统验证的分布式内存数据库的 索引构建和存储技术。
[0007] 其中,名词解释:
[0008] MDE :Memory Data Engine,内存数据库引擎
[0009] DS :Data Server,数据导入模块,负责将原生数据源数据导入内存数据库存储引 擎中;
[0010] CS :Column Store,MDE中存储数据的服务节点;
[0011] IS : Index Server,MDE的Master节点,负责存储元数据,子表索引,负载均衡等;
[0012] 字典:CS中用于数据检索的必要数据结构;
[0013] 数据分布索引:数据库中的表的每列有一个数据分布索引,索引该列某范围数据 在CS上的分布;
[0014] 切片:数据分布索引会把原始列数据切成η段,每一段成为一个切片;
[0015] RAS :Resource Allocation System,资源分配与管理子系统;
[0016] 行压缩表:对原表进行数据压缩生成的行表;
[0017] 单列压缩表:对单列数据进行排序压缩后生成的单列表;
[0018] 行分布索引:IS中保存的行压缩表在CS集群中分布的索引;
[0019] 行压缩表子表:对行压缩表进行按行切分后生成的子表。
[0020] 为解决上述技术问题,本申请实施例提供了一种面向结构化数据的分布式内存数 据库索引方法,所述方法包括:
[0021] 接收数据库操作请求;
[0022] 根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,其中,所述索 引包括:
[0023] 分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分 布索引;所述数据分布索引存储在具有master角色的控制节点中,负责数据和行表的跨机 定位;
[0024] 所述底层单机索引为细粒度的数据级索引;所述单机索引由两套相对独立的索引 集合构成,包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向 量、行号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射。
[0025] 进一步的,所述数据库索引在执行一个典型的关系型查询时关键步骤如下:
[0026] 对于查询 SELECT name FROM teacher WHERE age>30 ;
[0027] 步骤I :首先从控制节点中获取数据分布索引,得到待查询表某一列(上述语句中 的teacher表age列)所在节点的定位信息;
[0028] 步骤2 :连接该节点并根据查询中的过滤条件(age>30)获取该列满足条件的记录 项的行号;
[0029] 步骤3 :从控制节点获取待查询表的行表(teacher表)所在的节点定位信息;
[0030] 步骤4 :连接行表所在的节点并根据步骤2获取的行号集合获取待查询其它列 (上述例子中的投影列name列)待获取记录项对应的字典下标索引;
[0031] 步骤5 :将步骤4得到的字典下标索引发送给控制节点,从控制节点获取该字典所 在列(name列)的节点信息,控制节点将字典索引发送给对应列所在节点;
[0032] 步骤6 :步骤5中的列节点(nanme列)收到控制节点发送来的字典索引信息后, 通过该索引信息取出满足查询语句中约束条件的记录,查询结束。
[0033] 进一步的,所述定位信息具体为:节点号或IP。
[0034] 进一步的,所述连接该节点并根据查询中的过滤条件获取该列满足条件的记录项 的行号,具体为:连接该节点并根据查询中的过滤条件,采用二分查找,在O(IogN)时间复 杂度下获取结果集合,获取该列满足条件的记录项的行号。
[0035] 进一步的,所述数据库采用列式存储的方式,压缩后的原始数据以列为单位进行 分布和存储,不同列之间的相关性由源数据库中的row key来决定,对处理过后的列数据进 行切分,并分布式存储;同时对切片数据建立数据分布索引,用来切片的定位;切分后的列 数据做局部的字典压缩处理。
[0036] 进一步的,原始数据采用字典压缩和按位压缩两种方式进行处理。
[0037] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0038] 由于采用了字典压缩以及位压缩技术手段,利用字典压缩对重复数据进行去重处 理,避免存储多余的冗余数据,在存储列压缩索引频数向量和行号索引向量中采用位压缩 手段,充分利用物理内存,显著提高内存存储的利用率,所以,有效解决了现有的分布式内 存数据库系统索引存在存储索引效率较低,利用索引查询数据速度较慢,占用内存较多的 技术问题,进而实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩 处理,降低了内存需求的技术效果。
【附图说明】
[0039] 图1是name列的数据分布索引与全局字典示意图;
[0040] 图2是底层数据索引结构示意图;
[0041] 图3是行分布索引建立流程示意图;
[0042] 图4是数据导入流程不意图;
[0043] 图5是原始数据排序流程示意图;
[0044] 图6是底层索引辅助向量生成流程示意图;
[0045] 图7是原始数据压缩、切片和行压缩表子表填充流程示意图;
[0046] 图8是索引数据切分和数据分布索引建立流程示意图;
[0047] 图9是数据分布索引发送给IS流程示意图;
[0048] 图10是CS启动示意图;
[0049] 图11是底层数据和底层数据索引发送给CS流程示意图;
[0050] 图12是CS中行压缩表子表不意图;
[0051] 图13是IS中的数据结构示意图;
[0052] 图14是列式压缩索引由三个向量以及行压缩表结构示意图。
【具体实施方式】
[0053] 本发明提供了一种面向结构化数据的分布式内存数据库索引方法,解决了现有的 分布式内存数据库系统索引存在存储索引效率较低,占用内存较多的技术问题,实现了能 够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的 技术效果。
[0054] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上 述技术方案进行详细的说明。
[0055] 实施例一:
[0056] 在实施例一中,提供了面向结构化数据的分布式内存数据库索引方法,包括:
[0057] 接收数据库操作请求;
[0058] 根据所述数据操作请求,在数据库中对待操作关键值进行索引操作。
[0059] 其中,索引包括:
[0060] 数据分布索引和字典:
[0061] 为了应对OLAP数据库对列大量的操作,本数据库采
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1