CN103902693A - 一种读优化的内存数据库t树索引结构的方法 - Google Patents
一种读优化的内存数据库t树索引结构的方法 Download PDFInfo
- Publication number
- CN103902693A CN103902693A CN201410122539.4A CN201410122539A CN103902693A CN 103902693 A CN103902693 A CN 103902693A CN 201410122539 A CN201410122539 A CN 201410122539A CN 103902693 A CN103902693 A CN 103902693A
- Authority
- CN
- China
- Prior art keywords
- tree
- node
- data
- built
- query
- 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
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/2453—Query optimisation
-
- 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
- G06F16/2246—Trees, e.g. B+trees
Abstract
一种读优化的内存数据库T树索引结构的方法,构造t-T树的数据结构:根据已有的数据,建立T树索引结构,根据T树结构中节点的大小N,对数据进行插入操作,并且保证节点内的数据有序,如果一个节点内的数据满,还要进行分裂操作以保证树的平衡,在构造t-T树过程中,树结构中的内置T树左右子树字段在这一阶段不进行任何操作;在已经建立好的t-T树中进行数据查询操作,查询操作分为单值查询和范围查询,本发明充分利用了T树结构本身所提供的高效数据访问效率,从而在整体上提供了良好的读性能;同时,利用缓存位置敏感算法,通过减少指针的使用来提高缓存的命中率。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种读优化的内存数据库T树索引结构的方法。
背景技术
在数据库系统中,为了加快数据的访问速度,可以建立索引结构,索引结构是一个或多个列(例如,employee表的姓氏(lname)列)的值进行排序的结构。如果按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。常见的磁盘数据库索引有B树索引,B+树索引,T树索引,它们的使用可以显著的减少磁盘I/O数。随着内存价格的降低,内存数据库技术得到了广泛的应用。不同于磁盘数据库系统,内存数据库系统在数据访问时显著的减少或消除了磁盘I/O,提高了数据访问的速度,原来的数据库索引,如B树索引,由于其节点中存在着大量的指针结构,空间利用率不高,Cache命中率也不高,直接引用会降低内存数据库系统的效率。针对这些问题,需要通过修改数据库系统的数据索引来高效利用物理内存空间,提高内存数据库系统的数据访问速度。
Cache是计算机系统的层次存储结构中,介于中央处理器(CPU)和主存储器之间的高速小容量存储器。它具有速度快,容量小的特点。它充分利用了访存局部性原理,用来存储CPU最近访问的内存内容。CPU访问数据时,先在Cache中查找,如果找到则直接传输到CPU中的寄存器中,这称为命中;如果没有找到,那么需要在内存中查找,并且要把查找到的内容重新写入Cache,下次读取时就可以避免内存传输。在内存数据库的应用中,缓存的命中成为了数据库效率的瓶颈,同时在大数据量的访问模式下,存在着许多热点数据,可以将热点数据放入Cache来加快数据访问速度。
在小数据量的查找情况下,AVL树由于其编程简单,而且算法效率高而被广泛使用,但是,面对大数据量的访问,树的高度和Cache命中率成为限制其性能的因素,因而我们需要考虑使用其他数据结构来替代它。
发明内容
为了克服上述现有技术存在的缺点,本发明的目的在于提供一种读优化的内存数据库T树索引结构的方法,充分利用了T树结构本身所提供的高效数据访问效率,从而在整体上提供了良好的读性能;同时,利用缓存位置敏感算法,通过减少指针的使用来提高缓存的命中率。
为了达到上述目的,本发明所采用的技术方案是:
一种读优化的内存数据库T树索引结构的方法,包括以下步骤:
第一步,构造t-T树的数据结构:根据已有的数据,建立T树索引结构,根据T树结构中节点的大小N,对数据进行插入操作,找到第一个不大于当前值的数据的位置,执行插入,有时需要移动某些数据的位置;如果一个节点内的数据满,需新分配节点来存储数据,同时,如果当前节点的左右子树高度差大于等于2,需做树的旋转操作,以保持树的平衡,在构造t-T树过程中,树结构中的内置T树左右子树字段在这一阶段不进行任何操作;
第二步,在已经建立好的t-T树中进行数据查询操作,查询操作分为单值查询和范围查询,
在单值查询中,首先在内置T树中查询,如果内置T树为空,那么在外层T树中查询,把需要查找的值和节点内的最大值、最小值进行比较,若小于最小值,那么在这个节点的左子树中查找;若大于最大值,那么在这个节点的右子树中查找,同时把查找到的结果插入内置T树中;若内置T树不为空,那么在内置T树的节点内查询,在一个节点内,使用二分查找算法来加速查找过程,若在节点内找到,返回查找结果,若没有找到,返回外层T树,在外层T树中进行查找,将查找到的节点插入内置T树中,如果节点的插入导致了内置T树的AVL树平衡条件被破坏,那么需要进行旋转操作来使树结构保持AVL特性;
在范围查询中,进行等价转换,转换成单值查询,当找到第一个满足要求的节点后,再进行递归的调用来访问节点的子树,或者回溯访问节点的父节点,这样就可以遍历所有满足范围查询的节点。
在大数量访问中,被经常访问到的部分数据,通过在T树中内置T树,来提供一种缓冲的效果,减少了数据访问时间。
本发明的有益效果是:
由于本发明引入了一种在T树中嵌套的T树结构,在面对大数据量的有热点数据的访问中,提供了很好的数据缓冲,有效的应对了大数据量的单值查询和范围查询,算法时间复杂度从O(LogNM)降到了O(LogNm),其中m为热点数据总量,N为节点内的关键字个数,同时,面对最坏情况下的访问,时间复杂度回归到O(LogNM),其中M为树结构中关键字总数,算法中使用Cache位置敏感技术,使Cache命中率得到提升,从而减少了数据访问延迟。针对修改操作,可以利用现有的算法进行,不需要任何修改,提高了算法的可操作性。
附图说明:
附图是本发明的t-T树的结构图。
具体实施方式:
下面结合附图对本发明做详细面描述。
一种读优化的内存数据库T树索引结构,包括以下方法:
第一步,参照附图,构造t-T树的数据结构:根据已有的数据,类似于普通的T树索引建立过程,建立T树索引结构,根据T树结构中节点的大小N,对数据进行插入操作,找到第一个不大于当前值的数据的位置,执行插入,有时需要移动某些数据的位置;如果一个节点内的数据满,需新分配节点来存储数据,同时,如果当前节点的左右子树高度差大于等于2,需做树的旋转操作,以保持树的平衡,由于T树中只有左右两个指针域,所以平衡操作相比于B树结构要简单,在构造t-T树过程中,树结构中的内置T树的左右子树字段在这一阶段不进行任何操作;
第二步,在已经建立好的t-T树中进行数据查询操作,查询操作分为单值查询和范围查询,
在单值查询中,首先在内置T树中查询,如果内置T树为空,那么在外层T树中查询,把需要查找的值和节点内的最大值、最小值进行比较,若小于最小值,那么在这个节点的左子树中查找;若大于最大值,那么在这个节点的右子树中查找,同时把查找到的结果插入内置T树中;若内置T树不为空,那么在内置T树的节点内查询,在一个节点内,使用二分查找算法来加速查找过程,若在节点内找到,返回查找结果,若没有找到,返回外层T树,在外层T树中进行查找,将查找到的节点插入内置T树中,如果节点的插入导致了内置T树的AVL树平衡条件被破坏,那么需要进行旋转操作来使树结构保持AVL特性;
在范围查询中,进行等价转换,转换成单值查询,当找到第一个满足要求的节点后,再进行递归的调用来访问节点的子树,或者回溯访问节点的父节点,这样就可以遍历所有满足范围查询的节点。
在大数量访问中,被经常访问到的部分数据,通过在T树中内置T树,来提供一种缓冲的效果,减少了数据访问时间。
Claims (2)
1.一种读优化的内存数据库T树索引结构的方法,其特征在于,包括以下步骤:
第一步,构造t-T树的数据结构:根据已有的数据,建立T树索引结构,根据T树结构中节点的大小N,对数据进行插入操作,找到第一个不大于当前值的数据的位置,执行插入,有时需要移动某些数据的位置;如果一个节点内的数据满,需新分配节点来存储数据,同时,如果当前节点的左右子树高度差大于等于2,需做树的旋转操作,以保持树的平衡,在构造t-T树过程中,树结构中的内置T树左右子树字段在这一阶段不进行任何操作;
第二步,在已经建立好的t-T树中进行数据查询操作,查询操作分为单值查询和范围查询,
在单值查询中,首先在内置T树中查询,如果内置T树为空,那么在外层T树中查询,把需要查找的值和节点内的最大值、最小值进行比较,若小于最小值,那么在这个节点的左子树中查找;若大于最大值,那么在这个节点的右子树中查找,同时把查找到的结果插入内置T树中;若内置T树不为空,那么在内置T树的节点内查询,在一个节点内,使用二分查找算法来加速查找过程,若在节点内找到,返回查找结果,若没有找到,返回外层T树,在外层T树中进行查找,将查找到的节点插入内置T树中,如果节点的插入导致了内置T树的AVL树平衡条件被破坏,那么需要进行旋转操作来使树结构保持AVL特性;
在范围查询中,进行等价转换,转换成单值查询,当找到第一个满足要求的节点后,再进行递归的调用来访问节点的子树,或者回溯访问节点的父节点,这样就可以遍历所有满足范围查询的节点。
2.根据权利要求1所述的一种读优化的内存数据库T树索引结构的方法,其特征在于:在大数量访问中,被经常访问到的部分数据,通过在T树中内置T树,来提供一种缓冲的效果,减少了数据访问时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410122539.4A CN103902693B (zh) | 2014-03-28 | 2014-03-28 | 一种读优化的内存数据库t树索引结构的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410122539.4A CN103902693B (zh) | 2014-03-28 | 2014-03-28 | 一种读优化的内存数据库t树索引结构的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902693A true CN103902693A (zh) | 2014-07-02 |
CN103902693B CN103902693B (zh) | 2017-06-20 |
Family
ID=50994015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410122539.4A Expired - Fee Related CN103902693B (zh) | 2014-03-28 | 2014-03-28 | 一种读优化的内存数据库t树索引结构的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902693B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117417A (zh) * | 2015-07-30 | 2015-12-02 | 西安交通大学 | 一种读优化的内存数据库Trie树索引方法 |
CN107133182A (zh) * | 2016-02-29 | 2017-09-05 | 北大方正集团有限公司 | 一种内存管理方法及装置 |
CN108846133A (zh) * | 2018-07-04 | 2018-11-20 | 东北大学 | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 |
CN109254962A (zh) * | 2017-07-06 | 2019-01-22 | 中国移动通信集团浙江有限公司 | 一种基于t-树的索引优化方法及装置 |
Citations (4)
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树的主存数据库的索引方法 |
CN102479189A (zh) * | 2010-11-23 | 2012-05-30 | 上海宝信软件股份有限公司 | 一种内存中海量时间戳型数据高速均匀访问的索引方法 |
-
2014
- 2014-03-28 CN CN201410122539.4A patent/CN103902693B/zh not_active Expired - Fee Related
Patent Citations (4)
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树的主存数据库的索引方法 |
CN102479189A (zh) * | 2010-11-23 | 2012-05-30 | 上海宝信软件股份有限公司 | 一种内存中海量时间戳型数据高速均匀访问的索引方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117417A (zh) * | 2015-07-30 | 2015-12-02 | 西安交通大学 | 一种读优化的内存数据库Trie树索引方法 |
CN105117417B (zh) * | 2015-07-30 | 2018-04-17 | 西安交通大学 | 一种读优化的内存数据库Trie树索引方法 |
CN107133182A (zh) * | 2016-02-29 | 2017-09-05 | 北大方正集团有限公司 | 一种内存管理方法及装置 |
CN109254962A (zh) * | 2017-07-06 | 2019-01-22 | 中国移动通信集团浙江有限公司 | 一种基于t-树的索引优化方法及装置 |
CN108846133A (zh) * | 2018-07-04 | 2018-11-20 | 东北大学 | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 |
Also Published As
Publication number | Publication date |
---|---|
CN103902693B (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858303B2 (en) | In-memory latch-free index structure | |
US10725987B2 (en) | Forced ordering of a dictionary storing row identifier values | |
CN105354151B (zh) | 一种缓存管理方法与设备 | |
US8732139B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
US20140136510A1 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US11048753B2 (en) | Flexible record definitions for semi-structured data in a relational database system | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN102024019B (zh) | 一种分布式文件系统中基于后缀树的目录组织方法 | |
CN103902702A (zh) | 一种数据存储系统和存储方法 | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
WO2016066109A1 (zh) | 数据存储方法和存储设备 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN103902701A (zh) | 一种数据存储系统和存储方法 | |
CN103902693A (zh) | 一种读优化的内存数据库t树索引结构的方法 | |
CN102737068A (zh) | 一种用于对检索数据进行缓存管理的方法与设备 | |
CN101763390A (zh) | 基于Berkeley DB的数据库存储系统及方法 | |
Weintraub et al. | Needle in a haystack queries in cloud data lakes. | |
Qian et al. | An evaluation of Lucene for keywords search in large-scale short text storage | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
Zhang et al. | FlameDB: A key-value store with grouped level structure and heterogeneous Bloom filter | |
CN106934066A (zh) | 一种元数据处理方法、装置和存储设备 | |
CN109213760B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170620 |