CN106909623A - 一种支持高效海量数据分析和检索的数据装置及数据存储方法 - Google Patents
一种支持高效海量数据分析和检索的数据装置及数据存储方法 Download PDFInfo
- Publication number
- CN106909623A CN106909623A CN201710043645.7A CN201710043645A CN106909623A CN 106909623 A CN106909623 A CN 106909623A CN 201710043645 A CN201710043645 A CN 201710043645A CN 106909623 A CN106909623 A CN 106909623A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- record
- row
- horizontal
- 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.)
- Granted
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/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持高效海量数据分析和检索的数据装置及数据存储方法。本装置包括若干文件夹,在每一文件夹中包含多个索引分段;每一索引分段包括一全文索引组件、一数据定位模块和一数据存储模块;全文索引组件用于存储索引分段中的记录的倒排索引信息;数据存储模块,包含多个横向分块,每个横向分块包含多个列分片,每个列分片包含多个用于存储数据记录的数据页;数据定位模块,提供针对数据存储模块的嵌套索引结构,每个横向分块索引存储了横向分块记录起始Id、横向分块位置、各列分片的位置以及列分片索引集合;每个列分片索引记录了列分片中数据页起始位置和数据页索引集合;每个数据页索引记录了数据页所在文件位置和页记录起始Id。
Description
技术领域
本发明属于数据存储组织领域,涉及一种针对海量数据高效响应分析和检索应用场景的数据装置及数据存储方法。
背景技术
现有的海量数据处理技术在给大数据应用提供了有力支撑的同时也面临着技术困难。一方面,尽管数据分析***在数据顺序读取方面性能出众,但是在处理带有过滤条件的查询场景时明显存在着处理性能不够的情况,而这种情况在过滤条件是全文检索条件时尤为突出;另一方面,融合数据检索和数据分析业务的应用场景在实际应用中比重越来越大,现有解决方案大多运行两套分别面向检索和分析***来响应这种混合应用场景,然而由于各***采用了不同的数据存储策略,这样的解决方案不但耗费了大量的存储和计算资源,而且还需要复杂的机制来保证两套***数据的一致性。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种面向海量数据的数据存储装置及数据存储方法,本发明主要包括三个方面:(1)结合全文索引与列式存储的数据装置。(2)针对该数据装置的合并优化技术。(3)针对该数据装置的随机访问优化技术。
该发明包括以下内容:
1)数据装置的组织框架。
2)依托该数据装置的数据加载流程。
3)数据合并优化技术。
4)依托该数据装置的数据读取流程。
5)针对读取流程的随机访问优化技术。
本发明的技术方案为:
一种支持高效海量数据分析和检索的数据装置,其特征在于,包括若干文件夹,在每一文件夹中包含多个索引分段;每一索引分段包括一全文索引组件、一数据定位模块和一数据存储模块;其中,
全文索引组件,用于存储索引分段中的记录的倒排索引信息;
数据存储模块,包含多个横向分块,每个横向分块包含多个列分片,每个列分片包含多个用于存储数据记录的数据页;
数据定位模块,提供针对数据存储模块的嵌套索引结构,其包括记录的列数、列描述符集合、数据存储模块的压缩模式以及横向分块索引集合;每个横向分块索引存储了横向分块记录起始Id、横向分块位置、各列分片的位置以及列分片索引集合;每个列分片索引记录了列分片中数据页起始位置和数据页索引集合;每个数据页索引记录了数据页所在文件位置和页记录起始Id。
进一步的,根据数据定位模块中各横向分块包含的起止Id号将有序Id片段划分到各横向分块索引中。
进一步的,根据全文索引组件中记录的起止Id号,将有序的记录Id集合映射到各索引分段中,每个索引分段包含一个有序Id片段。
进一步的,所述数据页存储的数据内容为采用字典编码的数据内容。
进一步的,所述数据页存储的数据内容为采用类型感知的数据编码算法编码的数据内容。
一种数据存储方法,其步骤为:
1)从待存储的记录集合中读取一未存储的记录,获取该记录的Id号及其字段集合,然后为指定字段建立倒排索引,并将构建的倒排索引信息写入全文索引组件;
2)将该字段集合中的每一字段写入数据存储模块对应的列分片中,如果当前写入的数据已满足一数据页,则将该记录的Id号和该记录所在数据存储模块的偏移记录到数据定位模块中;
3)重复步骤1)、2),如果当前已写入的记录满足一个横向分块的大小,则将该记录的Id号、横向分块位置、横向分块中各列分片位置记录到数据定位模块中,并更新列分片索引集合。
进一步的,步骤3)之后,获取数据量小于设定阈值的横向分块作为待合并的横向分块;如果待合并的横向分块个数为1,则直接将该横向分块追加到一新数据存储模块末端并更新数据定位模块;否则将每一待合并的横向分块对应的列数据追加到一新数据存储模块中,并更新数据定位模块。
进一步的,采用字典缓存机制对待存储的记录集合中的记录进行存储。
与现有技术相比,本发明的积极效果为:
该装置融合了列式存储格式和全文索引技术的特点,一方面保证了在数据分析场景中的高吞吐,另一方面保证了在数据检索场景中的实时性,从而能够提高带有过滤条件的数据分析任务的性能并高效响应融合应用场景的需求。该数据装置适用于针对海量数据的数据分析应用场景以及融合数据分析和数据检索的应用场景。
附图说明
图1为该数据装置的组织框架图。
具体实施方式
数据装置组织框架
该数据装置的组织框架如图1所示。数据装置以文件夹为单位,在每个文件夹中包含多个独立索引分段;每个分段包括全文索引组件,数据定位模块和数据存储模块。其中,全文索引组件包含了对应分段中所有记录的相关倒排索引信息,用于查询条件的快速查询,该组件以查询条件为输入,输出命中的记录ID集合。数据存储模块采用了行列混合存储的模式:每个数据存储模块包含多个横向分块,每个横向分块包含多个列分片,列分片是在横向分块内的存储特定一列数据的存储单元;每个列分片由多个数据页组成,每个数据页可以采用字典编码以及多种类型感知的数据编码算法编码数据内容,如果数据页中的数据采用了字典编码,则在该数据页所属的列分片的头部会放置字典页,采用字典编码的数据页在解码数据时会用到字典页。该数据存储模块格式继承了列式存储格式的高压缩率,高吞吐率的特点,其横向分块的组织模式避免了记录重组的开销,可以高效地应用于数据分析应用场景中。数据定位模块提供了针对数据存储模块的嵌套索引结构,该模块存储了数据列个数(即记录由多少个列组成),列描述符集合(即每一个列对应的名称,数据类型等信息),数据存储模块压缩模式以及横向分块索引集合;在横向分块级,每个横向分块索引存储了横向分块记录起始Id,横向分块位置,各列分片的字典页位置以及列分片索引集合,如果某一列分片的所有数据页都没有采用字典编码,则字典页位置为空;在列分片级,每个列分片索引记录了列分片中数据页起始位置和数据页索引集合;每个数据页索引记录了数据页所在文件位置和页记录起始Id。
该数据装置的组织形式可有效支撑数据检索和数据分析两种业务场景:在给定查询条件的情况下,可通过全文索引组件获取符合查询条件的文档Id集合,借助数据定位模块采用随机访问的方式定位到包含文档Id的数据页,通过扫描数据页内部数据记录并获取相应数据;在扫描文件的情况下,通过分段个数确定需要扫描的数据存储模块个数,并依次遍历各数据存储模块,然后返回所有记录。
数据加载流程
给定记录集合,该装置依次读取记录,构建倒排索引信息写入全文索引组件,然后写入数据存储模块并更新数据定位信息,该过程可描述为以下步骤:
1.如果还有未写入数据存储模块的记录,获取一条未处理的记录,执行步骤2;否则执行步骤6。
2.获取记录Id号以及记录包含的字段集合,并为指定的字段建立倒排索引。
3.如果还有未写入数据存储模块的字段,获取一个未处理的字段,执行步骤4;否则执行步骤5。
4.将该字段按照用户定义的字段对应关系写入数据存储模块对应的列分片中,如果当前写入的列数据大小已满足一数据页,则将该记录的Id和该记录所在数据存储模块的偏移记录在数据定位模块中,执行步骤3。
5.如果当前已写入的记录满足了一个横向分块的大小,则将该Id,横向分块位置,各列字典位置记录在数据定位模块中,并更新包含的各列分片索引集合,执行步骤1。
6.将元信息(即加载所有数据后得到的统计数据,如某一字段的最大值最小值,数据个数等信息以及每一个横向分块在数据存储模块中的位置)写入数据存储模块,将数据定位信息写入数据定位模块,结束。
合并优化技术
为保证加载的记录集合短时间内可以被检索到,在加载过程中该装置会产生多个数据量较小的分段集合,为保证索引性能,需要每隔一段时间将多个小分段合并成一个分段,作为输入和输出的数据定位模块与数据存储模块均为图1中的数据装置组织形式。为保证合并的性能,本装置合并的过程采用以数据页为单位的方式合并,并在合并过程中会将数据量较小的横向分块合并成数据量较大的横向分块,从而保证了合并过程的效率和合并后的查询性能。
以页为单位的合并过程可描述为以下步骤:
1.读取所有需要合并的横向分块包含的元数据信息(统计数据信息以及横向分块的位置信息等)。
2.如果还有需要合并的横向分块,获取需要合并的横向分块集合,获取的横向分块集合包含的数据量大小需接近默认的横向分块数据量,执行步骤3;否则,执行步骤5。
3.如果需要合并的横向分块个数为1,则直接将该横向分块追加到新数据存储模块末端并更新数据定位信息,执行步骤2;否则,执行步骤4。
4.对于每一个要生成的数据列,读取每个横向分块对应的列数据并追加到新生成的数据存储模块中,更新数据定位信息,执行步骤2。
5.将元数据信息与数据定位信息更新至模块中,结束。
数据读取流程
数据读取操作分为随机访问与顺序访问两种读取方式,其中随机访问方式是指根据查询条件,利用全文索引组件匹配出符合条件的记录Id集合并用该集合查询数据存储模块得到符合条件的结果数据;顺序访问是指采用扫描的方式依次将数据存储模块中的所有数据读出。其整体流程在组织框架一节中已作描述,当得到查询条件后,利用每个分段的全文索引组件可得到命中的有序Id集合,本节将针对随机访问过程中根据有序Id集合经由数据定位信息获取记录集合的流程做详细描述。该流程可分为六个步骤:
1.每个分段中的全文索引组件保存了该分段对应的数据存储模块中记录集合的起止Id号,利用该信息,可将有序的Id集合映射到各索引分段中,每个分段包含一个有序Id片段。
2.根据数据定位模块中各横向分块包含的起止Id号,将有序Id片段根据记录起始Id划分到各横向分块索引中。
3.横向分块索引映射出选择的列索引分片集合,并输出Id片段以及对应的列分片位置与字典位置。
4.列分片索引将Id片段映射到数据页索引中,然后将该列分片的位置经过计算送入数据页索引。
5.每个命中的数据页索引根据数据页位置与列分片位置计算出数据页位置,并与字典页位置,记录Id集合一同输出。
6.数据装置定位到数据存储模块的数据页,获取字典页,依次扫描数据页中记录,直到选中的记录全部收集完毕,结束。
随机访问优化技术
为进一步加快随机访问流程,本装置针对随机访问过程采取了两种优化措施:字典缓存机制与数据页级别数据获取优化。
字典缓存机制:字典编码作为数据存储模块的一种存储策略,在数据变化范围不大的情况下,可有效提高数据压缩率并提供快速的解码过程,从而大幅度提升扫描的性能。为了在数据装置中同时支持字典编码和快速随机读取,本装置会将解码的字典页保存在内存中,当随机访问的数据页为字典编码时可直接根据字典解码,省去加载和解码字典页的开销。该缓存机制在随机访问次数较多的情况下将有效提高访问效率。
数据页级别数据获取优化:随机访问方式可有效过滤不相关的数据页,从而达到加快数据访问的目的。本优化技术针对相关数据页获取记录的过程做了解码优化,从而进一步加快随机访问过程。由于列存的数值域在数据存储模块中采用定长存储的方式存储,因此在获取Id号后通过Id*字段长度的方式计算出数据的具体偏移位置,在定位到相关数据页并解压后,该数据装置采用定位的方式直接定位到数据内容的起始位置,经过计算后得到相应数值返回给用户,该优化过程与扫描相比省去了多余的计算和指针移动,从而加速了数据域的获取过程;列存的字符串在数据存储模块中采用前缀后缀编码的方式存储,该方式使得获取某一字符串内容时必须先获取该字符串对应的前一个字符串的内容,然而在随机访问过程中,该机制将产生不必要的解码和内存复制开销,为此,针对字符串编码的优化技术在获取了数据页内字符串的前缀和后缀长度后,首先定位到目标字符串(需要获取的字符串)的后缀内容起始位置,获取该字符串的后缀内容,然后通过迭代的方式依次回溯目标字符串之前的相关字符串,并将相关内容直接复制到目标字符串中。除此之外,该优化技术还将保留当前数据页Id号最大的字符串内容,以备后续记录获取过程使用。该优化技术能有效减少不必要的开销,达到加快随机访问目标字符串的目的。
Claims (8)
1.一种支持高效海量数据分析和检索的数据装置,其特征在于,包括若干文件夹,在每一文件夹中包含多个索引分段;每一索引分段包括一全文索引组件、一数据定位模块和一数据存储模块;其中,
全文索引组件,用于存储索引分段中的记录的倒排索引信息;
数据存储模块,包含多个横向分块,每个横向分块包含多个列分片,每个列分片包含多个用于存储数据记录的数据页;
数据定位模块,提供针对数据存储模块的嵌套索引结构,其包括记录的列数、列描述符集合、数据存储模块的压缩模式以及横向分块索引集合;每个横向分块索引存储了横向分块记录起始Id、横向分块位置、各列分片的位置以及列分片索引集合;每个列分片索引记录了列分片中数据页起始位置和数据页索引集合;每个数据页索引记录了数据页所在文件位置和页记录起始Id。
2.如权利要求1所述的数据装置,其特征在于,根据数据定位模块中各横向分块包含的起止Id号将有序Id片段划分到各横向分块索引中。
3.如权利要求1或2所述的数据装置,其特征在于,根据全文索引组件中记录的起止Id号,将有序的记录Id集合映射到各索引分段中,每个索引分段包含一个有序Id片段。
4.如权利要求3所述的数据装置,其特征在于,所述数据页存储的数据内容为采用字典编码的数据内容。
5.如权利要求3所述的数据装置,其特征在于,所述数据页存储的数据内容为采用类型感知的数据编码算法编码的数据内容。
6.一种基于权利要求1所述数据装置的数据存储方法,其步骤为:
1)从待存储的记录集合中读取一未存储的记录,获取该记录的Id号及其字段集合,然后为指定字段建立倒排索引,并将构建的倒排索引信息写入全文索引组件;
2)将该字段集合中的每一字段写入数据存储模块对应的列分片中,如果当前写入的数据已满足一数据页,则将该记录的Id号和该记录所在数据存储模块的偏移记录到数据定位模块中;
3)重复步骤1)、2),如果当前已写入的记录满足一个横向分块的大小,则将该记录的Id号、横向分块位置、横向分块中各列分片位置记录到数据定位模块中,并更新列分片索引集合。
7.如权利要求6所述的方法,其特征在于,步骤3)之后,获取数据量小于设定阈值的横向分块作为待合并的横向分块;如果待合并的横向分块个数为1,则直接将该横向分块追加到一新数据存储模块末端并更新数据定位模块;否则将每一待合并的横向分块对应的列数据追加到一新数据存储模块中,并更新数据定位模块。
8.如权利要求6所述的方法,其特征在于,采用字典缓存机制对待存储的记录集合中的记录进行存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710043645.7A CN106909623B (zh) | 2017-01-19 | 2017-01-19 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710043645.7A CN106909623B (zh) | 2017-01-19 | 2017-01-19 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106909623A true CN106909623A (zh) | 2017-06-30 |
CN106909623B CN106909623B (zh) | 2019-11-26 |
Family
ID=59206911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710043645.7A Active CN106909623B (zh) | 2017-01-19 | 2017-01-19 | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909623B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609081A (zh) * | 2017-08-29 | 2018-01-19 | 河南职业技术学院 | 一种财务资料审计管理*** |
CN110413624A (zh) * | 2019-08-07 | 2019-11-05 | 南京录信软件技术有限公司 | 一种基于列存的多列联合存储的方法 |
CN111767289A (zh) * | 2020-09-02 | 2020-10-13 | 成都四方伟业软件股份有限公司 | 一种基于内存数据库的数据存储方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639848A (zh) * | 2009-06-01 | 2010-02-03 | 北京四维图新科技股份有限公司 | 一种空间数据引擎及应用其管理空间数据的方法 |
CN103853772A (zh) * | 2012-12-04 | 2014-06-11 | 北京拓尔思信息技术股份有限公司 | 一种高效的倒排索引结构及组织方法 |
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及*** |
US20160012092A1 (en) * | 2014-07-14 | 2016-01-14 | International Business Machines Corporation | Inverted table for storing and querying conceptual indices |
CN105550236A (zh) * | 2015-11-27 | 2016-05-04 | 广州华多网络科技有限公司 | 一种分布式数据去重处理方法及装置 |
US20160147786A1 (en) * | 2014-11-25 | 2016-05-26 | Mihnea Andrei | Efficient Database Undo / Redo Logging |
-
2017
- 2017-01-19 CN CN201710043645.7A patent/CN106909623B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639848A (zh) * | 2009-06-01 | 2010-02-03 | 北京四维图新科技股份有限公司 | 一种空间数据引擎及应用其管理空间数据的方法 |
CN103853772A (zh) * | 2012-12-04 | 2014-06-11 | 北京拓尔思信息技术股份有限公司 | 一种高效的倒排索引结构及组织方法 |
US20160012092A1 (en) * | 2014-07-14 | 2016-01-14 | International Business Machines Corporation | Inverted table for storing and querying conceptual indices |
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及*** |
US20160147786A1 (en) * | 2014-11-25 | 2016-05-26 | Mihnea Andrei | Efficient Database Undo / Redo Logging |
CN105550236A (zh) * | 2015-11-27 | 2016-05-04 | 广州华多网络科技有限公司 | 一种分布式数据去重处理方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609081A (zh) * | 2017-08-29 | 2018-01-19 | 河南职业技术学院 | 一种财务资料审计管理*** |
CN110413624A (zh) * | 2019-08-07 | 2019-11-05 | 南京录信软件技术有限公司 | 一种基于列存的多列联合存储的方法 |
CN111767289A (zh) * | 2020-09-02 | 2020-10-13 | 成都四方伟业软件股份有限公司 | 一种基于内存数据库的数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106909623B (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103366015B (zh) | 一种基于Hadoop的OLAP数据存储与查询方法 | |
CN103870492B (zh) | 一种基于键排序的数据存储方法和装置 | |
CN103488709B (zh) | 一种索引建立方法及***、检索方法及*** | |
CN104077405B (zh) | 时序类型数据存取方法 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN104484471B (zh) | 一种高性能数据存储引擎的实现方法 | |
CN107045531A (zh) | 一种优化hdfs小文件存取的***及方法 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN102402617A (zh) | 一种利用分片及稀疏位图的易压缩数据库索引存储***及其相应的构建、调度和查询处理方法 | |
CN103744913A (zh) | 一种基于搜索引擎技术的数据库检索方法 | |
Gupta et al. | Faster as well as early measurements from big data predictive analytics model | |
CN106909623A (zh) | 一种支持高效海量数据分析和检索的数据装置及数据存储方法 | |
CN102880615A (zh) | 一种数据存储方法和装置 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
CN104408128A (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN101963993A (zh) | 一种数据库单表记录快速查找的方法 | |
CN110515897B (zh) | Lsm存储***读性能的优化方法及*** | |
CN104111899A (zh) | 一种缓存数据的存储方法及***及读取方法 | |
CN104750815A (zh) | 一种基于HBase的Lob数据的存储方法及装置 | |
CN108647243B (zh) | 基于时间序列的工业大数据存储方法 | |
CN114185934B (zh) | 一种基于天盾数据库列存储的索引及查询方法及*** | |
CN113157692B (zh) | 一种关系型内存数据库*** | |
CN112231436A (zh) | 一种采用列存储的payload存储方法 | |
CN117725095B (zh) | 面向数据集的数据存储和查询方法、装置、设备及介质 | |
US10037148B2 (en) | Facilitating reverse reading of sequentially stored, variable-length data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |