建立数据索引的方法、利用该索引查询数据的方法和系统的制作方法

文档序号:6608132阅读:685来源:国知局
专利名称:建立数据索引的方法、利用该索引查询数据的方法和系统的制作方法
技术领域
本申请涉及一种在数据库中建立数据索引的方法、以及利用该索引查询数据的方法。本申请还涉及一种数据库查询系统。
背景技术
数据库系统的逻辑结构中,主要包括上层的结构化查询语言(SQL)层和底层的存储引擎层。其中SQL层主要负责各种数据库操作的流程和处理。存储引擎层实现底层的数据存取的实际操作,包括数据的组织、存储、索引等。在数据的组织和存储方面,一般将数据通过操作系统的文件系统存储在磁盘上的文件中。为了有效地管理存储空间和便于存取, 一般将这些存储空间分成多个存储页O^ge),包括数据页和索引页,一个数据页一般可以存储多条数据记录(行)。在数据库表中的数据量很多时,采用简单的扫描匹配方式所获得的性能往往无法满足用户的查询要求,而影响查询性能的主要因素是查询操作须访问的数据量和磁盘I/O 量。在数据库实现中,索引是常用的优化查询性能的重要技术手段。通常状况下,由于索引记录仅包含索引键值以及很短的指针,索引实体比真实的数据要小很多。一个索引页可以存储数量更多的索引记录,这意味着在索引中查找时在I/O上占很大的优势。而且索引可以组织成支持快速查找的数据结构,如B-TREE查找树、HASH表等典型的数据结构。在查询时,根据查询条件,首先从索引中查找得到数据记录的存储位置,再从这些存储位置定位读取出数据记录,可以大大减少查询时须访问的数据量和磁盘I/O量,因此提高查询性能。数据库系统中常用的索引类型如B-TREE索引、HASH索引等,分别适用于不同的场合,它们的原理基本上都是通过查询的索引键值来快速定位数据记录的存储位置。一条索引记录中包含的基本信息包括索引键值(即定义索引时指定的所有字段的值)+逻辑指针(指向数据记录的位置)。在使用数据库时,用户可以根据查询需求,在数据表的某个或某几个列上建立适当的索引。在数据库中,对于在数据表中出现的每个索引键值,在索引中建立该键值对应的每条数据记录的逻辑指针(这里用RID表示,可以表示为对应数据页的ID+记录偏移量)的列表。这样,只要在索引中快速查找到匹配的索引键值, 就可以获得和该键值对应的数据记录的逻辑指针列表。以电信业务中的⑶R数据表为例,一条⑶R记录中一般包含用户号码⑴serld)、时间标签(Timestamp)、对方号码(PeerId)等参数。一个CDR表的数据量一般非常大,例如有几亿条记录。常用的查询之一是查询某个用户的CDR记录,这就需要对用户号码(UserId) 字段建立索引。图1示出了为某CDR数据表的用户号码(UserId)字段建立的一个普通的 B+TREE索引结构及其对应的数据结构的一部分。这是一个密集索引,在数据页150的上一级索引页110中为每一条数据记录建立了一条索引记录。索引的叶子结点中包含索引键值及指向数据页中数据记录的逻辑指针,其记录数量与数据表数据记录数量一致。索引页 100中的索引记录组成B+TREE结构。例如查找用户号码13500002的记录,首先从根索引页 1001查到下一级索引页1007,再到叶子索引页1132,最后得到该用户号码对应的RID只有一个<1409,2>,即数据页1409中偏移量为2的记录。如果在图1的索引结构中查找用户号码13600001的记录,则会按照相似的流程定位到叶子索引页1153,因为用户号码13600001在数据页14 中有400条数据记录,相应地在索引页1153中也有400条索引记录。在实际的CDR数据集中,这种高密度的数据记录出现的可能性比较大。这样由多条索引记录逐条定位和随机读取数据记录的效率可能比在指定数据页中顺序扫描还慢。因此,需要本领域中需要迫切需要能够解决上述技术问题的数据库检索方案。

