通过单次写入索引组织数据的系统和方法

文档序号:6651249阅读:236来源:国知局
专利名称:通过单次写入索引组织数据的系统和方法
技术领域
本发明一般涉及电子数据管理,并且尤其是电子数据的索引。
背景技术
由于关键记录(数据对象)越来越多地存储为电子格式,因此有必要将它们可靠地并且以防篡改的形式存储。而且,增长中的电子记录(例如,电子邮件,即时消息,药物开发日志,医疗记录等)的子集受到管理它们的长期保持和有效性的规定的约束。不符合应用的规定,在某些规则下可能导致严厉的处罚。在许多这样的规定中(例如,SEC规则17a-4)的关键要求是记录必须可靠地存储在非可擦除,非可重写存储器中,从而记录一旦被写入,就不能被改变或覆盖。这种存储器通常被称为WORM(单次写入多次读取)存储器,与能多次写入的可重写或WMRM(多次写入多次读取)存储器相对。
由于目前的大量记录,这些记录必须进一步被编索引(例如,通过文件名,通过内容等等),以允许能在日益期望的短响应时间内中检索到与查询相关的记录。该索引典型地存储在可重写存储器中,但是能改变存储在一个可重写存储器中的索引,以有效地删除或更改一个记录。例如,能够操作该索引,从而不能利用该索引定位一个给定的记录。
有一些在WORM存储器中存储索引的现有方法。例如,在一个大的记录集合已经被编索引(例如,当CD-R关上时)之后,用于传统WORM存储器(例如,CD-R和DVD-R)的索引(文件目录)被一次写入。在整个记录集合被加入之前,不提交该索引。一旦索引被写入,则新的记录不能被加入到索引中。因为记录是在一段时间中被加入的,该系统将创建多个索引,其使用了很多存储空间。更重要的是,查找一个特定的记录可能需要查找没有被索引的记录以及每一个索引。
其它技术包括,仅为已经改变的索引的部分创建新的更新过的副本。但是在索引已经被推测为提交到WORM存储器之后,如果索引的一部分能够被更改和重写,则索引能够被有效地更改,以隐藏或改变记录,并且使用WORM存储器的目的失败。一些人可能争辩索引的任何更新部分的较老的版本仍然存储在WORM存储器中某个位置,但是当存储的记录量巨大并且保持周期长,如通常的情况,验证索引的许多版本是不切实际的。
所需要的是一种组织大量和增长的记录集合以便进行快速检索的方式,从而一旦记录已经被插入到一个索引中,就不能以有效地隐藏或改变记录的方式更新该索引。

发明内容
根据本发明,提供了一种用于快速检索的用于组织数据对象的系统。该系统包括至少一个定义了数据扇区的数据存储介质。此外,该系统还包括至少一个在数据介质上的数据对象。而且,该系统还包括至少一个与至少一个数据对象相关的关键词(key)。而且,该系统还包括至少一个在数据存储介质上的单次写入索引,以管理至少一个数据对象。
根据本发明,提供了一种用于快速检索的用于组织数据对象的方法。该方法包括接收将存储在至少一个存储设备上的数据对象。此外,该方法还包括识别与接收的数据对象相关的至少一个关键词。此外,该方法还包括在存储设备中识别至少一个单次写入索引,其中单次写入索引用于管理与存储在存储设备上的数据相关的关键词。而且,该方法还包括判断关键词是否存在于单次写入索引中。而且,该方法还包括,如果关键词不在索引中,将关键词包括在单次写入索引中。


