用于处理数据库的方法和数据载体的制作方法

文档序号:6755745阅读:208来源:国知局
专利名称:用于处理数据库的方法和数据载体的制作方法
技术领域
本发明涉及光记录领域,更具体地说,涉及在由光记录介质造成的限制条件下维护包括元数据的数据库。
背景技术
在相关领域中人们都知道术语元数据表示关于数据的数据。构造元数据,并且将它们存储在数据库中。在将来的多媒体应用中,元数据可能具有非常大的尺寸并且经常变化;可能将它们以及与它们相关的数据一起存储在可写光数据载体上。这种介质的仅仅允许对于每个数据扇区进行有限数量的重写循环的情况妨碍了在可写光介质上的“实时的”数据库,即经常变化的存储。对于数据扇区的太多写循环导致扇区的恶化。因此产生了设计适应于有限重写循环环境的数据库管理系统的问题。

发明内容
通过一种用于修改数据库文件的方法在本发明中解决了上述问题和其他问题,该方法包括步骤在数据库文件中,分别保留预定尺寸的至少一个区域以及专门用于将至少一种类型的数据记录写到其上的位置;在数据库文件中,将最后被写入数据记录的、在所述区域内的段指示为最后写的段;以及在要将特定类型的数据记录写入数据库时,以所述的写使用专门用于该特定类型的区域内的、在所述最后写的段之后的随后的可获得段的方式来确保写的分布。
对于此,有利地,所述段首先是在连续的顺序中被写入数据库区域。之后,当已经写了数据库区域的最后段时,下一个写操作将再次回绕(wraparound)到数据库区域的开始,并且将写到任何未使用的或者在那里发现的无效的段。将不会改变或者覆写有效段,即包括有效数据的段。只能将它们无效。只能将改变的内容写到写就绪的随后段之一。所以,即使第二次或者连续通过数据库区域,也尽可能地保持顺序地写,因此尽可能确保写的分布。
根据本发明的另一个方面,修改数据库文件中的特定类型的数据记录包括步骤从关联的数据库区域读出数据记录;修改所读的数据记录;获得第一写地址信息,其指示该特定类型的数据记录最后被写入的、在该区域内的段;作为确保写的分布的一部分,转发第一写地址信息,从而其指示在包括未使用的空间的区域内的下一个段;以及将修改的数据记录写到由第一写地址信息所指示的段。
数据库可以包括具有几个控制块的控制区域。通常,只有一个或多个连续段的这些控制块中的一个是有效的。这样的控制块通常是频繁变化的对象,并且可以包括关于在有效负荷区域中的段和文档的有效性以及在数据库中的索引区域中的索引的信息。至少当数据库内容已经变化时在弹出数据载体之前,必须并且应该将新的控制块写到控制区域中的随后的段中。这使得对于控制块的写或重写操作的数量分散到该控制区域中所有的段。当打开未知数据载体时,因为不可能将其永久变化的段地址存储在数据载体上的固定位置处,所以必须通过检查所附的版本号码来发现一个并且唯一的有效控制块。
根据本发明的这个方面,从包括控制区域的数据库文件中删除有效负荷数据记录包括下面步骤从控制区域中读出包括与要被删除的有效负荷数据记录关联的信息的控制块;在所读控制块中将要被删除的有效负荷数据记录标记为删除的,从而获得修改过的控制块;获得指示在控制区域内、控制块最后被写入的段的写地址信息;作为确保写的分布的一部分,转发写地址信息,从而其指示在包含未使用的空间的控制区域内的下一个段;以及将修改过的控制块写到由发送的写地址信息所指示的段。
根据本发明的另一个方面,确保写的分布包括子步骤增加写地址信息直到其指示在包含了未使用的空间的最后写的段之后的下一个段;以及在所述增加已经导致写地址信息指示段超过了该区域的结尾的情况中,将写地址信息复位到所述区域的开始。这样的贡献在于即使第二次或者连续通过数据库区域,也尽可能地保持顺序地写,因此尽可能地确保写的分布。而且,在数据库创建的时候将区域定义得越大,这种“回绕”发生得越少;因此,在否则不变化的应用中,在区域的尺寸和在该区域内的段的重写的平均数量之间存在反比关系。
本发明涉及普通的数据库格式以及涉及数据载体写策略,其有利地确保对于每个数据扇区的重写操作的数量尽可能的平均。以这种方法,避免了数据载体的特定扇区的恶化。通过适应于如重写循环的有限次数、与硬盘相比相对高的寻道时间的光数据载体的特殊特征来区别本发明的系统。对于某些介质,假设大约1000次的重写循环是现实的,考虑到使用中的重写策略这是一个很高的数字并且在一般使用情况中不会达到。