发明内容
一方面,本申请公开了一种在数据库中查询数据的方法,其中,所述数据库包括用来存储数据的多个单位存储空间,所述方法包括接收数据查询指令并确定所述数据查询指令中包括的索引键值;确定所述索引键值是用于近似索引还是精确索引;如果确定的结果是所述索引键值是用于近似索引,则通过所述索引键值,从所述近似索引在单位存储空间中标识的位置开始扫描查询数据记录,如果确定的结果是所述索引键值是用于精确索引,则通过所述索引键值在所述单位存储空间中标识的位置处查询数据记录。另一方面,本申请还公开了一种数据库查询系统,包括索引建立模块,为要存储的数据建立近似索引文件或精确索引文件,其中,在所述近似索引文件中,数据的索引键值近似指向该数据在单位存储空间中的位置,在所述精确索引文件中,索引键值指向每个数据的精确位置;索引判断模块,用于判断所建立的索引文件为近似索引文件还是精确索引文件; 以及数据查询模块,如果判断的结果是为近似索引文件,则从所述近似索引文件在单位存储空间中标识的位置开始扫描查询至少一条数据记录;如果确定的结果为精确索引文件,则在所述索引键值在单位存储空间中标识的精确位置处查询数据记录。此外,本申请还公开了一种在数据库中建立数据索引的方法,其中,所述数据库包括用来存储数据的多个单位存储空间,所述方法包括确定存储到所述数据库中的数据的索引键值;根据所述确定的索引键值判断与之关联的数据在一个所述单位存储空间中的存储密度是否超过了预设门限;如果判断的结果为是,则为所述关联的数据建立近似索引文件,在所述近似索引文件中,所述索引键值近似指向所述数据在单位存储空间中的位置,否则,为所述关联的数据建立精确索引文件,在所述精确索引文件中,所述索引键值指向要存储的数据的精确位置。


