CN103116652B - 一种基于拉链信息的索引存储管理方法 - Google Patents
一种基于拉链信息的索引存储管理方法 Download PDFInfo
- Publication number
- CN103116652B CN103116652B CN201310070282.8A CN201310070282A CN103116652B CN 103116652 B CN103116652 B CN 103116652B CN 201310070282 A CN201310070282 A CN 201310070282A CN 103116652 B CN103116652 B CN 103116652B
- Authority
- CN
- China
- Prior art keywords
- slide fastener
- data
- file
- message block
- value
- 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
Abstract
本发明公开了一种基于拉链信息的索引存储管理方法,所述索引的物理文件组织包括:B树索引文件、拉链文件和数据文件;所述方法包括:根据键值对将数据写入数据文件;根据写入的数据信息构造拉链信息块;判断插入的数据键值对在B树中是否存在,并相应地更新B树文件和拉链信息文件。本发明在物理文件设计上添加了拉链文件,在索引存储的逻辑处理中,基于拉链信息项进行数据操作,为数据的高效插入、更新和查询提供了支持,提高了数据处理性能。
Description
技术领域
本发明涉及数据库、信息检索领域,尤其涉及一种基于拉链信息的索引存储管理方法。
背景技术
Web的出现极大地推动了数据库系统的研究,同时,一般信息检索领域的各种技术也在Web信息检索中获得新生,对信息检索、数据库系统以及Web本身的研究正在以多种方式进行融合。如何快速地从存储的大量数据中找满足用户需求的信息已经成为数据库和信息检索领域研究的新热点。
在数据库系统中,通常使用索引来协助快速查询,提高数据库表数据访问速度。一般来说,数据库存储的基本单位是页,存储信息的物理文件分配的磁盘空间可以从逻辑上划分成页,磁盘I/O操作在页级执行。当为一张空表创建索引时,数据库系统将分配一个索引页,该索引页在插入数据前一直是空的。此页此时既是根结点,也是叶结点。当往表中插入一行数据,数据库系统即向此根结点中插入一行索引记录。当根结点满时,数据库系统大抵按以下步骤进行分裂:
1、创建两个儿子结点。
2、将原根节结中的数据近似地拆成两半,分别写入新的两个儿子结点。
3、根结点中加上指向两个儿子结点的指针。
通常状况下,由于索引记录仅包含索引字段值(以及4-9字节的指针),索引实体比真实的数据行要小许多,因此,索引页相较数据页来说要密集许多。一个索引页可以存储数量更多的索引记录,这意味着在索引中查找时,在I/O上占很大的优势。
目前,数据库索引的数据结构主要是基于B-树及其变种。B树是一种性能很高的外存多路查找树,具有平衡,层数较少等优点,适用于系统对大块数据的读写优化。在插入数据时,B树会对节点进行检测,通过及时调整,使之达到平衡。一般来说,基于B树的索引的物理文件组织包括B树文件和数据文件,索引的逻辑类型包括以下两类:
1、聚集索引,表数据按照索引的顺序来存储。对于聚集索引,叶子结点即是数据页,不再有另外单独的数据文件。相对于非聚集索引来说,它插入数据的速度较慢,时间主要花费在“物理存储的排序”上,但查询数据时速度较快,因为数据都存储在同一棵B树里。
2、非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点是由索引页组成,包含索引字段值及指向数据块的逻辑指针。
然而,目前的索引存储方案也存在着一些缺陷,主要是更新索引时,由于插入的数据对应的键在B树中可能已存在,这时如果直接更新物理数据文件,需要先找到该键对应的数据块在文件中的位置,然后在文件内部追加写入数据。但是,目前写入文件操作只支持在文件尾部追加写入,因此该操作需要重新排放文件内已有的数据页,将新加入的数据写入恰当的位置,导致文件碎片较多,降低了数据更新和查询的性能。而过多的文件碎片会使系统在读文件的时候来回寻找,引起系统性能下降,严重的话还可能导致存储文件的丢失。
发明内容
为解决上述中存在的问题与缺陷,本发明提供了一种基于拉链信息的索引存储管理方法。所述技术方案如下:
一种基于拉链信息的索引存储管理方法,所述索引的物理文件组织包括:B树索引文件、拉链文件和数据文件;所述方法包括:
A根据键值对将数据写入数据文件;
B根据写入的数据信息构造拉链信息块;
C判断插入的数据键值对在B树中是否存在,并相应地更新B树文件和拉链信息文件。
本发明提供的技术方案的有益效果是:
在物理文件设计上添加了拉链文件,在索引存储的逻辑处理中,基于拉链信息项进行数据操作,为数据的高效插入、更新和查询提供了支持,提高了数据处理性能。
附图说明
图1是基于拉链信息的索引存储管理方法流程图;
图2是基于拉链信息的索引的存储架构图;
图3是基于拉链信息的索引存储管理方法的实现流程图;
图4是基于拉链信息的索引存储管理方法的查询流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述:
参见图1,为基于拉链信息的索引存储管理方法流程,所述索引的物理文件组织包括:B树索引文件、拉链文件和数据文件;所述方法包括以下步骤:
步骤10根据键值对将数据写入数据文件;
根据新的键值对,将数据写入数据文件,同时记录当前写入数据在数据文件中的偏移量offset、数据长度datasize及数据的个数num。
步骤20根据写入的数据信息构造拉链信息块;
根据数据在数据文件中的偏移量offset、数据长度datasize、数据的个数num及拉链信息块指针prevEntity构造一个拉链信息块。
步骤30判断插入的数据键值对在B树中是否存在,并相应地更新B树文件和拉链信息文件。
如果不存在,将拉链信息块中的prevEntity设置为-1,并将拉链信息块写入拉链信息文件,并将当前拉链信息块的块号做为key-value键值对的value值插入B树中。
如果存在,将拉链信息块的指向上一个拉链信息块的指针prevEntity的值设置为已存在key的value值,并将拉链信息块写入拉链信息文件,同时更新key的value值为当前拉链信息块的块号(如图3所示)。
上述B树中的每个叶子节点存储着拉链文件中某个拉链信息块的块号,拉链文件中的每个拉链信息块存储着对应的数据块在数据文件中的位置信息,数据文件存放的是真正的数据。
参见图2,为基于拉链信息的索引的存储架构,索引的物理文件组织包括B树索引文件、拉链文件和数据文件。B树中的每个叶子节点存储着拉链文件中某个拉链信息块的块号,拉链文件中的每个拉链信息块存储着对应的数据块在数据文件中的位置信息,包括在数据文件中的偏移量offset、数据长度datasize、数据的个数num以及指向同一个键的上一个拉链快的指针,数据文件中的每个数据块存储的是真实的数据。
参见图4,是基于拉链信息的索引存储管理方法的查询流程,包括:
步骤401根据新的key在B树中查询,判断该key是否存在,如果不存在,执行步骤407;如果存在,执行步骤402。
步骤402取得key对应的拉链信息块块号值。
步骤403根据拉链信息块号值在拉链信息文件中读取相应的拉链信息块信息。
步骤404根据拉链信息块中的记录的数据文件中的偏移量offset、数据个数num、数据长度datasize,读取数据文件中的数据。
步骤405判断拉链信息块中的指向上一个拉链信息块的指针pervEntity是否等于-1,如果等于-1,执行步骤407,否则,执行步骤406。
步骤406取得上一个拉链信息块的指针pervEntity对应的拉链信息块号值,然后执行步骤403。
步骤407结束本次查询。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种基于拉链信息的索引存储管理方法,其特征在于,所述索引的物理文件组织包括:B树索引文件、拉链文件和数据文件;所述方法包括:
a根据键值对将数据写入数据文件;根据新的键值对,将数据写入数据文件,同时记录当前写入数据在数据文件中的偏移量offset、数据长度datasize及数据的个数num;
b根据写入的数据信息构造拉链信息块;根据数据在数据文件中的偏移量offset、数据长度datasize、数据的个数num及拉链信息块指针prevEntity构造一个拉链信息块;
c判断插入的数据键值对在B树中是否存在,并相应地更新B树索引文件和拉链文件;如果不存在,将拉链信息块中的prevEntity设置为-1,并将拉链信息块写入拉链文件,并将当前拉链信息块的块号作为key-value键值对的value值插入B树中;如果存在,将拉链信息块指向上一个拉链信息块的指针prevEntity的值设置为已存在key的value值,并将拉链信息块写入拉链文件,同时更新key的value值为当前拉链信息块的块号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310070282.8A CN103116652B (zh) | 2013-03-06 | 2013-03-06 | 一种基于拉链信息的索引存储管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310070282.8A CN103116652B (zh) | 2013-03-06 | 2013-03-06 | 一种基于拉链信息的索引存储管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103116652A CN103116652A (zh) | 2013-05-22 |
CN103116652B true CN103116652B (zh) | 2016-03-16 |
Family
ID=48415025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310070282.8A Active CN103116652B (zh) | 2013-03-06 | 2013-03-06 | 一种基于拉链信息的索引存储管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103116652B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354151B (zh) * | 2014-08-19 | 2020-09-11 | 阿里巴巴集团控股有限公司 | 一种缓存管理方法与设备 |
CN105045879B (zh) * | 2015-07-21 | 2019-08-02 | 上海融甸信息科技有限公司 | 一种数据并行处理方法 |
CN105045881A (zh) * | 2015-07-21 | 2015-11-11 | 上海融甸信息科技有限公司 | 一种历史数据新增方法 |
CN111078153B (zh) * | 2019-12-20 | 2023-08-01 | 同方知网数字出版技术股份有限公司 | 一种基于文件的分布式存储方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349926B2 (en) * | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
CN101286160A (zh) * | 2008-05-30 | 2008-10-15 | 同济大学 | 数据库索引的方法 |
WO2010016840A1 (en) * | 2008-08-07 | 2010-02-11 | Hewlett-Packard Development Company, L.P. | Providing data structures for determining whether keys of an index are present in a storage system |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据系统有限公司 | 一种数据库的b树索引的生成方法及装置 |
CN102323947A (zh) * | 2011-09-05 | 2012-01-18 | 东北大学 | 环形架构数据库上预连接表的生成方法 |
CN102436420A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 |
-
2013
- 2013-03-06 CN CN201310070282.8A patent/CN103116652B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349926B2 (en) * | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
CN101286160A (zh) * | 2008-05-30 | 2008-10-15 | 同济大学 | 数据库索引的方法 |
WO2010016840A1 (en) * | 2008-08-07 | 2010-02-11 | Hewlett-Packard Development Company, L.P. | Providing data structures for determining whether keys of an index are present in a storage system |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据系统有限公司 | 一种数据库的b树索引的生成方法及装置 |
CN102436420A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 |
CN102323947A (zh) * | 2011-09-05 | 2012-01-18 | 东北大学 | 环形架构数据库上预连接表的生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103116652A (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7689574B2 (en) | Index and method for extending and querying index | |
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
US10756757B2 (en) | Maintaining data deduplication reference information | |
US20130262758A1 (en) | Systems and Methods for Tracking Block Ownership | |
CN103176754A (zh) | 一种海量小文件读取存储方法 | |
CN101777017B (zh) | 一种连续数据保护系统的快速恢复方法 | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和系统 | |
EP3316150B1 (en) | Method and apparatus for file compaction in key-value storage system | |
CN107045531A (zh) | 一种优化hdfs小文件存取的系统及方法 | |
CN102693286B (zh) | 一种对文件内容与元数据进行组织管理的方法 | |
CN104111804A (zh) | 一种分布式文件系统 | |
CN102129435A (zh) | 数据存储业务控制方法及系统 | |
CN103116652B (zh) | 一种基于拉链信息的索引存储管理方法 | |
CN100507919C (zh) | 一种fat文件系统及其处理方法 | |
CN105912687A (zh) | 海量分布式数据库存储单元 | |
US10509780B2 (en) | Maintaining I/O transaction metadata in log-with-index structure | |
CN105159616A (zh) | 一种磁盘空间管理方法及装置 | |
CN102508913A (zh) | 一种带有数据立方存储索引结构的云计算系统 | |
CN103714163A (zh) | 一种NoSQL数据库的模式管理方法及系统 | |
CN104281717B (zh) | 一种建立海量id映射关系的方法 | |
CN109726175A (zh) | 一种基于HBase的海量文件离线分区管理方法 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN108287869A (zh) | 一种基于快速存储设备的海量小文件解决方法 | |
CN106326040B (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 |