图1是以盘驱动器实现的存储设备的非限制性框图。
图2是根据本发明一个示范实施例的涉及单次写入索引的逻辑流程图。
图3是根据本发明一个示范实施例的涉及将一个关键词加入到单次写入索引中的逻辑流程图。
图4是根据本发明的示范索引的框图。
图5是根据本发明一个示范实施例的涉及在索引中检测关键词的逻辑流程图。
图6是根据本发明一个示范实施例的涉及将一个关键词加入索引的逻辑流程图。
图7是根据本发明一个示范实施例的表示用于通过一个索引定位对象y的路径的框图。
具体实施例方式
本发明将主要描述用于快速检索的用于组织数据对象的系统和方法。在下面的描述中,为了解释说明的目的,阐述了大量具体细节来提供一个对本发明的整体理解。但是显然,对于熟知本技术的人员将可以脱离这些特定细节而实现本发明。
那些熟知本技术的人员将认识到例如数据处理系统的设备,包括CPU,存储器,I/O,程序存储器,互联总线和其它适当的元件,可以被编程或者设计用来实现本发明。这样的系统将包括用于执行本发明的操作的适当程序装置。
一种制造物品,例如预记录的盘或者其它类似的计算机程序产品,用于与数据处理系统一起使用,将包括存储介质和其中记录的程序装置,用于指示数据处理系统方便地实现本发明的方法。这样的设备和制造物品也将落入本发明的范围和精神实质。
首先参见图1,非限制性的数据存储设备被表示为以盘驱动器10实现。在图2中表示的该非限制性设备10具有外壳11,保持盘驱动控制器12,其能够包括和/或由微控制器实现。控制器12可以访问在计算机程序设备或产品中的电子数据存储,例如但是不限于微代码存储器14,其可以由固态存储设备实现。微代码存储器14能够存储实现逻辑的微代码。
控制器12控制读/写机制16,其包括一个或多个用于将数据写入到一个或多个盘18上的头。驱动器10的非限制性实施方式包括多个头和多个盘18,并且每一个头与一个相应的读元件和一个相应的写元件相关,读元件用于读取盘18上的数据,写元件用于将数据写入到盘18中。盘18可以包括多个数据扇区。更一般地,如下面所使用的,术语“扇区”指数据单元,其被写入存储设备,其可以是固定大小。存储设备能够允许随机访问任何扇区。
如果要求,控制器12也可以通过内部总线22与一个或多个固态存储器20通信,例如,动态随机存取存储器(DRAM)设备或闪存设备。根据本领域中公知的原理,控制器12也能通过主机接口模块26与外部主计算机24通信。
图2是根据本发明一个示范实施例的涉及单次写入索引的逻辑流程图28。方法28在块30开始。
在块32中,识别将被存储在数据存储设备10中的数据对象(例如,文件,对象,数据库记录)。
在块34中,与数据对象相关的关键词(例如,名称)被识别。为了清楚地描述本发明,我们假设存储在该存储设备10中的每一个数据对象都将被索引。我们进一步假设每一个被索引的数据对象在索引中具有一个条目,并且该索引条目包括识别数据对象的关键词和指向数据对象的指针。
在块36中,存储设备10中的单次写入索引被识别,用以组织数据对象用于快速检索。
在块38中,单次写入索引被检测,以判断关键词是否已经存在于索引中。如果存在,在块40返回一个关键词已经存在于索引中的指示。否则,在块42将该关键词加入到索引中,并且在块44返回成功。
方法28在块46结束。
单次写入索引(块36)可以从小的数据对象集合(例如,包括几千个对象)扩展到非常大的数据对象集合(例如,包括数十亿的对象甚至更多)。将被索引的对象集合的最大或优选最大大小预先没有指定。索引简单地增加以适应增加的对象。
图3是根据本发明一个示范实施例的涉及将一个关键词加入到这样的索引中的逻辑流程图。在块50方法48开始。
在块52,索引的元数据条目被读取,并且在块54被使用以判断要加入的关键词应当存储在哪里。
在块56,创建将被加入的关键词的索引条目。
在块58,所创建的索引条目永久地存储在块54所判断的位置。该索引条目在下述意义上被永久地存储,至少对于相应的数据对象的生存周期,索引条目的内容不更新,并且索引条目不重新定位至另一个存储位置。
在块60,创建元数据条目,以允许顺序定位创建的索引条目。
在块62,所创建的元数据条目在下述的意义上永久地存储,至少对于相应的索引条目的生存周期,所创建的元数据条目内容不更新,并且元数据条目不重新定位至另一个存储位置。
方法48在块64结束。
如上所述,通过创建索引和元数据条目,从而它们的内容以及存储位置为固定的,在关键词插入到索引中之后,在其中能够找到包括一个给定的关键词的索引条目的可能的存储位置的集合是固定的。该索引不能以索引中的对象能够被隐藏或者有效改变的方式被更新。
为了在索引中查找一个关键词,元数据条目首先被读出,以判断包括被识别的关键词的索引条目可能的存储位置。然后,搜索可能的存储位置,以查找包括该关键词的索引条目。如果没有找到这样的索引条目,将返回一条指示该关键词不在索引中的消息。否则,返回成功。
图4是根据本发明的单次写入索引66的示范实施例的框图。具有i个哈希表(HT)76,每一个具有大小Si72,以及每一个通过哈希函数hi74索引。关键词存储在哈希表76中。元数据68记录用于每一个哈希表的哈希函数,以及每一个哈希表存储的位置。
在一个实施例中,一系列的哈希表通常在大小上增加,意思就是,对于多数部分,Si>=Si-1。在一个优选实施例中,哈希表的大小指数增加,从而对于i的多数数值,对于一些常数k>1,Si约等于k×Si-1。而在其它实施例中,hi74为相当独立的,意思就是,如果hj(x)=hj(y),对于j≠i以及x≠y,不太可能hi(x)=hi(y)。
图5是根据本发明一个示范实施例的涉及在索引66中检测关键词的逻辑流程图。方法78在块80开始。
在块82,选择在索引66中的第一哈希表76。
在块84,进行一个判断,判断识别的关键词是否存在于所选择的哈希表76中。每一个哈希表76由多个哈希桶(bucket)70构成。利如,为了判断关键词k是否存在于第j个哈希表HTj中,计算hj(k),并且作出一个判断,判断k是否存在于HTj的第hj(k)个哈希桶中。
在块84中,如果判断出关键词存在于所选择的哈希表76中,则返回指示该关键词存在于该索引中的一条消息。
在块84中,如果判断出关键词不存在于所选择的哈希表76中,在块88所作出一个判断,判断是否存在额外的哈希表76。如果存在,则在块90,识别和选择下一个哈希表76。该处理重复进行,直到到达最后一个哈希表76。
返回到块88,如果作出判断,判断出没有额外的哈希表76,则关键词不存在于索引66中,并且在块92返回指示该关键词不存在于索引中的一条消息。
方法78在块94结束。
在一个实施例中,在块82中选择一系列哈希表中的第一个哈希表,即HT0,并且在块90中选择一系列哈希表中的下一个哈希表。在另一个实施例中,在块82中选择一系列哈希表中的最后一个哈希表,即HTi,并且在块90中选择一系列哈希表中的前一个哈希表。
而在另一个实施例中,在块88进行一个判断,判断在所选择的哈希表中是否有足够的空间来存储识别的关键词。如果判断为存在足够的空间,则关键词在索引66中不存在于索引66中,并且在块92返回一条指示关键词不存在于索引中的消息。如果判断为不存在足够的空间,则作出判断,判断是否存在额外的哈希表76。
图6是根据本发明一个示范实施例的涉及将一个关键词加入索引66的逻辑流程图。方法96在块98开始。
在块100中,选择在索引66中的第一哈希表76。
在块102中,进行一个判断,判断在选择的哈希表76中是否存在足够的空间,以加入识别的关键词。例如,为了判断在第j个哈希表HTj中是否存在足够的空间以加入一个关键词k,计算hj(k)并且进行一个判断,判断在HTj的第hj(k)个哈希桶中是否存在足够的空间,以包含k。
在块104,如果在所选择的哈希表中存在足够的空间以加入该关键词,该关键词被加入。
如果在所选择的哈希表中没有足够的空间来加入该关键词,则在块106进行一个判断,判断是否有额外的哈希表76。如果有,则在块108识别并选择下一个哈希表76。重复进行该处理,直到到达最后一个哈希表76。
返回到块106,如果作出一个判断,判断出没有额外的哈希表76,则在块110创建一个新的哈希表HTi+1,并且在块112将关键词加入新的哈希表。例如,为了将关键词k加入第j个哈希表HTj,计算hj(k)并且将k插入到HTj的第hj(k)个哈希桶中。创建新的哈希表包括将新的信息加入到索引66的元数据68中。
方法96在块114结束。
通过按存储的对象的数目的需要增加哈希表,单次写入索引66自动扩展。当系统创建哈希表时,最好的是该哈希表比上一个创建的表大恒定的倍数。这保证了查找以及插入操作的复杂度在索引中的对象的数目方面是对数的。
在一个实施例中,索引66存储在与数据对象不同的存储设备中。在另一个实施例中,索引66存储在WORM设备中,以保证当该部分被存储时,没有索引部分能够被改变。在优选实施例中,索引66和数据对象都被存储在WORM存储设备中。
注意到,一旦数据对象已经被索引,本发明提供的通过索引以定位数据对象的路径是不变的。例如,图7为表示对于对象y118的路径122的框图116。沿着该路径检查的哈希桶120通过与请求的数据对象相关的关键词ky以及不同级别上的哈希函数判断。在表被创建的时刻,哈希表的哈希函数是固定的。因此,总是检查相同的哈希桶以获得该对象。一旦与存储的数据相关的条目已经被写入,该索引条目也是不变的。这保证了一旦对象已经被索引,通过索引以定位该对象的路径是不可变的。换句话说,该索引不能以这样的方式被更新索引中的一个对象能够被隐藏或有效地改变。
哈希函数在优选实施例中,哈希函数,h1,h2,...,hi,74在很大程度上是独立的,从而如果关键词中的一些在一个级别上聚集,在下一个级别中它们将被分散。有多种方式可以选择这样的哈希函数74。在一个优选实施例中,使用通用的哈希法。
通用的哈希法包括从一个精心设计的函数类中随机选择一个哈希函数74。例如,令Φ为一个有限的哈希函数的集合,其映射一个给定的关键词域U到一个范围{0,1,2,...,m-1}。如果对于每一对不同的关键词x,y∈U,h(x)=h(y)的哈希函数h的数目正好等于|Φ|/m,则Φ被称为通用的。利用从Φ中随机选择的函数,x和y之间冲突(即,h(x)=h(y))的几率为1/m,其中x≠y。
例如,令m为大于255的质数。假设我们将关键词x分解为r字节,从而x=(x1,x2,...,xr)。令a=(a1,a2,...,ar)表示从集合{0,1,...,m-1}随机选择的r个元素的一个序列。哈希函数ha(x)=Σrk=1akxk模m的集合形成一个哈希函数的通用集合。
当系统创建在j级别上的大小为sj>255的新哈希表时,其通过从集合{0,1,...,sj}中随机选择a1,a2,...,ar从集合{ha(x)=Σrk=1akxk模sj}中随机选择哈希函数hj。其中ak是与哈希表永久相关联的,并且被存储为索引66的元数据68的一部分。在一个优选实施例中,元数据存储在WORM存储器中,从而元数据不能被修改。
哈希表优化有很多对于哈希表的已知的优化,例如开放寻址,双重哈希法等等。在本发明中,通过使用一个或多个这些方法,能够分别优化每一级别的哈希表。在一个优选实施例中,每一级别的哈希表使用线性寻址,从而关键词能够在哈希桶或者任何预定数目的随后的桶中找到。当哈希表被检测时,哈希桶以及预定数目的随后的桶从存储器系统中被顺序读取。这利用了这样一个事实顺序I/O远比随机I/O更加有效。在其它的实施例中,每一个哈希表被双重哈希。两个哈希函数中的每一个从哈希函数的通用集合随机选择。
复制关键词注意,到目前为止的说明书中,假设复制关键词是在索引中不允许的。显而易见地,在可选的实施例中允许复制关键词。在可选的实施例中,当向索引中插入一个关键词时,不需要进行该关键词是否已经存在的判断。取而代之的是,定位插入该关键词的空间,然后该关键词被插入。为了找到所有的可能发生的关键词,系统检测所有的哈希表寻找该关键词。在其它实施例中,系统检测一系列哈希表,直到达到具有足够的令关键词插入的空间的哈希表。
关键词的删除在一个优选实施例中,不允许从索引中删除关键词。但是,在可选的实施例中,在预定的时间段之后,能够删除对象,并且在对象已经被删除之后,相应的关键词能够从索引中删除。
在一个实施例中,索引存储在存储器中,该存储器确保数据不可改变,直到终止时间(日期),该终止时间通常在数据被写入时指定。在这样的系统中,对于包含索引条目的存储单元(例如,扇区,块,对象,文件)的该终止时间被设置为相应对象的最近的终止日期。
在对象已经被删除之后,该系统检查索引以查看相应的关键词是否存储在包含生存对象的至少一个关键词的存储单元中。如果是这样,对应于该被删除对象的关键词现在还不能被删除。否则,例如通过利用标准模式覆盖的方式,系统删除存储单元中所有的关键词。
这样的系统的一种优化是避免在一个包含具有很不相同的剩余生存期的对象的关键词的存储单元中加入一个关键词。例如,仅当相应的对象具有在存储单元中具有关键词的其它对象的剩余生存期的一个月内的剩余生存期时,系统可以向给定的存储单元加入一个关键词。换句话说,一个对象的索引条目被存储在由对象的关键词以及对象的终止日期确定的位置。
注意到根据下面的存储器,存储单元可以在其终止日期之后使用。如果包含哈希表删除部分的存储单元能够被重新使用,则系统将不能使用上述的优化方法。例如,一旦系统到达一个哈希表,其不包含k并且具有足够的包含k的空间,将不能推断关键词k不存在于索引中。该系统将必须检查所有的哈希表。
明显地,所公开的本发明能够用于组织各种对象,通过各种关键词用于快速检索。实例包括文件系统目录,其允许通过文件名定位文件,允许根据一些特定字段或字段组合的数值检索记录的数据库索引,以及整个文本索引,其允许找到包含一些特定词语或短语的文档。
因此,已经公开了用于组织数据对象以便快速检索的系统和方法。尽管已经参照了特定具体实施例描述了本发明,显然,可以对这些实施例进行各种更改和改变,而不脱离本发明的精神实质和范围。因此,说明书和附图用于说明的目的而不是限制。
权利要求
1.一种用于组织数据对象以便进行快速检索的系统,包括至少一个定义了数据扇区的数据存储介质;在数据存储介质上的至少一个数据对象;与所述至少一个数据对象相关联的至少一个关键词;以及在数据存储介质上的至少一个单次写入索引,用来管理所述至少一个数据对象。
2.如权利要求1的系统,其中,其上存储了单次写入索引的数据存储介质是WORM存储介质。
3.如权利要求1的系统,其中所述索引包括至少一个哈希表,其中所述至少一个哈希表用于存储所述至少一个关键词。
4.如权利要求3的系统,其中所述至少一个哈希表包括一系列哈希表,该一系列哈希表在大小上一般是增加的。
5.如权利要求4的系统,其中所述的一系列哈希表的大小基本上以指数的方式增加。
6.如权利要求3的系统,其中在至少一个哈希表中存储关键词的操作包括判断在第一个哈希表中是否存在足够的空间,以及如果存在,则在第一个哈希表中存储该关键词,否则在第二个哈希表中存储该关键词,以及如果不存在第二个哈希表,则创建一个新的哈希表并在其中存储该关键词。
7.如权利要求4的系统,其中在至少一个哈希表中存储关键词的操作包括判断在所述一系列哈希表的第一个哈希表中是否存在足够的空间,以及如果存在,则在该哈希表中存储该关键词,否则在所述一系列哈希表中的下一个哈希表中存储该关键词,以及如果在所述一系列哈希表中不存在下一个哈希表,则创建一个新的哈希表作为所述的一系列哈希表中的下一个哈希表并在其中存储该关键词。
8.如权利要求3的系统,其中检索数据对象的操作包括,检测第一个哈希表,以判断数据对象的关键词是否存在于第一个哈希表中,并且如果不存在,则检测第二个哈希表,以判断数据对象的关键词是否存在于第二个哈希表中,并且如果不存在第二个哈希表,则返回数据对象不存在于系统中的指示。
9.如权利要求8的系统,其中检测哈希表以判断数据对象的关键词是否存在于哈希表中的操作进一步包括,判断在该哈希表中是否具有足够的空间用于存储该关键词,以及如果数据对象的关键词不存在于哈希表中,并且哈希表中具有足够的空间用于存储该关键词,则返回数据对象不存在于系统中的指示。
10.如权利要求4的系统,其中检索数据对象的操作包括,检测所述一系列哈希表中的第一个哈希表以判断数据对象的关键词是否存在于所述一系列哈希表的第一个哈希表中,并且如果不存在,则检测所述一系列哈希表中的下一个哈希表,以判断数据对象的关键词是否存在于所述一系列哈希表中的下一个哈希表中,并且如果所述一系列哈希表中不存在下一个哈希表,则返回数据对象不存在于系统中的指示。
11.如权利要求10的系统,其中检测哈希表以判断数据对象的关键词是否存在于哈希表中的操作进一步包括,判断在哈希表中是否具有足够的空间用于存储该关键词,以及如果数据对象的关键词不存在于哈希表中,并且哈希表中具有足够的空间用于存储该关键词,则返回数据对象不存在于系统中的指示。
12.如权利要求4的系统,其中检索数据对象的操作包括检测所述一系列哈希表中的最后一个哈希表以判断数据对象的关键词是否存在于所述一系列哈希表的最后一个哈希表中,并且如果不存在,则检测所述一系列哈希表中的前一个哈希表,以判断数据对象的关键词是否存在于所述一系列哈希表中的前一个哈希表中,并且如果所述一系列哈希表中不存在前一个哈希表,则返回数据对象不存在于系统中的指示。
13.如权利要求3的系统,其中单次写入索引可以从小的数据对象集合扩展为非常大的数据对象的集合,并且其中单次写入索引包括索引条目,所述索引条目包含固定内容并且具有永久的存储位置。
14.如权利要求13的系统,其中单次写入索引进一步包括元数据条目,其包含固定的内容并且具有永久的存储位置,这样的元数据条目被用于定位索引条目。
15.如权利要求13的系统,其中,在关键词已经在索引中存储之后,在索引中能够找到包含给定关键词的索引条目的可能的存储位置是固定的。
16.如权利要求13的系统,其中用于存储索引条目的可能的位置依赖于相应的数据对象的终止日期。
17.一种用于组织数据对象以便进行快速检索的方法,包括接收将被存储在至少一个存储设备中的数据对象;识别至少一个与所接收的数据对象相关的关键词;在存储器设备中识别至少一个单次写入索引,其中单次写入索引用于管理与存储在存储设备中的数据对象相关的关键词;判断关键词是否存在于单次写入索引中;以及如果关键词不存在于索引中,则将该关键词包括在单次写入索引中。
18.如权利要求17的方法,其中存储单次写入索引的存储设备是WORM存储介质。
19.如权利要求17的方法,其中索引包括至少一个哈希表,其中所述至少一个哈希表用于存储至少一个关键词。
20.如权利要求19的方法,其中所述至少一个哈希表包括一系列哈希表,该一系列哈希表在大小上一般是增加的。
21.如权利要求20的方法,其中所述一系列哈希表的大小基本上以指数的方式增加。
22.如权利要求19的方法,其中在所述至少一个哈希表中存储关键词的步骤包括判断在第一个哈希表中是否存在足够的空间,以及如果存在,则在第一个哈希表中存储该关键词,否则在第二个哈希表中存储该关键词,以及如果不存在第二个哈希表,则创建一个新的哈希表并在其中存储该关键词。
23.如权利要求20的方法,其中在所述至少一个哈希表中存储关键词的步骤包括判断在所述一系列哈希表的第一个哈希表中是否存在足够的空间,以及如果存在,则在该哈希表中存储该关键词,否则在所述一系列哈希表中的下一个哈希表中存储该关键词,以及如果在所述一系列哈希表中不存在下一个哈希表,则创建一个新的哈希表作为所述一系列哈希表中的下一个哈希表并在其中存储该关键词。
24.如权利要求19的方法,其中检索数据对象的步骤包括,检测第一个哈希表,以判断数据对象的关键词是否存在于第一个哈希表中,并且如果不存在,则检测第二个哈希表,以判断数据对象的关键词是否存在于第二个哈希表中,并且如果不存在第二个哈希表,则返回数据对象不存在于系统中的指示。
25.如权利要求24的方法,其中检测哈希表以判断数据对象的关键词是否存在于哈希表中的步骤进一步包括,判断在哈希表中是否具有足够的空间用于存储该关键词,以及如果数据对象的关键词不存在于哈希表中,并且哈希表中具有足够的空间用于存储该关键词,则返回数据对象不存在于系统中的指示。
26.如权利要求20的方法,其中检索数据对象的步骤包括,检测所述一系列哈希表中的第一个哈希表以判断数据对象的关键词是否存在于所述一系列哈希表的第一个哈希表中,并且如果不存在,则检测所述一系列哈希表中的下一个哈希表,以判断数据对象的关键词是否存在于所述一系列哈希表中的下一个哈希表中,并且如果所述一系列哈希表中不存在下一个哈希表,则返回数据对象不存在于系统中的指示。
27.如权利要求26的方法,其中检测哈希表以判断数据对象的关键词是否存在于哈希表中的步骤进一步包括,判断在哈希表中是否具有足够的空间用于存储该关键词,以及如果数据对象的关键词不存在于哈希表中,并且哈希表中具有足够的空间用于存储该关键词,则返回数据对象不存在于系统中的指示。
28.如权利要求20的方法,其中检索数据对象的步骤包括,检测所述一系列哈希表中的最后一个哈希表以判断数据对象的关键词是否存在于所述一系列哈希表的最后一个哈希表中,如果不存在,则检测所述一系列哈希表中的前一个哈希表,以判断数据对象的一个关键词是否存在于所述一系列哈希表的前一个哈希表中,并且如果在所述一系列哈希表中不存在前一个哈希表,则返回数据对象不存在于系统中的指示。
29.如权利要求19的方法,其中单次写入索引可以从小的数据对象集合扩展为非常大的数据对象的集合,并且其中将关键词包括在单次写入索引中的步骤包括创建包含固定内容的索引条目,并且将该索引条目存储在永久的存储位置。
30.如权利要求29的方法,其中将关键词包括在单次写入索引中的步骤进一步包括创建包含固定内容的元数据条目,并且将该元数据条目存储在永久的存储位置,这样的元数据条目被用于定位索引条目。
31.如权利要求29的方法,其中将关键词包括在单次写入索引中的步骤永久地建立能够找到包含该关键词的索引条目的可能的存储位置。
32.如权利要求29的方法,其中在永久存储位置存储索引条目的步骤包括,在由相应的数据对象的终止日期确定的永久存储位置存储索引条目。
全文摘要
根据本发明,提供了用于组织数据对象以便进行快速检索的系统。该系统包括至少一个定义了数据扇区的数据存储介质。此外,该系统还包括至少一个在数据存储介质上的数据对象。而且,该系统还包括与至少一个数据对象相关的至少一个关键词。而且,该系统还包括至少一个在数据存储介质上的单次写入索引,以管理至少一个数据对象。
文档编号G06F17/30GK1790330SQ20051012879
公开日2006年6月21日 申请日期2005年12月2日 优先权日2004年12月15日
发明者许为善, 翁绍基 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1