CN105095520B - 面向结构化数据的分布式内存数据库索引方法 - Google Patents
面向结构化数据的分布式内存数据库索引方法 Download PDFInfo
- Publication number
- CN105095520B CN105095520B CN201510611902.3A CN201510611902A CN105095520B CN 105095520 B CN105095520 B CN 105095520B CN 201510611902 A CN201510611902 A CN 201510611902A CN 105095520 B CN105095520 B CN 105095520B
- Authority
- CN
- China
- Prior art keywords
- index
- data
- row
- dictionary
- node
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了面向结构化数据的分布式内存数据库索引方法,述方法包括:接收数据库操作请求;根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,所述索引包括:分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分布索引;所述数据分布索引负责数据和行表的跨机定位;所述底层单机索引为细粒度的数据级索引;所述单机索引包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向量、行号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射,实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
Description
技术领域
本发明涉及计算机软件领域,尤其涉及一种面向结构化数据的分布式内存数据库索引方法。
背景技术
随着计算机硬件水平的发展,内存的价格变得可以被大家接受,由于内存相比硬盘存储速度更快,可以更好的进行查询和访问,因此,越来越多的人们开始研究在内存中实现数据存储。同时,在信息化社会,大规模数据存储已经变得十分的普遍,为了在分布式环境下利用内存设计数据库,满足OLAP的需要,我们研究和设计了分布式内存数据库系统。对于数据库而言,数据库索引技术是其中最为重要的一部分,如何高效地存储索引以及利用索引快速查询数据是设计数据库的关键所在。另外,由于是内存数据库,内存资源相对宝贵,而索引占用了较多的内存。
综上所述,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,现有的分布式内存数据库系统索引存在存储索引效率较低,占用内存较多的技术问题。
发明内容
本发明提供了一种面向结构化数据的分布式内存数据库索引方法,解决了现有的分布式内存数据库系统索引存在存储索引效率较低,占用内存较多的技术问题,实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
在当前的技术领域,并没有如何构建符合分布式内存数据库特征的索引技术的公开化资料,本专利的核心目的就是提出一种可行的,经过系统验证的分布式内存数据库的索引构建和存储技术。
其中,名词解释:
MDE:Memory Data Engine,内存数据库引擎
DS:Data Server,数据导入模块,负责将原生数据源数据导入内存数据库存储引擎中;
CS:Column Store,MDE中存储数据的服务节点;
IS:Index Server,MDE的Master节点,负责存储元数据,子表索引,负载均衡等;
字典:CS中用于数据检索的必要数据结构;
数据分布索引:数据库中的表的每列有一个数据分布索引,索引该列某范围数据在CS上的分布;
切片:数据分布索引会把原始列数据切成n段,每一段成为一个切片;
RAS:Resource Allocation System,资源分配与管理子系统;
行压缩表:对原表进行数据压缩生成的行表;
单列压缩表:对单列数据进行排序压缩后生成的单列表;
行分布索引:IS中保存的行压缩表在CS集群中分布的索引;
行压缩表子表:对行压缩表进行按行切分后生成的子表。
为解决上述技术问题,本申请实施例提供了一种面向结构化数据的分布式内存数据库索引方法,所述方法包括:
接收数据库操作请求;
根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,其中,所述索引包括:
分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分布索引;所述数据分布索引存储在具有master角色的控制节点中,负责数据和行表的跨机定位;
所述底层单机索引为细粒度的数据级索引;所述单机索引由两套相对独立的索引集合构成,包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向量、行号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射。
进一步的,所述数据库索引在执行一个典型的关系型查询时关键步骤如下:
对于查询SELECT name FROM teacher WHERE age>30;
步骤1:首先从控制节点中获取数据分布索引,得到待查询表某一列(上述语句中的teacher表age列)所在节点的定位信息;
步骤2:连接该节点并根据查询中的过滤条件(age>30)获取该列满足条件的记录项的行号;
步骤3:从控制节点获取待查询表的行表(teacher表)所在的节点定位信息;
步骤4:连接行表所在的节点并根据步骤2获取的行号集合获取待查询其它列(上述例子中的投影列name列)待获取记录项对应的字典下标索引;
步骤5:将步骤4得到的字典下标索引发送给控制节点,从控制节点获取该字典所在列(name列)的节点信息,控制节点将字典索引发送给对应列所在节点;
步骤6:步骤5中的列节点(nanme列)收到控制节点发送来的字典索引信息后,通过该索引信息取出满足查询语句中约束条件的记录,查询结束。
进一步的,所述定位信息具体为:节点号或IP。
进一步的,所述连接该节点并根据查询中的过滤条件获取该列满足条件的记录项的行号,具体为:连接该节点并根据查询中的过滤条件,采用二分查找,在O(logN)时间复杂度下获取结果集合,获取该列满足条件的记录项的行号。
进一步的,所述数据库采用列式存储的方式,压缩后的原始数据以列为单位进行分布和存储,不同列之间的相关性由源数据库中的row key来决定,对处理过后的列数据进行切分,并分布式存储;同时对切片数据建立数据分布索引,用来切片的定位;切分后的列数据做局部的字典压缩处理。
进一步的,原始数据采用字典压缩和按位压缩两种方式进行处理。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于采用了字典压缩以及位压缩技术手段,利用字典压缩对重复数据进行去重处理,避免存储多余的冗余数据,在存储列压缩索引频数向量和行号索引向量中采用位压缩手段,充分利用物理内存,显著提高内存存储的利用率,所以,有效解决了现有的分布式内存数据库系统索引存在存储索引效率较低,利用索引查询数据速度较慢,占用内存较多的技术问题,进而实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
附图说明
图1是name列的数据分布索引与全局字典示意图;
图2是底层数据索引结构示意图;
图3是行分布索引建立流程示意图;
图4是数据导入流程示意图;
图5是原始数据排序流程示意图;
图6是底层索引辅助向量生成流程示意图;
图7是原始数据压缩、切片和行压缩表子表填充流程示意图;
图8是索引数据切分和数据分布索引建立流程示意图;
图9是数据分布索引发送给IS流程示意图;
图10是CS启动示意图;
图11是底层数据和底层数据索引发送给CS流程示意图;
图12是CS中行压缩表子表示意图;
图13是IS中的数据结构示意图;
图14是列式压缩索引由三个向量以及行压缩表结构示意图。
具体实施方式
本发明提供了一种面向结构化数据的分布式内存数据库索引方法,解决了现有的分布式内存数据库系统索引存在存储索引效率较低,占用内存较多的技术问题,实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一:
在实施例一中,提供了面向结构化数据的分布式内存数据库索引方法,包括:
接收数据库操作请求;
根据所述数据操作请求,在数据库中对待操作关键值进行索引操作。
其中,索引包括:
数据分布索引和字典:
为了应对OLAP数据库对列大量的操作,本数据库采用列式存储的方式,压缩后的原始数据以列为单位进行分布和存储。不同列之间的相关性由源数据库中的row key来决定,对处理过后的列数据进行切分,分布式存储,同时对切片数据建立数据分布索引,用来切片的定位。切分后的列数据做局部的字典压缩,节约内存存储空间。
按图1所示,name列的数据分布索引由一个map组成,key为一对pair,value为对应切片的ip所在。其中key内含对应切片中的数据的上限和下限,而具体的上限和下限又由两个内层pair组成,分别为具体的值和字典entry。
数据压缩:
由于内存资源宝贵,所以原始数据采用字典压缩和按位压缩两种方式。字典压缩是将原本出现频数大于一的内容只存储一份,这种压缩对于出现频率很高的内容非常有效。按位压缩,根据数据的最大值精确到位的个数,重新组织该列的数据类型,完成二次压缩。
分布式联合索引:
单列存储引擎中的数据组织为以下三个向量。
排序字典。
Ij:索引偏移量向量,确定字典中每一项起始和截止位置。
Pj:主键存储向量,存储列中具体值的主键位置,是列值的倒排索引,请参考图2。
其中Ij和Pj的大小求法如下所示:
这样做有三个好处:
因为列值是排序存储的,用三种向量就可以消除重复数据,减少单列存储的代价;在做范围查询的时候,不需要搜索全列,只需要按序找到上下界;有增量数据合并,导致索引重建时,只有O(n)的时间复杂度。
索引构建流程:
如图3,从源数据库(Oracle等)中读取整表数据(或仅是一些元数据信息),得到数据规模以及字段数,建立行分布索引。
根据row key的数据分布索引将建行压缩表子表的命令发给对应数据节点做操作。数据节点在自己的节点中建立行压缩表的空表,待之后生成列压缩表后再作填写。
如图4,通过字段数,启动相应个数的单列DS,在源数据库中按列切分,读出其中一列的全部数据。
如图5,单列DS中进行全列排序,row key根据排序列的顺序调整,形成倒排索引。排序过后,可以形成该列的全局字典。原始列需保留。
如图6,单列DS建立全列数据的组合索引,得到以下三个向量。
如图7,形成字典后,单列DS进行以下的工作:
对以row key排序的原始列开始做字典替换,形成处理后的数据。
向IS请求row key的数据分布索引,并依据索引来切分处理后的数据。
将切片后的数据成组发往对应CS,让该CS填行压缩表,之后丢弃原始列。单列DS先对字典进行均分,再依据字典对处理后的向量切片,同时将Index Offset向量和Row Key向量都切成对应份数,成为局部向量。切片后可以确定每个切片的ceiling和floor,也就可以形成该列的数据分布索引了。
如图9,单列DS将生成的数据分布索引发送给IS。
如图10,按照之前切片的原则,启动或选择对应的CS。
如图11,DS将生成的切片数据以及对应的局部三向量,分别发送给CS。
所有DS做完后,CS中的行压缩表子表填写完成,请参考图12。
结束流程,结束后数据和索引情况如图13和图14。
按照上述步骤,便可很好地实现本发明。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
由于采用了字典压缩以及位压缩技术手段,利用字典压缩对重复数据进行去重处理,避免存储多余的冗余数据,在存储列压缩索引频数向量和行号索引向量中采用位压缩手段,充分利用物理内存,显著提高内存存储的利用率,所以,有效解决了现有的分布式内存数据库系统索引存在存储索引效率较低,利用索引查询数据速度较慢,占用内存较多的技术问题,进而实现了能够高效的存储索引,能够利用索引快速查询数据,对索引进行压缩处理,降低了内存需求的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1.面向结构化数据的分布式内存数据库索引方法,其特征在于,所述方法包括:
接收数据库操作请求;
根据所述数据操作请求,在数据库中对待操作关键值进行索引操作,其中,所述索引包括:分布式索引和底层单机索引;其中,所述分布式索引包括:数据分布索引和行分布索引,行分布索引为IS中保存的行压缩表在CS集群中分布的索引,CS为MDE中存储数据的服务节点;IS为MDE的Master节点;MDE为内存数据库引擎;所述数据分布索引存储在具有master角色的控制节点中,负责数据和行表的跨机定位;
所述底层单机索引为细粒度的数据级索引;所述底层单机索引由两套相对独立的索引集合构成,包括:列式压缩索引和行表;所述列式压缩索引由三个向量组成:字典、频数向量、行号索引,所述行表负责维护各个记录项的行号到其所在字典下标的映射;
原始数据采用字典压缩和按位压缩两种方式进行处理,利用字典压缩对重复数据进行去重处理,在存储列压缩索引频数向量和行号索引向量中采用位压缩手段。
2.根据权利要求1所述的面向结构化数据的分布式内存数据库索引方法,其特征在于,所述数据库索引在执行一个关系型查询时关键步骤如下:
步骤1:首先从控制节点中获取数据分布索引,得到待查询表某一列所在节点的定位信息;
步骤2:连接该节点并根据查询中的过滤条件获取该列满足条件的记录项的行号;
步骤3:从控制节点获取待查询表的行表所在的节点定位信息;
步骤4:连接行表所在的节点并根据步骤2获取的行号集合获取待查询其它列待获取记录项对应的字典下标索引;
步骤5:将步骤4得到的字典下标索引发送给控制节点,从控制节点获取该字典所在列的节点信息,控制节点将字典下标索引发送给对应列所在节点;
步骤6:步骤5中的列节点收到控制节点发送来的字典索引信息后,通过该索引信息取出满足查询语句中约束条件的记录,查询结束。
3.根据权利要求2所述的面向结构化数据的分布式内存数据库索引方法,其特征在于,所述定位信息具体为:节点号或IP。
4.根据权利要求2所述的面向结构化数据的分布式内存数据库索引方法,其特征在于,所述连接该节点并根据查询中的过滤条件获取该列满足条件的记录项的行号,具体为:连接该节点并根据查询中的过滤条件,采用二分查找,在logN时间复杂度下获取结果集合,获取该列满足条件的记录项的行号。
5.根据权利要求1所述的面向结构化数据的分布式内存数据库索引方法,其特征在于,所述数据库采用列式存储的方式,压缩后的原始数据以列为单位进行分布和存储,不同列之间的相关性由源数据库中的row key来决定,对处理过后的列数据进行切分,并分布式存储;同时对切片数据建立数据分布索引,用来切片的定位;切分后的列数据做局部的字典压缩处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510611902.3A CN105095520B (zh) | 2015-09-23 | 2015-09-23 | 面向结构化数据的分布式内存数据库索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510611902.3A CN105095520B (zh) | 2015-09-23 | 2015-09-23 | 面向结构化数据的分布式内存数据库索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095520A CN105095520A (zh) | 2015-11-25 |
CN105095520B true CN105095520B (zh) | 2018-07-27 |
Family
ID=54575955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510611902.3A Active CN105095520B (zh) | 2015-09-23 | 2015-09-23 | 面向结构化数据的分布式内存数据库索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095520B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105843933B (zh) * | 2016-03-30 | 2019-01-29 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
CN107506618B (zh) * | 2017-07-07 | 2020-12-08 | 北京中科晶云科技有限公司 | 高通量测序序列的存储方法和查询方法 |
CN107590199B (zh) * | 2017-08-18 | 2019-12-24 | 西安理工大学 | 一种面向内存的多线程数据库设计方法 |
CN107590270A (zh) * | 2017-09-26 | 2018-01-16 | 南京哈卢信息科技有限公司 | 一种快速数据分析而生文本格式的方法 |
CN108011952B (zh) * | 2017-12-01 | 2021-06-18 | 北京奇艺世纪科技有限公司 | 一种获取压缩字典的方法和装置 |
CN107994907B (zh) * | 2017-12-01 | 2021-05-28 | 北京奇艺世纪科技有限公司 | 一种生成压缩字典的方法及装置 |
CN110471888A (zh) * | 2018-05-09 | 2019-11-19 | 株式会社日立制作所 | 一种自动收集数据的方法、装置、介质、设备及系统 |
CN109063219A (zh) * | 2018-10-30 | 2018-12-21 | 深圳市海能通信股份有限公司 | 一种大数据结构化查询系统 |
CN111444222A (zh) * | 2019-01-16 | 2020-07-24 | 苏宁易购集团股份有限公司 | 基于Ignite缓存架构的数据查询方法及系统 |
CN111367920A (zh) * | 2020-05-28 | 2020-07-03 | 成都四方伟业软件股份有限公司 | 一种基于二维表的存储方法、索引构建方法及存储装置 |
CN111782648B (zh) * | 2020-06-23 | 2023-08-18 | 中国平安人寿保险股份有限公司 | 结构化数据处理方法、装置、计算机设备及存储介质 |
CN112000666B (zh) * | 2020-08-04 | 2024-02-20 | 广州未名中智教育科技有限公司 | 一种面向列的数据库管理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN104715039A (zh) * | 2015-03-23 | 2015-06-17 | 星环信息科技(上海)有限公司 | 基于硬盘和内存的列式存储和查询方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024288B2 (en) * | 2008-08-27 | 2011-09-20 | Oracle International Corporation | Block compression using a value-bit format for storing block-cell values |
-
2015
- 2015-09-23 CN CN201510611902.3A patent/CN105095520B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366015A (zh) * | 2013-07-31 | 2013-10-23 | 东南大学 | 一种基于Hadoop的OLAP数据存储与查询方法 |
CN104715039A (zh) * | 2015-03-23 | 2015-06-17 | 星环信息科技(上海)有限公司 | 基于硬盘和内存的列式存储和查询方法及设备 |
Non-Patent Citations (2)
Title |
---|
Compactness – A Useful Feature for Generating Search Index;Pushpalatha.K.P等;《Technology Enhanced Education (ICTEE), 2012 IEEE International Conference on》;20120105;全文 * |
基于HBase的矢量空间数据分布式存储研究;范建永 等;《地理与地理信息科学》;20120930;第28卷(第5期);第39-42页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105095520A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095520B (zh) | 面向结构化数据的分布式内存数据库索引方法 | |
Zhang et al. | An efficient multi-dimensional index for cloud data management | |
CN104123300B (zh) | 数据分布式存储系统及方法 | |
Liao et al. | Multi-dimensional index on hadoop distributed file system | |
JP6338817B2 (ja) | データベースミドルウェアを用いたデータ管理システム及びその方法 | |
US8799264B2 (en) | Method for improving search engine efficiency | |
Goil et al. | A parallel scalable infrastructure for OLAP and data mining | |
CN104751359B (zh) | 用于支付清算的系统及方法 | |
CN106095951B (zh) | 基于负载均衡和查询日志的数据空间多维索引方法 | |
CN107180113B (zh) | 一种大数据检索平台 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN100458784C (zh) | 在数字图书馆中所采用的检索系统和检索方法 | |
CN102402617A (zh) | 一种利用分片及稀疏位图的易压缩数据库索引存储系统及其相应的构建、调度和查询处理方法 | |
US20120254173A1 (en) | Grouping data | |
You et al. | Spatial join query processing in cloud: Analyzing design choices and performance comparisons | |
CN101751475B (zh) | 号段记录压缩方法及其装置 | |
Whitman et al. | Spatio-temporal join on apache spark | |
US20180060341A1 (en) | Querying Data Records Stored On A Distributed File System | |
CN114281989A (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
Sheng et al. | Dynamic top-k range reporting in external memory | |
CN103761298B (zh) | 一种基于分布式架构的实体匹配方法 | |
CN102831146A (zh) | 数据库子串过滤索引系统及其构建、查询方法 | |
Yang et al. | Research on distributed Hilbert R tree spatial index based on BIRCH clustering | |
Doulkeridis et al. | Parallel and distributed processing of spatial preference queries using keywords |
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 |