一种基于拉链信息的索引存储管理方法

文档序号:6399989阅读:486来源:国知局
专利名称:一种基于拉链信息的索引存储管理方法
技术领域
本发明涉及数据库、信息检索领域,尤其涉及一种基于拉链信息的索引存储管理方法。
背景技术
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根据拉链信息块中的记录的数据文件中的偏移量off set、数据个数num、数据长度datasize,读取数据文件中的数据。步骤405判断拉链信息块中的指向上一个拉链信息块的指针pervEntity是否等于-1,如果等于-1,执行步骤407,否则,执行步骤406。步骤406取得上一个拉链信息块的指针pervEntity对应的拉链信息块号值,然后执行步骤403。 步骤407结束本次查询。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于拉链信息的索引存储管理方法,其特征在于,所述索引的物理文件组织包括:B树索引文件、拉链文件和数据文件;所述方法包括: a根据键值对将数据写入数据文件; b根据写入的数据信息构造拉链信息块; c判断插入的数据键值对在B树中是否存在,并相应地更新B树文件和拉链信息文件。
2.根据权利要求1所述的基于拉链信息的索引存储管理方法,其特征在于,所述步骤a还包括:记录写入数据在数据文件中的偏移量、数据长度及数据的个数,并根据数据在数据文件中的偏移量、数据长度及数据的个数读取数据文件中的数据。
3.根据权利要求1所述的基于拉链信息的索引存储管理方法,其特征在于,所述步骤c具体包括: 数据键值对在B树中不存在,设置拉链信息块指向上一个拉链信息块的指针值,且将拉链信息块写入拉链信息文件,并将拉链信息块的块号作为键值对的值插入B树中; 数据键值对在B树中存在,将当前拉链信息块指向上一拉链信息块的指针值设置为键值,并将拉链信息块写入拉链信息文件,同时更新键值为当前拉链信息块的块号。
全文摘要
本发明公开了一种基于拉链信息的索引存储管理方法,所述索引的物理文件组织包括B树索引文件、拉链文件和数据文件;所述方法包括根据键值对将数据写入数据文件;根据写入的数据信息构造拉链信息块;判断插入的数据键值对在B树中是否存在,并相应地更新B树文件和拉链信息文件。本发明在物理文件设计上添加了拉链文件,在索引存储的逻辑处理中,基于拉链信息项进行数据操作,为数据的高效插入、更新和查询提供了支持,提高了数据处理性能。
文档编号G06F17/30GK103116652SQ20131007028
公开日2013年5月22日 申请日期2013年3月6日 优先权日2013年3月6日
发明者陈琳, 汤汨宝, 夏冬, 王奎 申请人:同方知网(北京)技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1