著录项信息
| 专利名称 | 用于最优化索引搜索的方法和设备 |
| 申请号 | CN200710192708.1 | 申请日期 | 2007-11-16 |
| 法律状态 | 权利终止 | 申报国家 | 中国 |
| 公开/公告日 | 2008-05-28 | 公开/公告号 | CN101187941 |
| 优先权 | 暂无 | 优先权号 | 暂无 |
| 主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
| 申请人 | 三星电子株式会社 | 申请人地址 | 韩国京畿道水原市灵通区梅滩3洞416
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
| 权利人 | 三星电子株式会社 | 当前权利人 | 三星电子株式会社 |
| 发明人 | 姜仁鲜;禹景久 |
| 代理机构 | 北京铭硕知识产权代理有限公司 | 代理人 | 郭鸿禧;刘奕晴 |
摘要
公开了一种最优化索引搜索设备和方法,所述最优化索引搜索方法包括:在索引中搜索与第一关键字值对应的第一字段;当输入搜索请求时,基于第一字段搜索与搜索请求对应的第二字段;和提取与发现的第二字段对应的标识符。
1.一种最优化索引搜索方法,包括:
在索引中搜索与第一关键字值对应的第一字段;
当输入搜索请求时,基于第一字段在索引中搜索与搜索请求对应的第二字段;和提取与第二字段对应的标识符,
其中,索引的单元包括存储第一关键字值的第一字段和存储第二关键字值的第二字段,
其中,索引的第一字段和第二字段中的每一个存储上一指针和下一指针中的至少一个,所述上一指针指向包含上一关键字值的上一节点,所述下一指针指向包含下一关键字值的下一节点,
其中,如果上一关键字值和字段存在于同一节点中,则该字段不存储上一指针,如果下一关键字值存在于所述同一节点中,则该字段不存储下一指针,
其中,索引的单元包括字段计数字段,所述字段计数字段存储配置所述单元的字段的数量,
其中,所述单元还包括:
第一上一指针,指向包含不同于所述第一关键字值的上一第一关键字值的上一节点;
第二上一指针,指向包含不同于所述第二关键字值的上一第二关键字值的上一节点;
和
上一计数字段,存储包括在所述单元中的上一指针的数量,
其中,如果上一节点与所述单元的节点是同一节点,则第一上一指针或第二上一指针不指向上一节点。
2.如权利要求1所述的方法,其中,索引在当前节点中单独存储高层次关键字值,以允许在没有参考其他节点的情况下浏览预定关键字值的高层次关键字值。
3.如权利要求1所述的方法,还包括:
提供与提取的标识符对应的内容的元数据或内容。
4.如权利要求1所述的方法,其中,所述单元还包括:
第一下一指针,指向包含不同于所述第一关键字值的下一第一关键字值的下一节点;
第二下一指针,指向包含不同于所述第二关键字值的下一第二关键字值的下一节点。
5.如权利要求4所述的方法,其中,
如果下一节点与所述单元的节点是同一节点,则第一下一指针不指向下一节点;
如果下一节点与所述单元的节点是同一节点,则第二下一指针不指向下一节点;和所述单元还包括存储包括在所述单元中的下一指针的数量的下一计数字段。
用于最优化索引搜索的方法和设备\n[0001] 本申请要求于2006年11月23日提交到韩国知识产权局的第2006-116560号韩国专利申请的利益,其公开包含于此以资参考。\n技术领域\n[0002] 本发明的各方面涉及一种最优化索引搜索设备和方法,更具体地讲,涉及一种使用增加存储空间的效率并提供各种操作的索引的搜索方法和最优化索引搜索设备。\n背景技术\n[0003] 基于元数据的用户界面(UI)已经随着数字内容技术的进步和不断增长的普及性而变得流行。当存在大量数据时,难以仅使用文件夹和文件名来搜索内容。然而,基于元数据的UI能够改变搜索条件来搜索内容,并使得用户能够容易地记住元数据值。\n[0004] 具体地讲,在基于元数据的浏览中,基于多层次聚类的UI使得用户能够更方便地理解内容的分布,并且能够通过应用多种搜索条件来更有效地访问期望的内容。基于多层次聚类的UI对按层次分类的内容进行聚类,并使用索引以便在聚类之间移动。\n[0005] 聚类指的是将相似的对象分为一组。在多层次聚类中,根据第N条件(N≥1)划分的每个聚类可根据第(N+1)条件被进一步划分为更详细的聚类。内容浏览器通过根据预定条件将整个内容划分为多个聚类并随后将划分的内容提供给用户,来选择基于多层次聚类的UI\n[0006] 图1示出了存储图像信息的表的图解。如图1所示,对于表的每条记录,存在与关于年、月、日的信息对应的字段12。由该表管理的图像经由多层次聚类的UI,根据基于年、月、日字段12的三个层次中的每一层次被进行聚类,并随后被显示在屏幕上。按照标题对最低层次(即,“日”)的聚类进行排序和显示。为了实现多层次聚类的UI,应该从数据库中提取包括在聚类中的图像记录。\n[0007] 如果期望浏览包括在2006年(第一层次)5月(第二层次)1日(第三层次)中的相片,可通过以下查询将记录显示在屏幕上,即,“Select*from Tablewhere year=2006 and month=5 and day=1 order by title”。\n[0008] 当包括关于若干个字段的预定条件的查询(诸如上述查询)在没有适当索引的情况下被处理时,根据图像记录数量的增加,需要更长的时间来处理查询。当在查询中使用等号(=)并且存在关于最低字段的排序条件时,使用多列B+树索引。多列B+树索引组合相应字段并将所述相应字段作为索引的关键字来使用。\n[0009] 图2描述了多列B+树索引20的结构。如图2所示,如果使用多列B+树索引20,则当选择年、月、日作为特定值时,满足预定条件的索引的条目已经按照标题顺序被排列并且彼此相邻。因此,没有可减少查询花费的时间的另外的排列成本。\n[0010] 当浏览第二层次(月)或第一层次(年),而非第三层次(日)时,可使用多列B+树索引。然而,因为仅使用多列B+树索引20获得按照每一高层次显示的聚类名需要更长的时间,所以需要附加索引(如图3所示)。为了使用多列B+树索引20获得将在第一层次上显示的聚类,应该读取索引的所有条目,这不能满足交互式屏幕配置所需的响应时间。\n[0011] 图3描述了用于存储多层次聚类的多列B+树索引。如上所述,为了减少响应时间,需要附加索引30以快速搜索存在于相应字段中的值。当用户希望显示配置第一层次的聚类时,使用第一层次聚类的名称作为索引。如果用户希望显示包括在预定聚类(例如,与\n2005对应的聚类)中的记录时,多列B+树索引连续读取2005的记录(“年=2005”)。\n[0012] 当在第二层次中浏览聚类时,需要“年、月”的多列B+树索引40以减少响应时间。\n当在第三层次中浏览聚类时,需要“年、月、日”的多列B+树索引50。如果配置全部层次的字段的数量为N,则所需的多列B+树索引的总数为N。因此,第一层次关键字值被重复地存储在N个索引中,并且第二层次关键字值被存储在N-1个索引中,这导致存储空间的浪费。\n发明内容\n[0013] 本发明的各方面提供了一种使用增加存储空间的效率并提供各种操作的更有效的索引的最优化索引搜索设备和方法。\n[0014] 根据本发明的一方面,提供了一种最优化索引搜索方法,包括:在索引中搜索与第一关键字值对应的第一字段;当输入搜索请求时,基于第一字段在索引中搜索与搜索请求对应的第二字段;和提取与第二字段对应的标识符。\n[0015] 根据本发明的另一方面,提供了一种最优化索引搜索设备,包括:搜索单元,在索引中搜索与第一关键字值对应的第一字段;并且当输入搜索请求时,基于第一字段搜索与搜索请求对应的第二字段;和提取单元,提取与第二字段对应的标识符。\n[0016] 根据本发明的另一方面,提供了一种用于最优化搜索与用户输入的搜索请求层次对应的字段的索引的单元,所述单元包括:第一字段,存储第一层次的第一关键字值;第二字段,存储第二层次的第二关键字值;第一指针,指向包含不同于所述第一关键字值的第一层次的另一第一关键字值的另一单元的另一节点;第二指针,指向包含不同于所述第二关键字值的第二层次的另一第二关键字值的另一单元的另一节点,其中,用于识别内容的元数据或内容的标识符对应于所述第一关键字值和所述第二关键字值。\n[0017] 根据本发明的另一方面,提供了一种最优化索引搜索方法,包括:在索引中搜索与第一关键字值对应的第一字段;接收对低于第一字段的层次的指定层次的搜索操作;基于第一字段对与指定层次对应的第二字段执行搜索操作;和提取与存储在第二字段中的第二关键字值对应的标识符。\n[0018] 在下面的描述中将部分地阐明本发明另外的方面和/或优点,通过描述部分地将会变得更加清楚,或者通过实施本发明可以了解。\n附图说明\n[0019] 通过下面结合附图对实施例进行的描述,本发明的这些和/或其他方面和优点将会变得清楚和更易于理解,其中:\n[0020] 图1示出了存储图像信息的表的图解;\n[0021] 图2描述了多列B+树索引的结构;\n[0022] 图3描述了用于存储多层次聚类的多列B+树索引;\n[0023] 图4是显示根据本发明实施例的最优化索引搜索设备的框图;\n[0024] 图5是显示根据本发明实施例的最优化索引搜索方法的流程图;\n[0025] 图6描述了根据本发明实施例的索引的叶节点;\n[0026] 图7是显示根据本发明实施例的索引节点的结构的示图;\n[0027] 图8描述了根据本发明实施例的索引的叶节点的单元(cell)结构;\n[0028] 图9示出了根据本发明实施例的单元结构的示例;和\n[0029] 图10描述了根据本发明实施例的用于索引搜索的UI。\n具体实施方式\n[0030] 现在对本发明实施例进行详细的描述,其示例表示在附图中,其中,相同的标号始终表示相同组件。下面通过参照附图对实施例进行描述以解释本发明。\n[0031] 图4是显示根据本发明实施例的最优化索引搜索设备200的框图。最优化索引搜索设备200包括存储单元205、管理单元207、搜索单元210、UI提供单元215、提取单元220和内容提供单元230。\n[0032] 存储单元205存储索引中的关键字值和标识符。关键字值可存储在索引的每个字段中,标识符可以是记录ID(RID)。索引的每个字段存储指示节点(上一关键字值和下一关键字值存储在其中)的一个或多个指针。如果上一关键字值和/或下一关键字值存在于相同的节点中,则可省略存储指针。将参照图6至图9描述根据本发明各方面的索引结构。\n[0033] 管理单元207管理存储在存储单元205中的值。例如,管理单元207排列、添加、删除和更新存储的值。\n[0034] 搜索单元210在索引中搜索相应字段。如果输入请求,则搜索单元210搜索与请求对应的层次的字段。搜索单元210可包括UI提供单元215,或者UI提供单元215可被单独地布置。\n[0035] UI提供单元215为用户提供用户界面(UI),以便用户可通过提供的UI搜索与关键字值对应的字段。也就是说,当用户通过UI提供单元215选择关键字值时,经由搜索单元210发现相应字段,这将在图10中示出。\n[0036] 提取单元220提取与发现的字段对应的标识符。标识符可以是记录ID(RID)。提取单元220提取与关键字值对应的RID。\n[0037] 内容提供单元230根据标识符(可以是RID)为用户提供内容的元数据或内容。将参照图10描述包括在最优化索引搜索设备200中的各种操作的示例。\n[0038] 这里使用的术语“单元”的指的是,但不限于,执行特定任务的软件和硬件组件(诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))。模块可以被配置以驻留在可寻址的存储介质上,并且可被配置以在一个或多个处理器上执行。因此,举例来说,模块可以包括:诸如软件组件、面向对象的软件组件、类组件和任务组件的组件、进程、函数、属性、过程、子程序、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表、数组和变量。在组件和模块中提供的功能可被组合为更少的组件和模块,或者可进一步被分离成另外的组件和模块。\n[0039] 图5是显示根据本发明实施例的最优化索引搜索方法的流程图。参照图4和图5,将描述搜索内容的方法。在操作S501中,搜索单元210在索引中搜索与预定关键字值对应的字段。可指定搜索关键字的层次。也就是说,当UI被提供给用户时,用户可经由UI来指定关键字的层次,并且通过搜索单元210发现与关键字值对应的字段。用户可通过移动到搜索到的字段并输入搜索请求来指定层次。当经由UI输入请求时,搜索单元210在索引中搜索与请求对应的层次的字段。图10中示出了更具体的示例。\n[0040] 在操作S511中,提取单元220提取与发现的字段对应的标识符(诸如RID)。\n[0041] 因此,在操作S521中,内容提供单元230根据标识符向用户提供内容的元数据或内容。\n[0042] 图6描述了根据本发明实施例的索引的叶节点。如图6所示,假设在索引的叶节点中,第一层次字段具有数字值,第二层次字段具有英文字母,第三字段具有韩文字母。然而,应该理解,其他和/或不同的值类型、字符类型或符号类型可用于所述字段和不同层次的字段(例如,第一层次字段可以是英文字母,第二层次字段可以是数字值,第三层次字段可以是希腊符号,第四层次字段可以是英文字母)。此时,使用关键字和RID配置的条目可以被存储为单元(cell)结构600。\n[0043] 在传统技术中,整个关键字被识别为二进制字符串并划分前缀。然而,根据本发明的各方面,可通过索引中的字段来区分关键字。例如,在传统技术中,“2005,10”和“2005,\n12”的前缀是“2005,1*”,而根据本发明的各方面则是“2005”。因此,“1,a, ”602和“b,”604本来是“1,a, 和“1,b, ”,但通过省略相同的层次字段而被存储。\n[0044] 在存储在节点100(节点的页编号(page number))中的“3,a, ”606中,第一层次关键字“3”具有存储在相同节点100中的上一关键字“2”和存储在节点300中的下一关键字“4”。因此,第一层次关键字“3”指示该关键字所属的节点100(其中存储有上一关键字)和作为存储下一关键字的节点的节点300。也就是说,索引的每个字段具有指示存储上一关键字和存储下一关键字的节点的指针,从而可快速地发现上一关键字和下一关键字。\n[0045] 当“3,a, ”存储在节点200中时,“3,a”608和“ ”610被划分和存储。也就是说,“3,a, ”607和“3,a, ”之间的不同是第三字段。因此,只有“ ”610被存储。当基于叶节点发现关键字时,仍将“3,a”608作为节点前缀单独存储在节点200中,以在没有参考其他节点(即,节点100)的情况下得知高层次的关键字值。例如,当在节点300的“4,a, 612中发现第三层次关键字“ ”时,在没有参考其他节点的情况下,可得知上一关键字是“3,d, ”614。然而,即使高层次关键字值与上一单元的关键字值相同,根据其他方面应该理解,单元也没有被划分和存储,而是被整个一起存储(例如,“3,a, ”),以在没有参考其他节点的情况下得知高层次的关键字值。在下文中,将参照图7描述索引的详细的节点结构。\n[0046] 图7是显示根据本发明实施例的索引节点的结构的示图。索引结构的特征可以是B+树。在1970年提出的B树包括一些变换的B树版本(诸如,B+树,B*树和前缀B树)。\n索引可以是甚至能够有效地存储多层次聚类关键字的变换的B+树。此外,因为无论用户搜索什么关键字,都可以在叶节点中发现相应的关键字并且搜索时间将会是相同的,所以索引可以是平衡树。\n[0047] 使用关键字和RID配置的条目可以被存储为单元结构。因为关键字的长度是可变的,所以单元被划分为存储实际数据的区域704和存储数据偏移(offset)的区域702(存储每个关键字的长度),以存储具有可变长度的关键字。因此,存储空间被可变地使用。也就是说,用于存储偏移的区域702从左向右弹性地存储数据,用于存储数据的区域704从右向左弹性地存储数据,从而可有效地使用存储空间。\n[0048] 与此相反,如果两个区域702和704的大小固定,则当实际数据的长度较长时,区域704可能迅速填满,当实际数据的长度相对较短时,区域702可能是“满”,而区域704仍然是空的。因此,不能有效地使用存储空间。\n[0049] 存储节点前缀的偏移的区域706存储节点前缀。如果节点不需要节点前缀,则可以将节点前缀偏移区域706初始化为0。\n[0050] 每个字段可存储指示包含上一关键字的节点和包含下一关键字的节点的指针。如果为所有关键字保留两个4字节的指针,则可能减小用于存储实际数据的空间。因此。如果上一关键字和/或下一关键字与当前关键字存在于同一节点中,则索引的每个字段可省略存储指示存储上一关键字或下一关键字的节点的指针,以确保用于存储实际数据的较大的空间。如果第i层次的上一/下一关键字存在于当前节点中,则第(i+1)层次的上一/下一关键字也存在于当前节点中。如果第i层次的上一/下一关键字存在于另一节点中,则第(i+1)层次的上一/下一关键字也存在于另一节点中。这一原理可用于确保空间。这里,假设第一层次是最高层次。\n[0051] 使用低层次从属于高层次的事实,可基于发现的(或当前的)关键字省略存储指示存储上一关键字或下一关键字的节点的指针。当控制搜索的层次时,因为高层次关键字和低层次关键字被存储在单个条目中,所以不必访问另外的节点。\n[0052] 如果(2000年,9月,1日)是在包括[(2000年,8月,16日),(20日),(9月,1日),(2日),(4日)]的第一节点和包括[(2001年,1月,4日),...]的第二节点中发现的关键字,则当月层次的上一关键字(2000年,8月)存在于当前节点中时,日层次(比月层次进一步再分的聚类层次)的上一关键字也存在于当前节点中。也就是说,月层次值的改变指示日层次值也被改变。当(2000年,8月,16日)是发现的关键字时,如果月层次的下一关键字存在于当前节点中,则日层次的下一关键字也存在于当前节点中。\n[0053] 现在参照图8和图9来描述索引的单元结构。这里,在每个字段中输入的值的单位可以是比特或字节,这显示在附图中。在下文中,单位被表示为预定值。\n[0054] 图8描述了根据本发明实施例的索引的叶节点的单元结构。如图8所示,在计数信息区810中,字段计数字段801显示(或存储)配置单元(或包括在单元中)的字段的数量,发现的关键字存在于所述单元中。例如,参照图6,对于“3,a, ”606,计数字段801的值是3。可经由单元的字段计数字段801确定索引中每个层次的边界点。也就是说,在同一节点中,层次的边界点被确定为单元的字段计数值。如果层次的边界点不存在于同一节点中,则可使用节点前缀值发现边界点。因此,可快速发现按照每个层次具有相同关键字值的条目的起点和终点。\n[0055] 上一计数字段802指示上一指针的数量。下一计数字段803指示下一指针的数量。\n填充字段804是预定的保留存储空间。\n[0056] 指针区域820按层次存储指示存在上一关键字或下一关键字的节点的指针。具体地讲,当浏览第i层次时,上一指针字段822基于第i层次存储上一关键字被存储在其中的节点的指针。这里,指针可以是节点的页编号。例如,上一指针1基于第一层次存储指示存储上一关键字的节点的指针。上一指针2基于第二层次存储指示存储上一关键字的节点的指针。上一指针3基于第三层次存储指示存储上一关键字的节点的指针。参照图6,例如,在存储在节点100中的“3,a, ”606中,第一层次关键字“3”具有存储在同一节点100中的上一关键字“2”。因此,单元的上一指针字段822存储节点100的指针。然而,应该理解,当对于所述层次的上一关键字被存储在同一节点中时,可以但非必须省略(即,不存储)指针。\n[0057] 当浏览第i层次时,下一指针字段824基于第i层次存储下一关键字被存储在其中的节点的指针。这里,指针可以是节点的页编号。例如,下一指针1基于第一层次存储指示存储下一关键字的节点的指针。下一指针2基于第二层次存储指示存储下一关键字的节点的指针。下一指针3基于第三层次存储指示存储下一关键字的节点的指针。参照图6,例如,在存储在节点100中的“3,a, ”606中,第一层次关键字“3”具有存储在节点300中的下一关键字“4”。因此,单元的下一指针字段824存储节点300的指针。应该理解,当对于所述层次的下一关键字被存储在同一节点中时,可以但非必须省略(即,不存储)指针。\n[0058] 在存储关键字值的区域830中,关键字大小字段832指示第i字段的长度。例如,当层次的总数为x时(即,当层次是年、月、日时,x=3),关键字大小具有第(x-N+i)层次的字段数据长度(字节),其中,N指示字段计数字段的值。关键字字段834指示预定层次的数据,并且存储第(x-N+i)层次的数据。当在计数信息区域810中字段计数字段801的值是2时,第i字段的关键字大小是x-N+i=3-2+1。指示第二层次的字段数据的大小的关键字大小字段832指示月数据的长度。关键字字段834存储关键字的数据值。\n[0059] 参照图6,当基于第一层次提取所有关键字时,可提取“1、2、3、4”。当基于第二层次提取所有关键字时,可提取“1a、1b、2a、3a、3b、3c、3d、4a、5b”。当基于第三层次提取所有关键字时,可提取“1a 1b 2a 、2a 3a 3a 3a 3a 3b 3b ”。因\n此,对于“3,a, ”606(或3a ),计数字段801的值是3。上一计数字段802的值是0。下一计数字段803的值是2。因为基于第一层次(3)的下一关键字(4)被存储在节点300中,所以下一指针1字段824的值是300。因为上一计数字段802的值是0(即,第一层次(3)、第二层次(3a)和第三层次(3a )的上一值存在于当前节点100中),所以上一指针字段\n822不存储上一指针。可选择地,根据其他方面,即使上一值存在于当前节点中,上一指针字段822也可存储上一指针(例如,因为第一层次(3)、第二层次(3a)和第三层次(3a)的上一值存在于当前节点100中,所以上一指针1字段、上一指针2字段和上一指针3字段822的每一个都存储值100)。因为基于第二层次(3a)的下一关键字(3b)被存储在节点\n200中,所以下一指针2字段824的值是200。因为第三层次(3a )的值存在于当前节点\n100中,所以下一指针3字段824不存储下一指针。可选择地,根据其他方面,即使下一值存在于当前节点中,下一指针字段824也可存储下一指针(例如,因为第三层次(3a )的下一值存在于当前节点100中,所以下一指针3字段824将存储值100)。在关键字大小字段\n832中,关键字大小1字段的值是4,关键字大小2字段的值是1,关键字大小3字段的值是\n2。在关键字字段834中,关键字1的字段值是3,关键字2的字段值是a,关键字3的字段值是 。\n[0060] 因为在内部节点中没有执行连续的关键字浏览,所以不需要保持存在于不同节点中的关键字之间的链接。因此,可以在内部节点的单元结构中清除包括在叶节点的单元结构中的上一指针和下一指针。与一般的多列B+树索引相同,内部节点可具有区分前缀或保持全部的关键字值的结构。\n[0061] 如上所述,即使节点前缀是已在上一节点的相邻关键字中用作前缀的高层次字段值,也可将节点前缀记录在当前节点中,以在当前节点中通报高层次字段值。节点前缀可以不被存储在存储有更低层次字段值的同一单元中,其可以配置为附加单元。\n[0062] 图9示出了根据本发明实施例的单元结构的示例。在图9中,图6所示的节点200的节点前缀“3,a”910的单元结构参照图8被示出。因为在节点200的节点前缀“3,a”910的单元结构中使用两个字段配置当前关键字,所以字段计数字段801的值是2。因为上一指针和下一指针的数量是0,所以上一计数字段802和下一计数字段803的值是0。关键字大小字段832的值是与“3,a”910的每个关键字大小值对应的1和2。关键字字段834的值是3和a。参照图8描述了每个值的单位。\n[0063] 图10描述了根据本发明实施例的用于索引搜索的UI。如图10所示,用户经由UI请求搜索期望的内容以接收服务。此时,使用根据本发明各方面提供的索引结构的操作(函数)包括find_key、find_next_entry、find_prev_entry、find_first_key、find_last_key、find_next_key、find_prev_key、find_upper_key、和find_down_key。当假设具有高优先权的聚类关键字(或关键字)的层次是1时,年层次是1,月层次是2,日层次是3。如图10中所述,每个字段包括关键字值和RID信息。用户可选择每个字段。\n[0064] 当用户经由UI在字段之间移动时,用户输入搜索请求。例如,当用户经由UI选择\n2005年5月(表示为“2005,5”字段1000)时,2005,5(第二层次)的值被输入,因此与关键字值对应的标识符被提取。如果存在若干个提取的标识符,则可返回字段1000的第一值,并且可将与字段的标识符对应的内容和内容的元数据提供给用户。因此,用户可经由UI直接指定将发现的关键字的层次(第二层次),从而基于指定的层次使用各种操作来搜索字段。\n[0065] 在下文中,将参照图10详细描述操作。find_key操作在叶节点中搜索与搜索的关键字匹配的条目(或字段),并返回标识符(即RID)。如果存在多个匹配的RID,则返回第一RID。然而,根据其他方面,应该理解,可返回另一RID,或者可返回所有匹配的RID。此时,当与传统技术不同,多列地配置索引时,可指定搜索的关键字的层次。在图10中,如果用户经由UI移动到“2005,5”字段1000,则将5711(a)作为RID返回。也就是说,“2005,\n5”字段1000包括作为更低层次的字段5和6,并且每个字段包括多个RID值。此时,可返回第一RID(即,5711(a))并且可将与发现的字段1000的标识符对应的内容或内容的元数据提供给用户。此外,可基于“2005,5”关键字(或字段)搜索随后执行的操作。\n[0066] find_next_entry操作搜索最近发现的条目的下一条目并返回关键字和标识符(如RID)。如果改变搜索的层次的关键字值,则在改变的字段中还返回最高层次号。如果由于在基于第二层次浏览条目时改变第一字段和第二字段而获得新的第二层次关键字,则返回层次号1。如果使用图10中的find_key操作发现“2005,5”,则当执行find_next_entry操作时,将5712(b)作为RID返回。\n[0067] find_prev_entry操作搜索最近发现的条目的上一条目并返回关键字和标识符(如RID)。如果改变搜索的层次的关键字值,则在改变的字段中还返回最高层次号。如果由于在基于第二层次浏览条目时改变第一字段和第二字段而获得新的第二层次关键字,则返回层次号1。如果使用图10中的find_key操作发现“2005,5”,则当执行find_prev_entry操作时,返回“2005,4”(即,新的关键字值)和5710(c)(即,相应的RID)。因为在基于第二层次发现条目时第二字段值从5改变到4,所以还返回层次号2。\n[0068] find_fist_key操作返回叶节点的第一关键字和具有相应的关键字的第一标识符(如RID)。此时,与传统技术不同,find_first_key操作可输入将被返回的关键字的层次i。随后将被执行的操作基于第i层次搜索关键字值。如果关于图10中的第二层次执行find_first_key操作,则find_first_key操作搜索“1993,1”并返回0001(d)。\n[0069] find_last_key操作返回叶节点的最后关键字和具有相应的关键字的最后标识符(如RID)。如果改变高层次字段值,则还返回最高层次号。如果在基于第三层次浏览值时改变第一层次字段值和第二层次字段值,则返回最高层次号1。此时,与传统技术不同,find_last_key操作可输入将被返回的关键字的层次i。随后将被执行的操作基于第i层次搜索关键字值。如果关于图10中的第二层次执行find_last_key操作,则find_last_key操作搜索“2006,12”并返回6220(e)。\n[0070] find_next_key操作搜索在叶节点中最近发现的关键字值的下一关键字值,并返回下一关键字值和标识符(如RID)。如果改变高层次字段值,则还返回最高层次号。如果在基于第三层次搜索值时改变第一层次字段值和第二层次字段值,则返回最高层次号1。此时,与传统技术不同,如果最近发现的关键字层次是i,则find_next_key操作可返回相应层次上的下一关键字。如果find_key操作搜索到图10中的“2005,5,5”,则当执行find_next_key操作时,返回新的关键字值“2005,5,6”和RID5720(f)。\n[0071] 如果正被搜索的关键字的层次是i,则当字段计数值等于或大于最大字段计数+1-i或者不存在将被发现的节点时,find_next_key操作完成搜索。通过执行read_key_header操作来获得下一计数值。如果下一计数值小于i,则下一关键字存在于当前节点中,因此从当前单元位置反向搜索当前节点的单元。如果下一计数值等于或大于i,则下一关键字存在于另一节点中。在这种情况下,find_next_key操作在由下一指针指示的节点中从第一单元反向搜索单元。\n[0072] find_prev_key操作在叶节点中搜索最近发现的关键字值的上一关键字值,并返回上一关键字值和标识符(如RID)。如果改变高层次字段值,则还返回最高层次号。如果在基于第三层次搜索值时改变第一层次字段值和第二层次字段值,则返回最高层次号1。此时,与传统技术不同,如果最近发现的关键字层次是i,则find_prev_key操作可返回相应层次上的上一关键字。如果find_key操作搜索到图10中的“2005,5,5”,则当执行find_prev_key操作时,返回新的关键字值“2005,4,6”和RID5706(g)。\n[0073] 如果正被搜索的关键字的层次是i,则当字段计数值等于或大于最大字段计数+1-i或者不存在将被发现的节点时,find_prev_key操作完成搜索。通过执行read_key_header操作来获得上一计数值。如果上一计数值小于i,则上一关键字存在于当前节点中,因此从当前单元位置前向搜索当前节点的单元。如果上一计数值等于或大于i,则上一关键字存在于另一节点中。在这种情况下,find_prev_key操作在由上一指针指示的节点中从最后单元到第一单元来搜索单元。\n[0074] 如果正被搜索的关键字的层次是i,则find_upper_key操作将搜索层次改变为i-1。随后将被执行的所有操作基于第(i-1)层次关键字被执行。此外,当i是1(因为当i是1时,当前层次是最高层次)或者字段计数大于(最大字段计数+1-i)(在这种情况下,最高层次关键字被包括在当前单元中)时,find_upper_key操作完成搜索。通过执行read_key_header操作来获得字段计数值。通过移动到上一单元在当前节点中执行搜索,直到满足搜索结束条件。如果在当前节点的第一条目中也没有发现关键字,则find_upper_key操作在节点前缀中搜索高层次关键字。\n[0075] 如果正被搜索的关键字的层次是i,则find_down_key操作返回第(i+1)层次关键字。随后将被执行的所有操作基于第(i+1)层次关键字被执行。此外,如果i等于最大字段计数(即,i是最低层次),则因为当前层次是最低层次,所以find_down_key操作不具有将被返回的低层次关键字。如果i不等于最大字段计数,则find_down_key操作在当前单元中搜索并返回低层次关键字值。\n[0076] read_key_header操作读取包括正被浏览的层次的关键字值的单元的头值。如果执行find_next_entry操作、find_prev_entry操作或find_upper_key操作,则最近发现的单元可不包括正被浏览的层次的关键字。也就是说,当正被搜索的关键字的层次是i并且搜索光标所位于的单元的字段计数是f时,产生f<最大字段计数+1-i的情况。此时,已经通报正被搜索的关键字值。因此,输入关键字值和搜索层次i,从而可通过执行find_key操作发现包括相应关键字的单元。此外,当f≥最大字段计数+1-i时,read_key_header操作读取当前单元中的第i信息。如果f<(最大字段计数+1-i),则read_key_header操作通过执行find_key操作读取与第i关键字对应的信息。\n[0077] 如上所述,根据本发明各方面的最优化索引搜索设备和方法提供使用索引的各种操作,从而容易地实现外部模块并增加存储空间的效率。此外,如果将数据聚类到单个层次,则本发明的各方面被设计为与传统B+树索引相同地操作,从而B+树索引或多列B+树索引可被应用于从一个层次到N个层次聚类的数据。\n[0078] 本发明的各方面也可实现为计算机可读记录介质上的计算机可读代码。此外,实现本发明的代码和代码段可由本发明所属领域的编程技术人员容易地解释。计算机可读记录介质为任何可存储其后能由计算机系统或计算机代码处理设备读取的数据的数据存储装置。所述计算机可读记录介质的例子包括:只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光学数据存储装置和以包括压缩源代码段和加密源代码段的载波实现的计算机数据信号(诸如通过互联网的数据传输),所述压缩源代码段和加密源代码段都包括有所述代码。所述计算机可读记录介质也可分布于网络连接的计算机系统上,以便所述计算机可读代码以分布方式被存储并被执行。\n[0079] 虽然已经表示和描述了本发明的一些实施例,但本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可以对这些实施例进行修改,本发明的范围由权利要求及其等同物限定。
法律信息
- 2014-01-08
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 200710192708.1
申请日: 2007.11.16
授权公告日: 2011.06.29
- 2011-06-29
- 2008-07-23
- 2008-05-28
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |