CN113312312B - 一种基于lsm高效查询流数据的分布式索引方法及系统 - Google Patents

一种基于lsm高效查询流数据的分布式索引方法及系统 Download PDF

Info

Publication number
CN113312312B
CN113312312B CN202110636679.3A CN202110636679A CN113312312B CN 113312312 B CN113312312 B CN 113312312B CN 202110636679 A CN202110636679 A CN 202110636679A CN 113312312 B CN113312312 B CN 113312312B
Authority
CN
China
Prior art keywords
node
data
tree
overflow
index
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
Application number
CN202110636679.3A
Other languages
English (en)
Other versions
CN113312312A (zh
Inventor
邹承明
冯丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Technology WUT
Original Assignee
Wuhan University of Technology WUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University of Technology WUT filed Critical Wuhan University of Technology WUT
Priority to CN202110636679.3A priority Critical patent/CN113312312B/zh
Publication of CN113312312A publication Critical patent/CN113312312A/zh
Application granted granted Critical
Publication of CN113312312B publication Critical patent/CN113312312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于LSM高效查询流数据的分布式索引方法及系统,首先对数据进行批量更新;然后对采样数据块进行排序并划分区间;接着对每个数据分区采用改进后的R树生成算法建立局部索引;最后各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引直接存储在主节点中。本发明建立局部索引的过程中采取对R树进行改进的方法,改为动态插入数据的方式,全局索引使用频繁且数据量较小,存储在主节点中,由此可以极大提升查询数据的效率。

Description

一种基于LSM高效查询流数据的分布式索引方法及系统
技术领域
本发明属于流数据技术领域;涉及一种分布式索引的方法及系统,具体涉及一种基于日志结构合并树(LSM)的分布式索引方法及系统。
技术背景
流数据不同于Hadoop平台处理的大型离线数据,流数据是连续且没有边界的实时数据,现有分布式索引的建立大致有两种方法,一种是采用Mapreduce并行计算框架,创建时为查询数据建立相应的map映射表,客户端则通过该map表进行查询。而像NoSql这样的分布式数据库,在进行分布式事务中要实现原子性需要彼此协调,在系统写入数据后,而索引并未及时更新的情况下,会出现数据和索引不一致导致的后果,所以这种方法只适用于某些离线应用中。另一种方法是预先设计好索引的结构,初始时同时创建数据和索引。由于这样会导致后续无法添加索引,故开始就会为所有非主键列创建索引从而导致空间浪费。
R树采用传统的插入函数会引起一系列节点的分裂和子节点的重新分布等,消耗的代价较大,而且每个节点不一定会被子节点填满导致树较高大,从而造成资源浪费,对局部索引的建立采用优化后的R树,更有利于后续对流数据的高效查询。
发明内容
本发明的目的在于提供一种基于LSM高效查询流数据的分布式索引方法及系统,以实现对流数据进行高效查询。
本发明的方法所采用的技术方案是:一种基于LSM高效查询流数据的分布式索引方法,包括以下步骤:
步骤1:对数据进行批量更新;
内存中数据为增量数据,磁盘中数据为基线数据,当内存中的数据量达到一定阈值后,增量数据会不断合并到磁盘,生成新的基线数据并划分区间;
步骤2:对步骤1中的基线数据进行充分随机采样,然后对该采样数据块进行排序;
步骤3:对每个数据分区采用改进后的R树生成算法建立局部索引;
插入数据的过程中,如果该节点为非饱和节点,则直接插入数据;如果该节点为饱和节点,则检查节点溢出表中是否包含该节点,如果包含且该节点的溢出节点为非饱和状态,则可以直接将数据插入到该节点的溢出节点中;如果该节点为饱和节点,且节点溢出表中包含该节点,但该节点的溢出节点为饱和状态,则对该节点及其溢出节点进行归并分裂操作,并写回到R树种,重新进行数据插入;如果该节点为饱和节点,但节点溢出表中不包含该节点,则在节点溢出表中为该节点创建一个溢出节点,并直接将数据插入到此溢出节点中;
步骤4:各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引直接存储在主节点中。
本发明的系统所采用的技术方案是:一种基于LSM高效查询流数据的分布式索引系统,包括以下模块:
模块一,用于对数据进行批量更新;
内存中数据为增量数据,磁盘中数据为基线数据,当内存中的数据量达到一定阈值后,增量数据会不断合并到磁盘,生成新的基线数据并划分区间;
模块二,用于对模块一中的基线数据进行充分随机采样,然后对该采样数据块进行排序;
模块三,用于对每个数据分区采用改进后的R树生成算法建立局部索引;
插入数据的过程中,如果该节点为非饱和节点,则直接插入数据;如果该节点为饱和节点,则检查节点溢出表中是否包含该节点,如果包含且该节点的溢出节点为非饱和状态,则可以直接将数据插入到该节点的溢出节点中;如果该节点为饱和节点,且节点溢出表中包含该节点,但该节点的溢出节点为饱和状态,则对该节点及其溢出节点进行归并分裂操作,并写回到R树种,重新进行数据插入;如果该节点为饱和节点,但节点溢出表中不包含该节点,则在节点溢出表中为该节点创建一个溢出节点,并直接将数据插入到此溢出节点中;
模块四,用于各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引直接存储在主节点中。
本发明使用LSM-Tree算法,将内存中的增量数据不断合并到磁盘中的基线数据中,并为基线数据建立局部索引,以此保持数据及索引的一致性。根据磁盘中树结构的阈值进行数据分区,分别对x坐标和y坐标进行数据排序,提高了数据插入的效率。建立局部索引的过程中采取对R树进行改进的方法,改为动态插入数据的方式,全局索引使用频繁且数据量较小,存储在主节点中,由此可以极大提升查询数据的效率。
附图说明
图1为本发明实施例的方法流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1,本发明提供的一种基于LSM高效查询流数据的分布式索引方法,包括以下步骤:
步骤1:对数据进行批量更新;
内存中数据为增量数据,磁盘中数据为基线数据,当内存中的数据量达到一定阈值后,增量数据会不断合并到磁盘,生成新的基线数据并划分区间;
本实施例中,基于LSM-Tree方法对数据进行批量更新,由一个存放在内存中的树结构和多个存放在磁盘中的树结构组成,将数据的存储分为两部分,一部分是内存中的增量数据,相当于LSM-Tree中的C0 Tree,另一部分是磁盘中的基线数据,相当于LSM-Tree中的C1 Tree和C2Tree和C3 Tree,其中C1 Tree和C2 Tree分别设定最大值和最小值这两个阈值,而C3 Tree存放数值异常的数据;数据的更新只发生在内存中,内存中的数据量达到临界值就会顺序写入磁盘中其中顺序写入的过程中,会根据数值做一步判断,该数据应该放在C1 Tree、C2 Tree还是C3 Tree中,从而进一步添加到对应的磁盘空间中,这样减少了不必要的I/O,提高了写性能,也提高了索引效率。
步骤2:对基线数据进行充分随机采样,这样更能体现数据的分布趋势,对步骤一中的基线数据进行充分随机采样,然后对该采样数据块进行排序;
本实施例中,首先分别对C1 Tree、C2 Tree和C3 Tree中的数据做一个由一维数据向二维数据的转化,多余的地方用无穷补齐,对这些二维数据首先进行横坐标轴X的排序,再对纵坐标轴Y进行排序,得到一个从左到右、从下到上递增的二维数组,对于后续进行数据节点插入的时候,对该二维数组进行顺时针旋转135度,此时可以看作一个多叉排序树,按照先左子树后右子树的顺序进行插入。
步骤3:通过上述步骤得到划分后的数据分区,为保证所有数据都在索引范围内,对每个数据分区采用改进后的R树生成算法建立局部索引;
本实施例中,插入数据的过程中,如果该节点为非饱和节点,则直接插入数据;如果该节点为饱和节点,则检查节点溢出表中是否包含该节点,如果包含且该节点的溢出节点为非饱和状态,则可以直接将数据插入到该节点的溢出节点中;如果该节点为饱和节点,且节点溢出表中包含该节点,但该节点的溢出节点为饱和状态,则对该节点及其溢出节点进行归并分裂操作,并写回到R树种,重新根据此改进后的R树生成算法进行数据插入;如果该节点为饱和节点,但节点溢出表中不包含该节点,则在节点溢出表中为该节点创建一个溢出节点,并直接将数据插入到此溢出节点中;
步骤4:各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引使用频率高且数据量较小,直接存储在主节点中,其中全局索引的建立采用常规的R树生成算法即可。
本发明利用LSM算法对流数据进行批量更新,主节点通过磁盘中多个树结构的阈值划分区间并排序,采用改进后的R树为每个区间建立局部索引,随后主节点根据各个局部索引创建一个全局索引并保存在主节点中,全局索引的建立采用常规的R树生成方式即可。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (4)

1.一种基于LSM高效查询流数据的分布式索引方法,其特征在于,包括以下步骤:
步骤1:对数据进行批量更新;
内存中数据为增量数据,磁盘中数据为基线数据,当内存中的数据量达到一定阈值后,增量数据会不断合并到磁盘,生成新的基线数据并划分区间;
步骤2:对步骤1中的基线数据进行充分随机采样,然后对该采样数据块进行排序;
步骤3:对每个数据分区采用改进后的R树生成算法建立局部索引;
插入数据的过程中,如果该节点为非饱和节点,则直接插入数据;如果该节点为饱和节点,则检查节点溢出表中是否包含该节点,如果包含且该节点的溢出节点为非饱和状态,则可以直接将数据插入到该节点的溢出节点中;如果该节点为饱和节点,且节点溢出表中包含该节点,但该节点的溢出节点为饱和状态,则对该节点及其溢出节点进行归并分裂操作,并写回到R树中,重新进行数据插入;如果该节点为饱和节点,但节点溢出表中不包含该节点,则在节点溢出表中为该节点创建一个溢出节点,并直接将数据插入到此溢出节点中;
步骤4:各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引直接存储在主节点中。
2.根据权利要求1所述的基于LSM高效查询流数据的分布式索引方法,其特征在于:步骤1中,基于LSM-Tree方法对数据进行批量更新,由一个存放在内存中的树结构和多个存放在磁盘中的树结构组成,将数据的存储分为两部分,一部分是内存中的增量数据,相当于LSM-Tree中的C0 Tree,另一部分是磁盘中的基线数据,相当于LSM-Tree中的C1 Tree、C2Tree和C3 Tree,其中C1 Tree和C2 Tree分别设定最大值和最小值这两个阈值,而C3Tree存放数值异常的数据;数据的更新只发生在内存中,内存中的数据量达到临界值就会顺序写入磁盘中,其中顺序写入的过程中,会根据数值做一步判断,该数据应该放在C1Tree、C2 Tree还是C3 Tree中,从而进一步添加到对应的磁盘空间中。
3.根据权利要求1或2所述的基于LSM高效查询流数据的分布式索引方法,其特征在于:步骤2中,首先分别对C1 Tree、C2 Tree和C3 Tree中的数据做一个由一维数据向二维数据的转化,多余的地方用无穷补齐,对这些二维数据首先进行横坐标轴X的排序,再对纵坐标轴Y进行排序,得到一个从左到右、从下到上递增的二维数组,对于后续进行数据节点插入的时候,对该二维数组进行顺时针旋转135度,此时可以看作一个多叉排序树,按照先左子树后右子树的顺序进行插入。
4.一种基于LSM高效查询流数据的分布式索引系统,其特征在于,包括以下模块:
模块一,用于对数据进行批量更新;
内存中数据为增量数据,磁盘中数据为基线数据,当内存中的数据量达到一定阈值后,增量数据会不断合并到磁盘,生成新的基线数据并划分区间;
模块二,用于对模块一中的基线数据进行充分随机采样,然后对该采样数据块进行排序;
模块三,用于对每个数据分区采用改进后的R树生成算法建立局部索引;
插入数据的过程中,如果该节点为非饱和节点,则直接插入数据;如果该节点为饱和节点,则检查节点溢出表中是否包含该节点,如果包含且该节点的溢出节点为非饱和状态,则可以直接将数据插入到该节点的溢出节点中;如果该节点为饱和节点,且节点溢出表中包含该节点,但该节点的溢出节点为饱和状态,则对该节点及其溢出节点进行归并分裂操作,并写回到R树中 ,重新进行数据插入;如果该节点为饱和节点,但节点溢出表中不包含该节点,则在节点溢出表中为该节点创建一个溢出节点,并直接将数据插入到此溢出节点中;
模块四,用于各个数据分区中的数据及其局部索引由主节点分配到各个子节点中进行存储,主节点根据各个局部索引的根节点建立全局索引,全局索引直接存储在主节点中。
CN202110636679.3A 2021-06-08 2021-06-08 一种基于lsm高效查询流数据的分布式索引方法及系统 Active CN113312312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110636679.3A CN113312312B (zh) 2021-06-08 2021-06-08 一种基于lsm高效查询流数据的分布式索引方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110636679.3A CN113312312B (zh) 2021-06-08 2021-06-08 一种基于lsm高效查询流数据的分布式索引方法及系统

Publications (2)

Publication Number Publication Date
CN113312312A CN113312312A (zh) 2021-08-27
CN113312312B true CN113312312B (zh) 2022-08-05

Family

ID=77377628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110636679.3A Active CN113312312B (zh) 2021-06-08 2021-06-08 一种基于lsm高效查询流数据的分布式索引方法及系统

Country Status (1)

Country Link
CN (1) CN113312312B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218161A (zh) * 2021-12-29 2022-03-22 北京百度网讯科技有限公司 索引存储方法、装置、检索引擎、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544258A (zh) * 2013-10-16 2014-01-29 国家计算机网络与信息安全管理中心 一种大数据多区间查询条件下的基数估计方法及装置
CN110109927A (zh) * 2019-04-25 2019-08-09 上海新炬网络技术有限公司 基于LSM树的Oracle数据库数据处理方法
CN112000846A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu分组lsm树索引的方法
CN112395288A (zh) * 2020-09-25 2021-02-23 浙江大学 基于希尔伯特曲线的r树索引合并更新方法、装置及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
US10706022B2 (en) * 2017-01-18 2020-07-07 International Business Machines Corporation Space-efficient secondary indexing on distributed data stores
US11249961B2 (en) * 2017-06-30 2022-02-15 Microsoft Technology Licensing, Llc Online schema change of range-partitioned index in a distributed storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544258A (zh) * 2013-10-16 2014-01-29 国家计算机网络与信息安全管理中心 一种大数据多区间查询条件下的基数估计方法及装置
CN110109927A (zh) * 2019-04-25 2019-08-09 上海新炬网络技术有限公司 基于LSM树的Oracle数据库数据处理方法
CN112000846A (zh) * 2020-08-19 2020-11-27 东北大学 基于gpu分组lsm树索引的方法
CN112395288A (zh) * 2020-09-25 2021-02-23 浙江大学 基于希尔伯特曲线的r树索引合并更新方法、装置及介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Comprehensive Comparison of LSM Architectures for Spatial Data;Qizhong Mao et al.;《Big Data》;20210319;全文 *
Energy Optimization and Fault Tolerance to Embedded System based on Adaptive Heterogeneous Multi-core Hardware Architecture;Xingliu et al.;《QRS-C》;20180813;全文 *
Storage management in asterixdb;S. Alsubaiee et al.;《PVLDB》;20141231;全文 *
基于Greenplum数据库的查询优化;邹承明;《计算机应用》;20180210;全文 *

Also Published As

Publication number Publication date
CN113312312A (zh) 2021-08-27

Similar Documents

Publication Publication Date Title
CN104123288B (zh) 一种数据查询方法及装置
US8359316B2 (en) Database table look-up
CN103246749B (zh) 面向分布式计算的矩阵数据库系统及其查询方法
CN108600321A (zh) 一种基于分布式内存云的图数据存储方法和系统
CN105095520B (zh) 面向结构化数据的分布式内存数据库索引方法
CN104133867A (zh) 分布式顺序表片内二级索引方法及系统
TW201530328A (zh) 爲半結構化資料構建NoSQL資料庫索引的方法及裝置
CN107220285A (zh) 面向海量轨迹点数据的时空索引构建方法
CN102663007A (zh) 一种支持敏捷开发和横向扩展的数据存储与查询方法
CN102609490A (zh) 一种面向列存储dwms的b+树索引方法
CN104504008B (zh) 一种基于嵌套的SQL到HBase的数据迁移算法
CN111767287A (zh) 数据导入方法、装置、设备及计算机存储介质
CN108717448B (zh) 一种面向键值对存储的范围查询过滤方法和键值对存储系统
CN108009265A (zh) 一种云计算环境下的空间数据索引方法
CN105718561A (zh) 一种特定分布式数据存储文件结构去冗余构造方法及系统
Song et al. Haery: a Hadoop based query system on accumulative and high-dimensional data model for big data
Huang et al. R-HBase: A multi-dimensional indexing framework for cloud computing environment
CN113312312B (zh) 一种基于lsm高效查询流数据的分布式索引方法及系统
CN104239470A (zh) 一种面向分布式环境的空间数据复合处理系统和方法
CN103064991A (zh) 一种海量数据聚类方法
CN108334532A (zh) 一种基于Spark的Eclat并行化方法、系统及装置
CN106776810B (zh) 一种大数据的数据处理系统及方法
CN108319604B (zh) 一种hive中大小表关联的优化方法
CN116662019B (zh) 请求的分配方法、装置、存储介质及电子装置
Xie et al. Silverback: Scalable association mining for temporal data in columnar probabilistic databases

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