将本发明的示例实施方式在附图中示出并且在下面的描述中更详细地说明。
附图中图1示出了根据本发明的区域概念的例子;图2示出了根据本发明进行管理的、访问单个数据库的几个并发搜索操作的时序图;图3示出了根据本发明的数据库文件的低级分段;图4示出了带有强调的数据库头部的数据库文件;图5示出了在根据本发明的数据库文件内的控制区域,以及其结构;图6示出了在根据本发明的数据库文件内的索引区域,以及其结构;图7示出了在根据本发明的数据库文件内的有效负荷区域,以及其结构;图8示出了说明根据本发明的文档写策略的段内容;图9示出了说明根据本发明的文档编辑和删除策略的段内容;和图10定性地示出了说明根据本发明的有效负荷段写策略的段内容。
具体实施例方式
本发明的实施方式使用数据库的可获得存储空间的预分配的连续区域。根据数据载体的文件系统,这可以是简单的文件或者分区。对于它的唯一要求是以段进行组织并且具有随机读写存取。
除了第一段包括如所有区域的尺寸和段尺寸以及版本的静态数据库信息之外,将DBFile的所有其他段分组为几个截然不同的数据库区域,如控制区域、索引区域、有效负荷区域。每个区域的尺寸根据应用而不同并且在DBFile创建的时候进行指定。可以有利地将DBFile的每个区域组织在恒定尺寸的段中,其应该是ECC块尺寸的合理倍数。纠错码或ECC确定在数据载体上最小的可读块。因此还可以有利地将段边界与ECC块边界对准。可以存在其中有利地在每个区域内使用恒定段尺寸但是在不同区域分别使用不同段尺寸的应用。
将也被表示为文档或记录的有效负荷数据存储在有效负荷区域。在这个区域中的段可以存储一个或多个文档。由于文档的尺寸或者由于使用在几乎整个段中最后的空闲空间,所以文档可以跨越一个或者多个段。仅仅完整的文档才被添加、检索、或者无效/“移去(remove)”。“移去”的文档不是真的在数据载体上被移去了,因为这样会导致对该段额外的写存取。相反地,在控制块中将它们无效。可以将段中任何未使用的部分保持不使用直到(例如)完全没有使用的段的数量变少为止。然后作为一种无用存储空间的收集,可以有利地收集在部分无效的段中的剩余文档并且将它们放入新段。以这种方式,旧段对于新文档将会变得可以使用。
图1示出了对于这种写策略,将根据本发明的数据库分为存储空间12上的不同区域11,其进行连续写操作并且只有已经写了该区域的所有扇区时才将其重写。即使同时将某些扇区标为未使用,也不立即使用它们,而只是在已经使用了该区域11的所有其他未使用的扇区13之后才使用它们。在绕一圈之后,以如上述相同的方式来处理所有空闲的扇区。以这种方式,可以实现每个扇区基本相等并且较低数量的重写循环。
必须注意,尽管将本发明的系统适应于光数据载体的具体特征,但是还可以在不产生任何缺陷的情况下将其用于硬盘存储。
图2示出了执行平行搜索操作的方法。只要任何搜索操作22、23、24、25、26是有效的,则单个搜索过程21就在运行,该搜索过程以文档的物理顺序永久地和循环地读出29数据库中的所有文档1,...,z,并且依次对于每个文档调用所有有效搜索操作的搜索处理器一次。开始搜索过程或者加入已经正在运行的搜索过程的每个新搜索操作将其获得的第一个文档的位置进行记忆,并且只有在绕一圈之后已经再次到达相同或者随后的文档之后才终止其活动。当号码27、28的有效搜索操作回到0时,即当不存在其他的有效搜索操作时,搜索过程21终止。用这种方法,将用于服务所有搜索操作的数据载体的存取数量最小化,并且,由于以物理顺序遍历文档,所以也将在连续的文档读操作之间所涉及的跳跃次数最小化。
总之,相对于数据库文件内的有效负荷的物理顺序,将搜索操作最小化。甚至多个搜索操作的并行执行也是可能的。这使得能够进行多用户应用。就所有扇区的重写循环的非常有限并且几乎相等的数量来说,这种隐含的文件结构确保了光记录介质的最佳性能。
纠错代码(ECC)块是在光数据载体上可以读写的最小段。将数据库文件有利地设计为占用包括这些ECC块的一个连续范围的一个区域,并且组织为在有关文件系统之下的一个文件。在数据载体上不需要其他文件。由本发明的系统来管理这个数据库文件的内部,不依靠特定的文件系统特点来支持本发明的重写策略。通过这种设计,可以确定并且控制所存储数据的碎片。可以将数据库文件的尺寸设置为默认值并且可以在必要的时候进行调节。数据库文件应该足够大以避免进行任何复杂操作的需要,否则在最坏的情况中可能需要将数据库完全重组。在另一方面,在当其他应用在数据库文件之外在数据载体上需要更多的空间的情况中,还存在减少数据库大小的选择。
图3示出了在其最低层次上,将数据库文件31分段为恒定尺寸的段32。段尺寸可以有利地是ECC块尺寸的整数倍。段尺寸必须在数据库文件创建的时候定义并且在数据库的生命期期间不能改变。改变段尺寸的唯一方法是执行所有文档的完全转换,从当前数据库文件转换到新的、确定了适当尺寸的数据库文件。
由于数据载体的重写循环的有限数量,所以存在不能改变段的规则。换句话说,将永远不能对段进行读、修改然后存储回数据载体上的相同位置。相反地,只可以将段全部地或者部分地无效。变化的内容必须在其原始位置处被无效然后必须被写到写就绪的、通常是不同位置的随后段上。当将文档加入到数据库文件时,可以将段写入-高速缓存直到完全使用了它们的容量为止。
图4示出了被分组为连续段的区域41、42、43、44的段。这些区域之一包括仅仅一个段并且用于数据库头部41,其包括在数据库的生命期期间不变化的该数据库的静态信息。根据在数据库文件中它们的位置以环形顺序(circular order)使用在随后区域42、43、44中的段,以实现在每个区域内的段的几乎相等数量的重写循环。该数据库头部可以包括下面信息·开始代码,用于数据库文件的方便标识·版本号码·段尺寸·控制区域尺寸
·索引区域尺寸·有效负荷区域尺寸通常在数据库文件的生命期中仅仅写入头部段41一次。只有以下面方法重组数据库时才必须改变头部段41改变数据库头部字段之一,例如改变段的尺寸、区域的尺寸或者内部数据格式。这可以在更新相关规范时发生。
在某些情况中,有利地使用在独立控制区域42中的控制块,如图5中所示。考虑数据库有效负荷的段包括几个文档,并且必须将这些文档之一删除的情况。由于不能对段进行改变的规则,所以存在两种方法来管理这种删除操作。或者整个段的内容都进行读、修改、然后重写到写就绪的随后段,或者必须使用某种控制数据,并且必须将这种控制数据与有效负荷数据分开保存。然后控制数据可以在原始段中将删除的文档标记为无效数据。第一种方法可能导致较少碎片的数据库,但是在例如该段中的最后的文档跨越多于一个段的情况中,所有这些段都必须以与第一段相同的方式被读、修改和重写。因此,有利地采用提高数据库的性能的第二种方法。因为在将整个段都无效之前所需要的控制数据可以变化几次,所以将控制数据存储到控制区域42。控制区域包括一个或多个控制块53并且适应于频繁地变化。
控制块53是用于存储关于包含有效负荷或者索引的段的可能变化信息的容器。当打开数据库时通常将控制块数据被载入到存储器,并且可以一直保存在存储器中直到关闭数据库为止。只有在控制块已经变化的情况下才需要将它写回数据载体。为了安全原因,可以在数据载体上多次存储变化的控制块以提高弹性度防止在系统发生故障的情况时丢失数据。可以在控制块中存储关于数据库的下面信息·头部54·对在索引和有效负荷区域中最后被写的段的引用·用于有效负荷和索引段的有效性标记·索引控制数据55,如关于可获得并且有效的索引的信息·有效负荷控制数据56,如有效负荷段中用于文档的有效性标记,或者象指示第一部分或者部分号码的标记的、关于分割文档的信息。
图5还示出,为了避免将控制块53写到数据载体的相同位置,将该控制块的每个新版本写到控制区域42中的一个或多个不同的段。作为潜在规则,仅仅认为最后写的控制块是有效的;为此,控制块的每个新版本可以包括与之前所使用的一个相比增加的版本号码,从而通过检查控制区域中的控制块的版本号码来识别最后写的控制块。只在已经写了控制区域42中的所有段之后,才通过地址回绕(wraparound)的方法再次使用第一段,从而也在该区域中确保重写循环的几乎相等的数量。当然,因为版本号码存储在固定字长度数据字段中,所以当将该控制块更新得足够多时,在某些情况中还可以将版本号码回绕。但是,因为控制块的所述特点,在控制块区域内连续的控制块的写将总是严格地循环的。这样对于识别有效控制块,其足够确保从比该控制块区域可以支持的控制块的数量多、或者不是该控制块区域可以支持的控制块的数量的质数(prime)因子的值范围使用版本号码。然后可以将有效的控制块识别为其就是唯一的一个,其中在该控制区域内的随后控制块模数不产生(bear)在该版本号码值范围内的随后版本号码模数。
控制块53可以跨越多于一个连续段。有利地,控制块是存储的对准的段,即每个控制块在之前控制块的最后段的跟随段的开始处开始。这暗示在之前控制块的最后段的结尾部分可以存在未使用的空间。段对准使得最后写的、因此是当前有效的控制块的识别变得容易。如果控制区域42的剩余段不足以存储完整的新控制块,则该控制块使用这些剩余的段并且在该控制区域的开始处继续,即控制块可以回绕该控制区域边界。
图6示出了可以存储索引62的数据的索引区域43。索引的格式是应用专用的并且可以由控制块53中的对应索引类型字段确定。为了防止在有限的重写循环限制下的碎片,因为不能覆写改变的索引部分,所以不能在数据载体上直接修改索引62。因此每个索引应该有利地恰好占用一个连续段序列。各应用应该有利地仅仅读写整个索引,它们可以在存储器中保存整个索引。
图7示出了通常占用数据库文件的最大部分的有效负荷区域44。在该区域中的所有段(被称为有效负荷段71)都可以具有相同的格式。如果被使用,则每个有效负荷段可以包括头部72和一个或多个文档73或者甚至仅仅是文档的一部分。
图8示出了根据本发明的文档写策略。这里,从概念上说,在紧挨着之前文档的后面的有效负荷段中存储每个新文档D1....D8,如所示的段Sn中的文档D1到D5作为例子。如果在当前段中的空闲空间不足以用于随后的文档,用填充字节装满该段并且将文档写到随后的段Sn+1。如果文档大于一个段,如图8中的文档D7,或者如果文档不适合段的剩余空间,则文档可以跨越连续段的边界,如段Sn+1到Sn+3中的那样。可以用填充字节P来装满段的剩余空间而不是分割文档。这减少了分割文档的数量,因此其使得无用存储空间的收集变得容易并且增加了短段组的概率。但是其还增加了也称为不充分部分(slack)的未使用的有效负荷空间的数量。每个有效负荷段的头部数据H可以包括关于该段中的文档的信息,如开始地址或者尺寸。
图9示出了文档编辑和删除策略。段Sn....Sm不能原地改变但是可以被无效的规则也影响文档。从如图8一样的情况开始,如在扇区Sn中所示,示出了删除文档D1并且编辑文档D3。就通过在文档D1被存储的有效负荷段中将其数据无效来“删除”文档D1。由在未示出的控制块中的标记来完成这种操作,从而Sn自身并不需要变化。为了编辑文档D3,其原始版本必须被读入存储器、在存储器中进行修改、然后被象新文档一样存储到写就绪的随后段中,在本例中所述随后段是段Sm。然后如在“删除”情况中一样将原始文档无效。
图10示出了根据本发明的有效负荷写策略。在不同的、连续的时间t处即该图的每条“线”中示出了完整的有效负荷区域。将段的状态指示为“使用的”S1、“最后写的并且使用的”S2、“未使用的”S3、和“最后写的但是已经无效的”S4。基本上,根据在有效负荷区域中它们的位置以环形顺序将有效负荷段正在进行写。标有“t=t1”的第一条线示出了已经以这种方式连续地填充的数据库。即使某些之前段恰巧被无效了,如“t=t2”处所示,还是将随后的段数据写到跟随最后写的一个段S2、S4的段中,如“t=t3”处所示。如果到达有效负荷区域的结尾,该写过程回绕并且在该区域的第一个未使用的段处开始,如“t=t5”处所示。对于随后的写操作,将使用下一个空闲段,如“t=t6”处所示。
存在不应该使用下一个空闲段的一种例外情况为了存储跨越段边界的文档,可能必须使用多于一个的连续段。在这种情况中,必须跳过不足够大到能够用于这样的存储的下一个空闲段组直到发现可以使用的组为止。
对于特殊的情况还存在替代方案,在这种特殊情况中多个文档尽管小于一个段但是恰好进行了存储以至于它们跨越了段边界。可以将这样的多个文档存储在下一个单个空闲段的开始处。然后当前段的剩余空闲空间保持不使用。
权利要求
1.一种用于修改以段(32)组织的、存储在具有有限可重写性的存储介质(12)上的数据库文件(31)的方法,该方法包括步骤-在数据库文件中,分别保留预定尺寸的至少一个区域(42、43、44)以及专门用于将至少一种类型的数据记录(D1...D8)写到其上的位置;并且特征在于-在数据库文件中,将最后被写入数据记录的、在所述区域内的段指示为最后写的段(S2);-在要将特定类型的数据记录写入数据库时,以所述的写使用专门用于该特定类型的区域内的、在所述最后写的段之后的随后的可获得段的方式来确保写的分布。
2.根据权利要求1所述的方法,用于修改在数据库文件(31)中的特定类型的数据记录(D1.....D8),其中所述数据库文件包括专门用于特定类型的区域,并且所述方法包括步骤-从所述区域读出数据记录;-修改所读的数据记录;-获得第一写地址信息,其指示该特定类型的数据记录最后被写入的在该区域内的段(S2);-作为确保写的分布的一部分,转发第一写地址信息,从而其指示在包括未使用的空间的区域内的下一个段(S3);-将修改的数据记录写到在由第一写地址信息所指示的段处开始的段。
3.根据权利要求2所述的方法,其中所述数据记录是有效负荷数据记录(73),所述特定类型是“有效负荷”类型,所述区域是有效负荷区域(44),所述数据库文件还具有控制区域(42),并且其中所述方法还包括步骤-在所述控制区域内的控制块(53)中包括关于有效负荷数据记录的地址信息的情况中,从该控制区域读出所述控制块;-在所述控制块中更新地址信息以反映第一写地址;-获得指示在所述控制区域内控制块被最后写入的段的第二写地址信息;-作为确保写的分布的一部分,转发第二写地址信息从而其指示在包括未使用的空间的控制区域内的下一个段;-将更新的控制块写回由第二写地址信息指示的段。
4.根据权利要求1所述的方法,用于从数据库文件(31)中删除有效负荷数据记录(73),其中所述数据库文件包括控制区域(42),并且所述方法包括步骤-从控制区域中读出包括与要被删除的有效负荷数据记录关联的信息的控制块(53);-在所读控制块中将要被删除的有效负荷数据记录标记为删除的,从而获得修改过的控制块;-获得指示在控制区域内、控制块最后被写入的段的写地址信息;-作为确保写的分布的一部分,转发写地址信息从而其指示在包含未使用的空间的控制区域内的下一个段;-将修改过的控制块写到由转发的写地址信息所指示的段。
5.根据前面权利要求的任何一项所述的方法,其中确保写的分布的步骤包括子步骤-增加写地址信息直到其指示在包含了未使用的空间的最后写的段(S2、S40之后的下一个段;-在所述增加已经导致写地址信息指示段超过了该区域的结尾的情况中,将写地址信息复位到所述区域的开始。
6.根据前面权利要求的任何一项所述的方法,其中所述段的尺寸对应于在存储介质(12)上的物理格式中所定义ECC块或者扇区的尺寸的整数倍。
7.根据权利要求6所述的方法,其中在存储介质上将段分配为以对准的ECC块或扇区。
8.根据前面权利要求的任何一项所述的方法,其中通过将版本计数值附到要被写的数据记录上来实现所述指示,在每次写的时候将所述版本计数值增加并且对预定上限进行取模,将该版本计数写到数据库文件中作为将数据记录写到其中的一部分。
9.根据前面权利要求的任何一项所述的方法,其中选择至少一个区域(42、43、44)的尺寸从而段的平均使用(wear)是相等的。
10.用于服务存取包含数目为(z)的多个文档的数据库文件的并发搜索操作(22....26)的方法,该方法包括步骤-在启动新搜索操作以对数据库中的文档进行特定条件的测试时,增加有效搜索计数器(27、28)的计数;-在有效搜索计数器具有指示一个或者多个搜索操作是有效的值并且还没有运行文档检索过程(21)的情况中,启动(开始)连续地并且循环地检索(29)在数据库中包括的文档并且将它们提供给任何有效的搜索操作的文档检索过程;-在所启动的从文件检索过程中接收文档的新搜索操作中,在启动之后将首先接收到的文档的标识符进行记忆作为第一文档,并且对所接收的文档应用特定的标准;-在搜索操作第二次接收第一文档的情况中,终止搜索操作并且减小有效搜索计数器的计数;-在有效搜索计数器具有指示没有搜索操作是有效的值的情况中,终止(结束)文档检索过程(21)。
11.根据权利要求10所述的方法,其中从不同的源开始搜索操作。
12.一种在其上存储了包含记录(D1...D8)的数据库文件(31)的数据载体,特征在于每个记录包含与将该记录写到该数据载体的时间单一对应的一个区分的版本号码信息。
13.根据权利要求12所述的数据载体,特征还在于仅将该记录预定义为被认为是有效的,随后的记录不产生其随后的版本号码。
全文摘要
在具有有限的可重写性的存储介质上的数据存储领域,处理频繁变化的数据库可能导致存储段的不均匀使用。本发明公开了一种用于修改数据库文件(31)的方法,其确保最大可能地分布段使用,其中数据记录(D1...D8)的任何写操作都使用在最后写的段(S2、S4)之后的下一个可获得的段;本发明还公开了一种读方法。还公开了根据本发明的数据载体,其包括带有具有版本号码的记录的数据库文件。
文档编号G11B20/12GK1833278SQ200480022644
公开日2006年9月13日 申请日期2004年7月16日 优先权日2003年7月19日
发明者尤维·詹森, 迈诺尔夫·布拉瓦特, 李辉, 拉尔夫·奥斯特曼, 马科·温特 申请人:汤姆森特许公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1