图1为根据现有技术的一个普通的B+TREE索引结构及其对应的数据结构;图2为根据本申请一个实施方式的在数据库中建立数据索引的处理;
图3示出了采用图2所示出的索引方法后对图1中相同数据集的索引结构以及其对应的数据结构;图4示出了采用图2示出的方法建立的数据索引执行数据查询时的处理;以及图5示出了根据本发明另一实施方式的数据库查询系统。
具体实施例方式以下参照附图描述本申请的具体实施方式
。图2为根据本申请一个实施方式的在数据库中建立数据索引的处理2000。该方法可应用于任何通用的数据库,这些数据库中通常包括用来存储数据的多个单位存储空间 (例如数据页),和用来存储数据索引的索引文件。处理2000从步骤S201开始,在该步骤中确定要存储到数据库中的数据的索引键值。例如,在图1所示的数据存储结构中,确定出用户号码(UserId)为要存储的数据的索引键值。接着,在步骤S202中,根据所述确定的索引键值确定与之关联的数据在单位存储空间中的存储密度是否超过了预设门限。例如,假设一个数据页中平均大约可以存放1000 条⑶R记录,根据实际运行环境的经验值,可设置用户号码索引的密度门限为15%,并且只有在索引键值重复数大于100时才起作用。假设,在图1所示的用户号码13600001在数据页1似8中有400条数据记录,超过了密度门限15%。如果确定的结果为是,则在步骤S203中,在索引文件中为关联的数据建立近似索引以使得所述索引键值近似指向所述数据在单位存储空间中的位置,否则在步骤S204中, 在索引文件中为数据建立精确索引以使得所述索引键值指向每个数据的精确位置。表1示出了根据本申请一个实施方式的索引文件的数据结构。在表1中,一个索引键值对应了一系列逻辑指针RID-1、RID-2,. . . RID-n,这些RID可用于精确的数据索引, 也可能是用于近似的数据索引。
权利要求
1.一种在数据库中查询数据的方法,其中,所述数据库包括用来存储数据的多个单位存储空间,所述方法包括接收数据查询指令并确定所述数据查询指令中包括的索引键值; 确定所述索引键值是用于近似索引还是精确索引;如果确定的结果是所述索引键值是用于近似索引,则从所述近似索引在单位存储空间中标识的位置开始扫描以查询数据记录,以及如果确定的结果是所述索引键值是用于精确索引,则通过所述精确索引在单位存储空间中标识的精确位置处查询数据记录。
2.如权利要求1所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,以及所述逻辑指针包括用于指示所述索弓I键值指向哪个单位存储空间的数据页信息、记录偏移量以及标识所述索引为近似索引的标记,其中,从所述近似索引在单位存储空间中标识的位置开始扫描查询数据记录的步骤包括通过所述数据页信息确定出要查询的单位存储空间;通过所述记录偏移量确定出在单位存储空间中开始查询的位置;以及从所述开始查询的位置开始顺序查询其中的数据记录。
3.如权利要求2所述的方法,其中,如果所述数据查询指令涉及数据删除操作并且确定的结果是所述索引键值是用于近似索引时,所述方法进一步包括在删除操作结束后,确定所述索引键值指向的单位存储空间中是否还至少存在一条包含该索引键值的数据记录,如不存在,则在索引文件中删除对应的索引记录。
4.如权利要求1所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、记录偏移量以及计数器,其中,从所述近似索引在单位存储空间中标识的位置开始扫描查询数据记录的步骤包括通过所述数据页信息确定出要查询的单位存储空间;通过所述记录偏移量确定出在单位存储空间中开始查询的位置;以及从所述开始查询的位置开始顺序查询所述计数器表示的个数的数据记录。
5.如权利要求4所述的方法,其中,如果所述数据查询指令涉及数据删除操作并且确定的结果是所述索引键值是用于近似索引时,所述方法进一步包括在删除操作结束后确定,将所述计数器的值减1,如果计数器的值达到0,则在索引文件中删除对应的索引记录。
6.如权利要求1所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、和标识所述索引为近似索引的标识,其中,从所述近似索引在单位存储空间中标识的位置开始扫描查询数据记录的步骤包括通过所述数据页信息确定出要查询的单位存储空间;以及在所述确定的单位存储空间中从第一条数据记录开始顺序扫描查询所述单位存储空间中的所有数据记录。
7.如权利要求1所述的方法,其中,如果所述数据查询指令涉及数据插入操作并且确定的结果是所述索引键值是用于精确索引时,所述方法进一步包括在执行完所述数据插入操作后,检查所述数据查询指令中包括的索引键值在所属单位存储空间中的存储密度是否超过了预设门限;如果是,则将所述索引键值对应的精确索引修改为近似索引。
8.如权利要求1所述的方法,其中,所述单位存储空间为一个数据页。
9.如前述权利要求1-8中任意一项权利要求所述的方法,其中,所述预设门限根据所述数据库运行的环境设定。
10.一种数据库查询系统,包括索引建立模块,为要存储的数据建立近似索引文件或精确索引文件,其中,在所述近似索引文件中,数据的索引键值近似指向该数据在单位存储空间中的位置,在所述精确索引文件中,索引键值指向每个数据的精确位置;索引判断模块,用于判断所建立的索引文件为近似索引文件还是精确索引文件;以及数据查询模块,如果判断的结果是为近似索引文件,则从所述近似索引文件在单位存储空间中标识的位置开始扫描查询至少一条数据记录;如果确定的结果为精确索引文件, 则在所述索引键值在单位存储空间中标识的精确位置处查询数据记录。
11.如权利要求10所述的系统,其中,当所述数据的索引键值在单位存储空间中的存储密度是否超过了预设门限后,所述索引建立模块为要存储的数据建立近似索引文件。
12.如权利要求10所述的系统,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,以及所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、记录偏移量以及标识所述索引为近似索引的标记,其中,当所述索引判断模块判断的结果是所建立的索引文件为近似索引文件时,所述数据查询模块被配置为通过所述数据页信息确定出要查询的单位存储空间,通过所述记录偏移量确定出在单位存储空间中开始查询的位置,然后从所述开始查询的位置开始顺序查询其中的数据记录。
13.如权利要求12所述的系统,其中,在所述索引文件为近似索引文件的情况下,如果执行完删除操作,则所述索引建立模块确定所述索引键值指向的单位存储空间中是否还至少存在一条包含该索引键值的数据记录,如不存在就在索引文件中删除对应的索引记录。
14.如权利要求10所述的系统,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、记录偏移量以及计数器,其中,当所述索引判断模块判断的结果是所建立的索引文件为近似索引文件时,所述数据查询模块被配置为通过所述数据页信息确定出要查询的单位存储空间,通过所述记录偏移量确定出在单位存储空间中开始查询的位置,然后从所述开始查询的位置开始顺序查询所述计数器表示的个数的数据记录。
15.如权利要求14所述的系统,其中,如果所述数据查询指令涉及数据删除操作并且确定的结果是所述索引键值是用于近似索引时,在删除操作结束后,所述索引建立模块被配置为将所述计数器的值减1,如果计数器的值达到0,则在索引文件中删除对应的索引记录。
16.如权利要求10所述的系统,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、和标识所述索引为近似索引的标识,当所述索引判断模块判断的结果是所建立的索引文件为近似索引文件时,所述数据查询模块通过所述数据页信息确定出要查询的单位存储空间;然后在所述确定的单位存储空间中从第一条数据记录开始顺序扫描查询所述单位存储空间中的所有数据记录。
17.如权利要求10所述的系统,其中,如果所述数据查询指令涉及数据插入操作并且确定的结果是所述索引键值是用于精确索引时,在执行完数据插入操作指令后,所述索引建立模块检查所述数据插入操作指令中包括的索引键值在所属单位存储空间中的存储密度是否超过了预设门限;如果是,则将所述索引键值对应的精确索引修改为近似索引。
18.如权利要求10所述的系统,其中,所述单位存储空间为一个数据页。
19.如前述权利要求10-19中任意一项权利要求所述的系统,其中,所述预设门限根据所述数据库运行的环境设定。
20.一种在数据库中建立数据索引的方法,其中,所述数据库包括用来存储数据的多个单位存储空间,所述方法包括确定存储到所述数据库中的数据的索引键值;根据所述确定的索引键值判断与之关联的数据在一个所述单位存储空间中的存储密度是否超过了预设门限;如果判断的结果为是,则为所述关联的数据建立近似索引文件,在所述近似索引文件中,所述索引键值近似指向所述数据在单位存储空间中的位置,否则,为所述关联的数据建立精确索引文件,在所述精确索引文件中,所述索引键值指向要存储的数据的精确位置。
21.如权利要求20所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,以及所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、记录偏移量以及标识所述索引为近似索引的标记。
22.如权利要求20所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、记录偏移量以及计数器。
23.如权利要求20所述的方法,其中,所述近似索引包括索引键值和标识数据记录的逻辑指针,所述逻辑指针包括所述索引键值指向哪个单位存储空间的数据页信息、和标识所述索引为近似索引的标识。
24.如权利要求20所述的方法,其中,所述单位存储空间为一个数据页。
25.如前述权利要求20-24中任意一项权利要求所述的方法,其中,所述预设门限根据所述数据库运行的环境设定。
全文摘要
公开了一种在数据库中查询数据的方法、数据库查询系统和建立数据库索引的方法。在数据库中查询数据的方法包括接收数据查询指令并确定所述数据查询指令中包括的索引键值;确定所述索引键值是用于近似索引还是精确索引;如果确定的结果是所述索引键值是用于近似索引,则通过所述索引键值,从所述近似索引在单位存储空间中标识的位置开始扫描查询数据记录,以及如果确定的结果是所述索引键值是用于精确索引,则通过所述索引键值在所述单位存储空间中标识的位置处查询数据记录。
文档编号G06F17/30GK102375852SQ201010261159
公开日2012年3月14日 申请日期2010年8月24日 优先权日2010年8月24日
发明者周大, 孙少陵, 张卫平, 张松波, 罗治国, 郭磊涛, 钱岭, 齐骥 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1