CN102479189A - 一种内存中海量时间戳型数据高速均匀访问的索引方法 - Google Patents
一种内存中海量时间戳型数据高速均匀访问的索引方法 Download PDFInfo
- Publication number
- CN102479189A CN102479189A CN2010105554941A CN201010555494A CN102479189A CN 102479189 A CN102479189 A CN 102479189A CN 2010105554941 A CN2010105554941 A CN 2010105554941A CN 201010555494 A CN201010555494 A CN 201010555494A CN 102479189 A CN102479189 A CN 102479189A
- Authority
- CN
- China
- Prior art keywords
- tree
- data
- root node
- indexing means
- trees
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存中海量时间戳型数据高速均匀访问的索引方法,该方法采用哈希表管理多棵T树的索引结构,每棵T树用于存储固定长度时间段内的时间戳型数据,哈希表用于存储T树根节点的位置。该索引方法将海量数据均匀分散存储在多棵T树中,查询数据时,通过哈希算法定位到一棵T树,在该棵T树中进行查询,从而减少了内存访问的次数,提高了数据访问的效率,且使访问时间更均衡。
Description
技术领域
本发明涉及数据存储和管理领域,尤其涉及一种用于实现内存中海量时间戳型数据高速和均匀访问的索引方法。
背景技术
随着操作系统从32位向64位的过渡,其支持的主存大小已经冲破32位时4G的限制,最新的windows7的64位操作系统支持的主存大小已经达到了192G,比现在许多计算机设备的外存还要大,而主存的访问速度比磁盘的访问速度高几个数量级,因此,为了实现数据的实时响应,通常会将海量数据存放在主存中,并建立索引,通过高效的索引机制实现数据的高速和均匀访问。内存中海量数据的索引结构需要考虑两个问题:一是,由于内存资源宝贵,数据索引结构占用的内存空间要尽可能小;二是,索引结构要能实现数据的高速访问,同时保证访问时间均匀。
现有的哈希加1棵T树的索引结构hybrid-HT,实际上是一套数据,两套对应的索引,哈希索引用于点查询,T树索引用于段查询,由于是一套数据两套索引,因此,占用的内存空间相当大;另外,由于只有1棵T树,在数据量大的情况下,T树的层数将很高,查询时间不受控。针对这种索引结构的缺陷,名称为“组态实时数据库索引机制的研究与实现”(作者:张河,中南大学2008年硕士学位论文)的论文提出了一种改进的H-T*算法,该H-T*算法中有多棵T树,每棵T树存储哈希值相同的数据,所有数据存在T树中,哈希只用来存放T树根节点的位置,因此,相对于hybrid-HT算法,H-T*算法占用的内存空间大大减少,但是,该文提出的哈希算法,不能对每棵T树的规模进行限制,这导致最坏的情况下,多棵T树退化为1棵T树,从而导致查询时间长且不均匀。
在另一名称为“海量数据内存数据库中快速定位的网格+T树索引的方法”的中国第200610038378.6号发明专利说明书(公告日2008年9月10日)中,披露了另外一种索引方法,该方法为了实现多关键字的查询,在T树上层建立网格,相当于一个坐标系,坐标系中每个点是一棵T树。该方法的缺点是,在数据趋势不能很好预测的情况下,网格的划分很难合理,这会导致各个网格T树层数不均,差异很大,如此,查询时访问内存的次数就会很多,而且访问时间不均匀。
发明内容
本发明要解决的技术问题是提供一种内存中海量时间戳型数据高速均匀访问的索引方法,它可以减少内存空间的占用,提高数据访问的效率,并能保证访问时间的均衡。
为解决上述技术问题,本发明的内存中海量时间戳型数据高速均匀访问的索引方法,采用了哈希表管理多棵T树的索引结构,T树用于存储时间戳型数据,哈希表用于存储T树根节点的位置。
所述每棵T树中存储的数据是一个固定时间长度的时间段内的数据。
所述哈希表存放在一个数组中,且在该哈希表中按照T树时间戳的顺序存储每棵T树根节点的位置。
所述索引结构在进行数据的插入时,包括以下步骤:
1)计算数据要插入的T树的根节点在数组中的下标;
2)从该棵T树的根节点开始,在该棵T树中查找数据要插入的节点;
3)将数据插入该棵T树。
所述索引结构在进行数据查询时,包括以下步骤:
1)计算要查询数据所在T树的根节点在数组中的下标;
2)从该棵T树的根节点开始,在该棵T树中查询该数据。
所述T树根节点下标的计算公式为:下标=(数据时间戳-所有T树的最小时间戳)/每棵T树存储数据的时间段长度。
本发明通过哈希加多棵T树的索引结构,将海量数据均匀分散存储在多棵T树中,查询数据时,通过哈希定位到一棵T树,在该T树中进行查询,从而控制了每棵T树的层数,减少了内存空间的占用和数据查询时,访问内存的次数,相较于现有的索引方法,本发明的数据访问效率更高,访问时间也更均衡。
附图说明
图1是本发明实施例的索引结构示意图;
图2是图1中的T树节点的数据结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更清楚明白,以下结合附图和实施例,对本发明做进一步的详细说明:
内存中的数据通常是时间戳型的数据,即每个数据带有一个时间戳,作为数据在内存中存储的Key(关键字)。本发明实施例针对时间戳型数据的特点,设计了哈希加多棵T树的索引结构,每棵T树中存储固定时间长度的时间段(Range)内的数据,在T树上层有一哈希数组(Array),数组中按照T树时间戳(QueryTime)由小到大的顺序,存储每棵T树根节点(Root)的位置,T树节点的数据结构可参阅图2所示,每个节点中存储数据的Key和指针。
当需要在上述索引结构中插入数据时,首先判断内存空间是否够用,如果不够,则释放时间最早的一棵T树,将数组中的所有内容前移一个下标,然后根据需要插入的数据的时间戳(QueryTime),通过以下哈希算法获取数据要插入的T树的根节点在数组中对应的下标i:i=(QueryTime-MinTime)/Range,其中,MinTime为所有T树的最小时间戳,再根据计算得到的下标i,获取该棵T树根节点的位置,并从此根节点开始,在该棵T树中查找数据要插入的节点,将数据插入T树中。如果内存空间够用,则直接按照上述方法计算数据要插入的T树的位置,将数据插入T树。
当需要查询数据时,则根据所需要查询的数据的时间戳,通过前述哈希算法获取对应的T树在数组中的下标,根据计算获得的下标,获取该棵T数根节点的位置,然后从该根节点开始,在该棵T树中查询数据。由于一棵T树的层数很少,规模有限,因此,数据查询时访问内存的次数大大减少,查询效率大大提高,而且查询时间也比较均衡。
以下通过一个具体的实施例,对上述索引方法做进一步的说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
如图1所示,本实施例设置了5棵T树,每棵T树存储2000秒时间段的数据,即每2000秒对应一棵T树,所有T树的最小时间戳为1000秒,因此,5棵T树分别存储1000~3000、3000~5000、5000~7000、7000~9000、9000~11000秒时间段的数据。每个2000秒时间段有4000条数据,则每棵T树存储4000条纪录,定义T树的每个节点存储一条数据,则根据计算公式:数据个数=2n-1,T树的层数n为12。
当要查询时间戳为3753的数据时,根据上述哈希算法,计算出该数据所在T树的根节点的下标i:i=(3753-1000)/2000=1,从而得到该棵T树的位置是在3000~5000秒时间段,然后在此T树中查询时间戳为3753的记录。
在数据量更大的情况下,例如,200万条数据,则本发明可以用500棵T树,每棵T树12层,来存储这些数据,在查询数据时,内存的访问次数仍为12次,即访问次数不会随着数据量的增大而增加。而倘若采用现有索引方法中1棵T树的索引结构,则T树的层数需要21层,查询数据时,需要访问内存21次,且随着数据量的增大,访问内存的次数也会相应增加。由此可见,对于大量时间戳型数据的存储和管理(例如,内存实时数据库),本发明的索引方法明显更具有优势。
Claims (7)
1.一种内存中海量时间戳型数据高速均匀访问的索引方法,其特征在于:采用哈希表管理多棵T树的索引结构,T树用于存储时间戳型数据,哈希表用于存储T树根节点的位置。
2.如权利要求1所述的索引方法,其特征在于:所述T树存储的数据是一个固定时间长度的时间段内的数据。
3.如权利要求2所述的索引方法,其特征在于:所述哈希表存放在一个数组中,且该哈希表按照T树时间戳的顺序存储每棵T树根节点的位置。
4.如权利要求3所述的索引方法,其特征在于,所述索引结构在进行数据的插入时,包括以下步骤:
1)计算数据要插入的T树的根节点在数组中的下标;
2)从该棵T树的根节点开始,在该棵T树中查找数据要插入的节点;
3)将数据插入该棵T树。
5.如权利要求4所述的索引方法,其特征在于,所述步骤1)之前还包括步骤:判断内存空间是否够用,如果不够,则释放数组中的第一棵T树,并将后续T树往前移,然后再进行步骤1);如果够用,则直接转到步骤1)。
6.如权利要求3所述的索引方法,其特征在于,所述索引结构在进行数据查询时,包括以下步骤:
1)计算要查询数据所在T树的根节点在数组中的下标;
2)从该棵T树的根节点开始,在该棵T树中查询该数据。
7.如权利要求4或6所述的索引方法,其特征在于,所述T树根节点下标的计算公式为:下标=(数据时间戳-所有T树的最小时间戳)/每棵T树存储数据的时间段长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010555494.1A CN102479189B (zh) | 2010-11-23 | 2010-11-23 | 一种内存中海量时间戳型数据高速均匀访问的索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010555494.1A CN102479189B (zh) | 2010-11-23 | 2010-11-23 | 一种内存中海量时间戳型数据高速均匀访问的索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102479189A true CN102479189A (zh) | 2012-05-30 |
CN102479189B CN102479189B (zh) | 2016-08-03 |
Family
ID=46091839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010555494.1A Active CN102479189B (zh) | 2010-11-23 | 2010-11-23 | 一种内存中海量时间戳型数据高速均匀访问的索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102479189B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737123A (zh) * | 2012-06-13 | 2012-10-17 | 北京五八信息技术有限公司 | 一种多维数据分布方法 |
CN103902693A (zh) * | 2014-03-28 | 2014-07-02 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN104424222A (zh) * | 2013-08-23 | 2015-03-18 | 华为技术有限公司 | 数据库索引方法及装置 |
CN104615599A (zh) * | 2013-11-05 | 2015-05-13 | 中国空间技术研究院 | 海量数据管理方法和设备 |
WO2015096582A1 (zh) * | 2013-12-27 | 2015-07-02 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN107590157A (zh) * | 2016-07-08 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、数据查询方法及相关设备 |
CN109101608A (zh) * | 2018-08-03 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种数据存储方法、数据查询方法及装置 |
CN109669938A (zh) * | 2018-10-31 | 2019-04-23 | 中国电力科学研究院有限公司 | 一种多维数据网荷存储方法与系统 |
CN110069525A (zh) * | 2018-08-20 | 2019-07-30 | 赛凡信息科技(厦门)有限公司 | 一种加速搜索数据库信息的方案 |
CN112073392A (zh) * | 2020-08-26 | 2020-12-11 | 吉林大学 | 基于LoRaWAN的高效无线地震数据传输协议设计方法 |
CN113254451A (zh) * | 2021-06-01 | 2021-08-13 | 北京城市网邻信息技术有限公司 | 一种数据索引构建方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838124A (zh) * | 2006-02-20 | 2006-09-27 | 南京联创科技股份有限公司 | 海量数据内存数据库中快速定位的网格+t树索引的方法 |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101587484A (zh) * | 2009-06-19 | 2009-11-25 | 南京航空航天大学 | 一种基于T-lt树的主存数据库的索引方法 |
-
2010
- 2010-11-23 CN CN201010555494.1A patent/CN102479189B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838124A (zh) * | 2006-02-20 | 2006-09-27 | 南京联创科技股份有限公司 | 海量数据内存数据库中快速定位的网格+t树索引的方法 |
CN101055589A (zh) * | 2007-05-30 | 2007-10-17 | 北京航空航天大学 | 嵌入式数据库的存储管理方法 |
CN101587484A (zh) * | 2009-06-19 | 2009-11-25 | 南京航空航天大学 | 一种基于T-lt树的主存数据库的索引方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737123A (zh) * | 2012-06-13 | 2012-10-17 | 北京五八信息技术有限公司 | 一种多维数据分布方法 |
CN102737123B (zh) * | 2012-06-13 | 2015-09-16 | 北京五八信息技术有限公司 | 一种多维数据分布方法 |
CN104424222B (zh) * | 2013-08-23 | 2019-09-13 | 华为技术有限公司 | 数据库索引方法及装置 |
CN104424222A (zh) * | 2013-08-23 | 2015-03-18 | 华为技术有限公司 | 数据库索引方法及装置 |
CN104615599A (zh) * | 2013-11-05 | 2015-05-13 | 中国空间技术研究院 | 海量数据管理方法和设备 |
WO2015096582A1 (zh) * | 2013-12-27 | 2015-07-02 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN103902693B (zh) * | 2014-03-28 | 2017-06-20 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN103902693A (zh) * | 2014-03-28 | 2014-07-02 | 西安交通大学 | 一种读优化的内存数据库t树索引结构的方法 |
CN107590157A (zh) * | 2016-07-08 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、数据查询方法及相关设备 |
CN109101608A (zh) * | 2018-08-03 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种数据存储方法、数据查询方法及装置 |
CN110069525A (zh) * | 2018-08-20 | 2019-07-30 | 赛凡信息科技(厦门)有限公司 | 一种加速搜索数据库信息的方案 |
CN109669938A (zh) * | 2018-10-31 | 2019-04-23 | 中国电力科学研究院有限公司 | 一种多维数据网荷存储方法与系统 |
CN112073392A (zh) * | 2020-08-26 | 2020-12-11 | 吉林大学 | 基于LoRaWAN的高效无线地震数据传输协议设计方法 |
CN112073392B (zh) * | 2020-08-26 | 2021-07-06 | 吉林大学 | 基于LoRaWAN的高效无线地震数据传输协议设计方法 |
CN113254451A (zh) * | 2021-06-01 | 2021-08-13 | 北京城市网邻信息技术有限公司 | 一种数据索引构建方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102479189B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102479189A (zh) | 一种内存中海量时间戳型数据高速均匀访问的索引方法 | |
CN104123359B (zh) | 一种分布式对象存储系统的资源管理方法 | |
CN102402602A (zh) | 一种实时数据库的b+树索引方法及装置 | |
CN103544261B (zh) | 一种海量结构化日志数据全局索引管理方法及装置 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
RU2010119961A (ru) | Расширяемая файловая система | |
CN103384256A (zh) | 一种云存储方法及装置 | |
CN102169507A (zh) | 一种分布式实时搜索引擎 | |
CN102930060A (zh) | 一种数据库快速索引的方法及装置 | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN103605778B (zh) | 一种视频文件的定位方法、装置及系统 | |
CN101551807A (zh) | 文件数据库多级索引技术 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN102890675B (zh) | 一种数据存储和查找的方法及装置 | |
CN103473229A (zh) | 一种内存检索系统和方法、以及实时检索系统和方法 | |
CN100458784C (zh) | 在数字图书馆中所采用的检索系统和检索方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN107357843B (zh) | 基于数据流结构的海量网络数据查找方法 | |
JP2006120056A5 (zh) | ||
CN103399945A (zh) | 一种基于云计算数据库系统的数据结构 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN105912675B (zh) | 一种针对小文件合并的批量删除/查询方法与装置 | |
CN103353901B (zh) | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN103198153A (zh) | 一种应用于分布式文件系统的元数据分簇管理方法和模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |