在数据库中存储元素的方法

文档序号:6415833阅读:303来源:国知局
专利名称:在数据库中存储元素的方法
技术领域
本发明涉及在数据库中存储元素和寻找这样存储的元素的方法。借助数学函数,诸如散列函数,计算为打算在数据库中存储数据元素而对存储器空间的引用,其中函数输入数据包含属于该元素的外部键字,其中用该数学函数得到的结果指向数据库中所述元素的内部位置。本发明还基于分割函数结果为几个不同部分。
很早就已知借助不同的数据结构在数据库中存储数据。这些结构例如对于所用存储器空间和执行快速搜索的可能性而言提供不同的优点。
一种已知的结构是基于所谓的散列函数,它能够计算在数据库中一个表内的元素的随机分布。
一个元素可包含数据库内的一个内部地址。该元素连接到一个外部键字,例如电话号码。当在表中输入一个新的电话号码时,借助散列函数计算该电话号码的内部地址将放置在哪一个元素内。
散列函数的目的是在表内随机分布地址,使得这些地址在其内均匀地分布。于是,当搜索一特定地址时,使用同一散列函数寻找正确的元素。
当在一个键字使用散列函数时得到一个散列值,它包含一个数据字,该数据字通常包括32位。
在这一方面使用的一类算法是线性散列法(LH),这里,从该函数得到的数据字除别的外,包括所谓的LH位。简单说,得到的LH位可以指向数据库中的一页,或者指向寄存器中的一个位置,此时所述位置指向一页,而要寻找的元素位于该页上的某个地方。
已知分两个阶段执行散列,以便更有效地搜索一个元素。得到的数据字在这两个阶段分成两个位组。
第一位组例如指向一个矢量中的一个索引,而该索引可以指向一个新矢量。第二位组指向该新矢量内的一个索引,其中该新索引例如指向在元素链接表内的第一元素。这样被寻找的元素在该元素链接表内的某个地方找到。
这种链接表可以有相互不同的长度。内部地址位于每一元素内。各种链接物理上放置在存储器内完全不同的位置上,但是借助指针链接在一起。
这样,当搜索某一元素时,得到元素链接表的一个头标。如果要寻找的内部地址未在第一元素找到,则搜索向该链接表内的下一元素继续。由于在该链接表内的下一元素物理上位于存储器内另外某个地方,因此通常需要进行另外的存储器访问以便拾取该下一元素。第一次拾取错误元素是所谓的超高速缓冲存储器不命中。
这样,取决于表的长度,搜索某个特定元素的人可能经历几次超高速缓冲存储器不命中,这是非常昂贵的过程。在下一代处理器中,一次超高速缓冲存储器不命中在时间上将相应于数百条指令。
因此,希望使超高速缓冲存储器不命中数目减到最少。一个理想的情况是存储器被第一次访问时就可以找到寻找的元素。
根据上述,还知道允许散列值指向寄存器内一个位置,或指向一个矢量,此时在该位置的值进一步指向数据库,使得能够在数据库中进行动态改变,从而能够使一个元素例如在不同的页之间移动,而随后改变该元素寄存器中的值,不需要给该元素指定新散列值。
还已知分布式数据库包括形成一个公共数据库中的一个公共系统的多个节点。分布式数据库中的信息分布在它包括的不同节点上。
一个节点可以包括数据库的一个或多个部分的基本复制和该数据库的一个或多个其它部分的辅助复制。基本复制连同相关的辅助复制通常称为段。
考虑下面的出版物提供本特定领域已知技术的一个综合的画面W.Litwin所著″线性散列法用于文件和表寻址的新工具″,从M.Stonebraker编辑的数据库系统读本中的VLDB-80重印,第二版,Morgan Kaufman 出版社,1994年。
W.Litwin,M.-A.Neimat,D.A.Schneider等人的″LH*-用于分布文件的线性散列法″,ACM SIGMOD关于数据管理的国际会议,1993年。
W.Litwin,M.-A.Neimat合著″带镜像的高可用性LH*模式″。
J.S.Karlsson,W.Litwin,T.Risch合著″LH*LH用于交换的微计算机的可缩放高性能数据结构″关于扩展数据库技术的第5届国际会议″(EDBT 96年)。
P.-A.Larsson所著″动态散列表″,ACM通信,1988年4月。
M.Pettersson所著″主存储器线性散列法-Larson算法的某种加强″,瑞典Linkoeping大学,1993年3月。
当考虑这一技术上述的当今状态时,可以看到,一个技术问题在于提供一种方法,使用这种方法可以存储、检索和重新寻找一个元素,而在大多数场合不导致超高速缓存不命中,或在某些场合只有一次超高速缓存不命中。
另一技术问题是当搜索一个元素时能够增强解决度(resolution),使得一次搜索提供在第一次读超高速缓冲存储器时读入要寻找的元素的可能性,或在例外场合,在第二次读入时实现这一点。
另一技术问题是提供一种方法,使用该种方法可以形成一种数据结构,它能使这种解决度和搜索成为可能。
另一技术问题是能使属于一段的一个元素的所有复制,诸如基本和辅助复制,在搜索该元素时被找到。
另一技术问题是设计存储器结构格式,这里称为容器,它能存储多个元素,并且可以被整个读入超高速缓冲存储器中。
于是相关的一个技术问题是能够存储按照数学函数应存储在一个已经满了的容器内的一个元素。
再一技术问题在于,能够存储按照数学函数应存储在一个已经满了的页内的一个元素。
再一技术问题是为用于存储容器的可用页空间提供简单而有效的处理,所述容器由于对其添加另外的元素或从其内清除已有元素而导致其大小的增长或收缩。
另一技术问题是能够有效地使用许多容器未充满分配的存储器空间部分的可用存储器。
在这一方面,一个技术问题是当各容器大小随时间增加或减少时允许这一使用。
这样,另一技术问题是能够加倍使用适应为具有特定最大允许尺寸的容器亦即最大容器的空间。
再一技术问题是提供一个容器格式,它提供必需的信息,关于按照数学函数应该存在于该容器内的所有元素是否实际存在,和关于未在容器中找到位置的元素放在何处的信息,使得对这样的元素的搜索只导致单次超高速缓冲存储器不命中。
一个技术问题在于提供这种信息的能力,不管未容纳的元素或多个元素是位于和该容器的同一页还是不同页。
另一技术问题是提供一种元素格式,它提供必需的信息,使该元素可为与影响所述元素的事务处理结合的不同锁定类型使用。
另一技术问题是能使一个元素包括动态属性,诸如具有互相不同大小的键字。
再一技术问题是为元素能参与一些不同的复制过程提供必需的信息。
另一技术问题是为元素能参与一段的分割或几段的组合提供必需的信息。
以根据上述的方法为开始点以及为了提供对上述一个或多个技术问题的解决方案,本发明建议,把使用数学函数得到的结果至少分成3部分,其中第一部分组成对属于该数据库的一段的一个直接或间接引用,第二部分组成对在该段内的一页的一个直接或间接引用,而第三部分组成对属于所述页的一存储桶(bucket)的一个直接或间接引用。
这种存储桶将包括至少一个容器,其内可以存储元素或已经存储元素,或在其内存储对所述元素的一个直接或间接引用。
意在能够使所影响的段、页、存储桶或元素以不同方式改变而无需从数学函数计算新值,本发明建议有选择地使用直接或间接引用的可能性。
直接引用指的是直接指向预期位置的内部地址,可能要通过重新处理该地址信息,例如通过另一数学函数。间接引用指的是指向一个表、一个寄存器等的一个指针,在该表或寄存器等内可以使用直接指向预期位置的有关内部地址。
访问预期元素的可访问性部分地通过下述事实实现- 第一部分形成对属于该段的所有复制的一个间接引用,这使得通过该引用可获得所有复制;
- 第二部分指向一个寄存器,它包含对不同页的指针的一个矢量;以及- 第三部分通过一个数学函数指向属于所述页的一个存储桶(bucket)。
这样指示的存储桶包括一个容器,很可能是一个关联的过充满容器。
意在使整个容器被读入属于在该数据库内操作或使用所述数据库的处理器的超高速缓冲存储器内,本发明建议,以特殊方式设计容器格式。给各容器分配相应于容器头标大小和属于该容器的元素的大小的尺寸。
尺寸随属于该容器的元素的数目变化,虽然一容器所允许增长的最大尺寸,这里称为最大容器,限制到一次可以读入属于在该数据库内操作或使用所述数据库的处理器的超高速缓冲存储器的大小。
为能使各页上可利用的存储器空间以有效方式使用,和能够容易地找到要寻找的存储桶,本发明建议,把页分成一些缓冲器。各缓冲器又分成所谓的可用性表限制的第一部分和第二部分。
使各缓冲器适应包括- 容纳第一部分和第二部分全部的一个最大容器;- 开始在第一部分中扩展到第二部分的一个第一非最大容器;或- 开始在第一部分中的一个第一非最大容器,和一个开始在第二部分中的一个可能的第二非最大容器。
第一数目的缓冲器包括静态缓冲器,第二数目的缓冲器包括自由缓冲器。使属于静态缓冲器的第一部分适应包括一个容器,使属于静态缓冲器的第二部分和属于自由缓冲器的两部分适应包括一个过充满容器。
依赖于数学函数的功效,大多数容器将小于最大尺寸,同时许多容器甚至不到最大值的一半,意味着后面的这些容器将占据缓冲器的一部分。
而这意味着许多缓冲器能够为两个容器提供空间。在这些场合下,本发明建议,放置在第一部分内的容器在该第一部分的开始处开始,当对该容器添加另外的元素时向相关缓冲器的中心增长,放置在第二部分内的容器在所述第二部分的末尾开始,当对该容器添加另外的元素时,向相关缓冲器的中心增长。
当数学函数不管所有其它元素而给一个元素指定在一个已经充满到最大尺寸的容器内的一个位置时,本发明建议,使相关存储桶适应包括一个过充满容器,并且给该另一元素在该过充满容器中分配一个位置。
目的是进一步简化在一页中可用存储空间的处理和使这种处理更加有效,本发明建议,一个可用性表将包括属于静态缓冲器的所有可用第二部分和属于一页上的自由缓冲器的所有可用的第一和第二部分。
当在相应第一部分内的一个非最大容器超过可用性表的大小限制时,从该可用性表内清除属于一缓冲器的一个可用第二部分。
当在相应第一部分内的一个容器原来超过可用性表的大小限制而现在减小并不再超过该可用性表的限制时,向该可用性表增加属于一缓冲器的一个可用第二部分。
由于最大容器的缓冲器中两部分都被占用,因此本发明建议,在可用性表上可用的部分内给一个过充满容器分配一个位置,以及把所述可用部分从可用性表中在这一分配中清除。
本发明还建议,属于所述段的一页包含一个过充满页,它只包括自由缓冲器。当在自己页内的可用性表上无可用部分时,在属于该过充满页上的一缓冲器的一部分内给该过充满容器分配一个位置。
容器头标包括4个信息携带字段。
第一信息携带字段包括关于容器大小的信息。
当一存储桶只包括一个容器时一 第二信息携带字段指示,一个可能的过充满容器在同一页上存在;- 第三信息携带字段指示,无过充满容器;- 第四信息携带字段不用。
当一存储桶在同一页上包括一个容器和一个过充满容器时- 第二信息携带字段指示,一个可能的过充满容器在同一页上存在;- 第三信息携带字段指示,存在一个过充满容器;
- 第四信息携带字段指向该过充满容器。
当一存储桶在该过充满页上包括一个过充满容器时- 第二信息携带字段指示,在该过充满页上存在一个过充满容器;- 第三信息携带字段包括指向该过充满页的一个指针;- 第四信息携带字段包括指向该过充满容器的一个指针。
使各字段的大小适应各自的情况。
为能够最大使用容器内的空间,本发明建议,给属于一个容器的元素紧接在头标后面分配位置,并在该容器内一个紧接一个。
还建议,将由数学函数指出的容器全体读入属于请求一个元素的处理器的超高速缓冲存储器。
当在读入超高速缓冲存储器内的容器内未发现该元素时,把过充满容器全体读入超高速缓冲存储器。
为能够在复制、移动、组合或分割段时处理一个元素,本发明建议,各元素应分配一个特殊的格式。
根据这一格式,一个元素应包括元素头标和5个信息组。
当一个元素可用于事务处理时- 第一组将包括使用数学函数得到的结果的一部分;- 第二组将包括元素状态位;- 第三组将包括表示该元素未被锁定的信息;- 第四组将包括有关属于所述元素的一个局部键字长度的信息;- 第五组将包括有关属于所述元素的一个元素键字长度的信息。
当该元素由于一个影响所述元素的正在进行的事务处理而对于多个事务处理被锁定时- 第一和第二组将包含指向属于该事务处理的一个事务处理寄存器的指针;- 第三组将包含表示该元素被锁定的信息;- 第四组将包含有关该局部键字长度的信息;以及- 第五组将包括有关该元素键字长度的信息。
属于影响所述元素的事务处理的事务处理寄存器将包含使用函数得到的结果的一部分、状态位、和施加于该元素的锁的类型,亦即锁方式。
该元素还包含一个局部键字和一个元素键字。
元素头标包括4个字节,第一组包括19位,第二组包括4位,第三组包括1位,第四组包括4位,第五组也包括4位。
状态位用于元素复制过程,诸如段复制过程。各位指示该元素是被复制还是未被复制。这样,一些同时的复制过程,在该例中可到4个过程,每一个可使用各自的状态位。
使用数学函数得到的部分结果用于段分割过程和段组合过程。
主要由本发明的方法所提供的优点在于只用单次存储器访问找到希望元素的能力,或当希望的元素位于过充满容器内时,只用两次存储器访问。通过散列函数指示正确的容器。
使容器尺寸适应可以通过对存储器的单次访问把该容器整体读入超高速缓冲存储器。一旦发现正确的容器在超高速缓冲存储器内,就可以借助于当今的处理器在该容器中顺序存储的元素中很快找到正确的元素。
本发明方法的主要特征在后面的权利要求1的特征部分叙述。
现在举例并参考附图详细说明包括与本发明关联的特征的方法,附图中,

图1概略表示使用数学函数变换外部键字为内部键字;图2概略表示分割使用数学函数得到的结果为对一个元素的位置的间接引用;图3概略表示存储桶结构;图4概略表示对属于一段的页的分割;图5概略表示在第一场合中的元素的构造;图6概略表示在第二场合中的元素的构造。
图1表示属于一个元素E的一个外部键字例如电话号码T的使用,它作为对数学函数f(x)的输入数据。
使用该函数f(x)得到的结果y指向数据库D中元素E的内部位置。结果y至少分成3部分A、B、C。
图2打算表示第一部分A组成对属于数据库D的段A4的一个间接引用。这一引用A1指向覆盖不同段的表A2中的一个位置,在其中可以获得揭示属于段A4的所有复制存储在何处的信息A3。
第二部分B组成对在段A4内的一页B4的一个间接引用B1。这一引用B1包含指向寄存器B2的一个指针,寄存器B2包含一个对不同页的指针B3的矢量,其中一页是B4。
第三部分C组成对属于页B4的一个所谓的存储桶C2的一个直接引用C1。
以这种方式,使用数学函数f(x)得到的值y提供对一个特定存储桶C2的一个直接地址。
根据图3,各存储桶C2包括一个容器C5,可能还包括一个属于存储桶C4的过充满容器C6。
图3还表示给各容器C6分配一个大小,它相应于头标CH的大小和属于该容器C6的元素E1、E2、E3、…的大小。
这一大小可以随元素数目变化,虽然最大容器的大小受限制,使其最大等于一次可读入属于在该数据库内操作或使用所述数据库的处理器的超高速缓冲存储器的大小。
通常,当今的处理器一次能够读入超高速缓冲存储器128字节,下面的说明基于该值。然而,应该理解,根据本发明的容器的大小和在下述说明中引用的其它尺寸应适应按照在任何时间有多少字节可以读入所涉及的处理器的超高速缓冲存储器,以便实现希望的效果。
本发明的将来应用中需要注意的另一个参数是处理读入超高速缓冲存储器中信息内容需要占用的时间。当该处理时间超过一次超高速缓冲存储器不命中的时间时,限制容器大小和其它尺寸到这样的大小,使得对容器的处理需要的时间比为一次超高速缓冲存储器不命中逝去的时间少,而不管一次可以读入该超高速缓冲存储器多少信息,这是适宜的。
根据图4,页B4被分成一些缓冲器B41、B42、B43、…、B466。各缓冲器被分成一个所谓的可用性表限制B4C的一个第一部分B4A和一个第二部分B4B,并使各缓冲器适应包括- 最大容器C5,它容纳整个第一部分B4A和整个第二部分B4B;- 在第一部分B4A中开始扩展到第二部分B4B的第一非最大容器C52;或
- 在第一部分B4A中开始的第一非最大容器C53,和在第二部分B4B中开始的可能存在的第二非最大容器C61。
第一数目的缓冲器为静态缓冲器B4S,第二数目的缓冲器为自由缓冲器B4F。
按照图4的例子包括具有8K字节(8192字节)的页。该页包括具有8字节的头标C3、64个静态缓冲器B4S和两个自由缓冲器B4F,每一个有124字节。
该结构能够对一个特定存储桶寻址,并从而对于通过对该结果的该部分改编形成在1和缓冲器数目64之间的一个随机数“a”而得到由数学函数f(x)得到的结果y的第三部分C组成的一特定缓冲器进行寻址。将该数“a”用124(每一缓冲器的字节数)乘,然后在乘积上加数8,这是头标C3中的字节数。
这样可以说,数学函数f(x)的第三部分C组成一个直接指向预期位置的地址,虽然通过另一数学函数的媒介,在本例中,这一函数是“a”*124+8。
这样按照数学函数f(x)指出一个随机缓冲器,还有位于该缓冲器内的存储桶。
使属于静态缓冲器B4S的第一部分B4A适应包括容器C5,和使属于该静态缓冲器B4S的第二部分B4B和属于自由缓冲器B4F的两部分B4A、B4B适应包括过充满容器C6。
位于第一部分B4A内的容器C5在该第一部分B4A的开始处开始,当对该容器C5添加另一元素E时向相关缓冲器的中心增长。
放置在第二部分B4B内的容器C6在该第二部分B4B的末尾开始,当对该容器C6添加另一元素E时,向相关缓冲器的中心增长。
这允许在一个公共缓冲器内容纳两个容器,而不管缓冲器实际上适应只容纳一个具有最大允许大小的容器。
在高效的数学函数f(x)的场合,出现的所有元素E都在现有容器C5内被随机和均匀分割,意味着,大多数容器C5不被充满到它们的最大允许尺寸。许多这种容器也将位于可用性表限制B4C之下,意味着,一些其它部分B4B将可用于任何过充满容器C6。
根据本发明的一个优选实施例建议,确定在共享一个公共缓冲器的两个容器之间一个缓冲器内的空间如何分割的检验留给这两个容器,而不管一个容器是否超过可用性表限制。这样,一个非常小的过充满容器C6允许容器C5增长到超过可用性表限制的程度,只要该缓冲器可以为这两个容器提供足够的空间。
当另一元素E添加到具有最大允许尺寸和属于一个存储桶C2的容器C5时,使相关存储桶C2适应包括一个过充满容器C6,这里给该另一元素在该过充满容器C6中分配一个位置。
使可用性表适应包括页B4中属于静态缓冲器B4S的所有可用第二部分B4B,和属于自由缓冲器B4F的所有可用第一部分B4A和所有可用第二部分B4B。页B4的头标C3除别的外包括一个指向该可用性表的指针。
通过把所有可用部分包括到可用部分的一个链接表内,可以实现该可用性表,这里各可用部分包括指向在该链接表下一个可用部分的一个指针。头标中的指针指向第一可用部分。
当在相应的第一部分内的一个非最大容器C54大小超过可用性表限制B4C时,从该可用性表中清除属于缓冲器B44的一个可用第二部分B4B′。
当在相应第一部分内的一个容器C55原来大小超过可用性表限制B4C而现在减小并不再超过该可用性表的限制时,向该可用性表增加属于一个缓冲器B45的一个可用第二部分B4B″。
当伴随在第一部分内的一个容器的大小增加或减少,从可用性表中清除或向其添加一个第二部分时,也可以引入一定的滞后。
例如,仅在第一部分内的一个容器超过可用性表限制一个预定值后才从可用性表中清除一个第二部分。
相似地,仅当一容器大小减少并位于可用性表限制一个预定界限以下时,才可以伴随该容器大小的减少向该可用性表添加一第二部分。
这一滞后可以防止任何振荡效应,该振荡伴随一个容器由于某种原因围绕可用性表极限附近周期地增加或减少其大小而发生。
给过充满容器C61在可用性表上可用的一部分B4B内分配一个位置,当这一分配发生时从可用性表中清除较早的可用部分B4B。
为防止在可用性表上无可用部分的情形,本发明建议,属于段A4的页之一包括一个过充满页B5。该过充满页B5只包括自由缓冲器B5F。在可用性表上无可用部分的事件下在属于过充满页B5上的一个缓冲器B53的一部分中给过充满容器C62分配一个位置。
根据图3,属于一个容器C5的头标CH包括4个信息携带字段CH1、CH2、CH3、CH4,这里第一信息携带字段CH1包含有关该容器大小的信息。
当一个存储桶C2只包括一个容器时- 第二信息携带字段CH2指示,一个可能的过充满容器C6在同一页B4上存在;- 第三信息携带字段CH3指示,不存在过充满容器C6;- 第四信息携带字段CH4不用。
当存储桶C2在同一页B4上包含一个容器C5和一个过充满容器C6时- 第二信息携带字段CH2指示,一个可能的过充满容器C6在同一页B4上存在;- 第三信息携带字段CH3指示,存在一个过充满容器C6;- 第四信息携带字段CH4指向该过充满容器C6。
当存储桶C5在过充满页B5上包括一个过充满容器C6时- 第二信息携带字段CH2指示,在过充满页B5上存在一个过充满容器C6;- 第三信息携带字段CH3包括指向该过充满页B5的一个指针;- 第四信息携带字段CH4包括指向该过充满容器C6的一个指针。
使各字段CH1、CH2、CH3、CH4的大小适应各自的情况。
类似使用数学函数得到的结果的第三部分,在第四信息携带字段内的指针包含一个在1到缓冲器数目64之间的数,将其用各缓冲器的字节数124相乘,然后再在乘积上加上头标中的字节数8。然而,这不是随机进行,而是根据在该可用性表上哪一个缓冲器可用。
给各元素E1、E2、E3、…在容器内紧接头标CH后一个接一个分配位置。
理论上说,一个过充满容器C6有可能达到最大允许大小,从而依次需要参考另一过充满容器C6′。由于这一理由,所有容器,包括过充满容器,将包括根据上述的一个头标。如果一个存储桶C2需要包括两个或更多过充满容器的话,这在实际上极不可能,则这将在从最后的过充满容器C6′中搜索一个元素E1′时依次导致同样数目的超高速缓冲存储器不命中。
当处理器搜索一个元素E时,通过数学函数f(x)指出的容器C5全体读入属于该处理器的一个超高速缓冲存储器。
当在读入该超高速缓冲存储器内的容器C5内未发现该元素E时,把过充满容器C6全体读入该超高速缓冲存储器。
元素E也包括一个头标,带有5组信息的元素头标EH。根据本发明,使该元素头标适应能够在两种不同的场合下说明元素E。
图5意在表示当元素E可用于事务处理时该元素的构造。在这一场合,第一组G1包括使用数学函数f(x)得到的结果y′的一部分;第二组G2包括元素E的状态位ES;第三组G3包括表示该元素未被锁定LS(锁定状态)的信息;第四组G4包括有关属于该元素的一个局部键字长度的信息;第五组G5包括有关属于该元素的一个元素键字长度的信息。
元素E还包括局部键字G6和元素键字G7。
图6意在表示当元素E′由于一个影响该元素E′的正在进行的事务处理而对于多个事务处理被锁定时该元素E′的构造。
在图示场合,第一和第二组G1′、G2′一起包含指向属于该事务处理的一个事务处理寄存器TR的指针G12,而事务处理寄存器TR包含从数学函数f(x)得到的结果y′的一部分、状态位ES、和施加于该元素的锁的类型LM(锁定方式),第三组G3′包含表示该元素被锁定LS的信息。
在图示场合,第四组G4′还包含有关局部键字G6′长度的信息,而第五组G5′包括有关元素键字G7′长度的信息。
元素头标EH包括4个字节,其中,第一组G1包括19位,第二组G2包括4位,第三组G3包括1位,第四组G4包括4位,第五组G5也包括4位。
状态位ES意在用于元素复制过程,诸如当复制段A4时,这里各位指示元素E是被复制还是未被复制。这允许多个同时的复制过程,在图示例子中有4个这样的过程,每一个使用各自的状态位。
使用数学函数f(x)得到的部分结果y′打算用于段分割过程和段组合过程。
用以使元素可以随机和均匀分布在数据库中的一类数学函数f(x)是所谓的散列函数,可以方便地使用它来执行本发明。
为简单起见,所述实施例限制在对具有大小到120字节的键字的处理的说明。然而,熟悉本技术的人会理解为能够在本发明的概念内使用更大键字必需进行的修改和改变。
因此,应该理解,本发明不限于上述和图示实施例,可以在下述权利要求中定义的发明概念的范围内进行修改。
权利要求
1.在数据库中存储元素和寻找这样存储的元素的方法,其中,借助一个数学函数计算对存储器空间的引用,该存储空间用于在数据库中存储数据元素,其中,函数输入数据包括属于所述元素的一个外部键字,其中,使用所述数学函数得到的结果指向数据库中用于所述元素的一个内部位置,其中,把结果分成不同部分,其特征在于,所述结果至少被分成3部分,第一部分组成对属于所述数据库的一段的一个直接或间接引用;第二部分组成对所述段内的一页的一个直接或间接引用;而第三部分组成对属于所述页的一个所谓的存储桶的一个直接或间接引用;所述存储桶包括至少一个容器,其内可以存储所述元素或已经存储,或在其内存储对所述元素的一个直接或间接引用。
2.根据权利要求1的方法,其特征在于,直接引用包括一个内部地址,它直接或通过一个数学函数指向一个预期的位置;间接引用组成一个指针,它指向一个表,在该表内可以得到直接指向预期位置的一个相关内部地址。
3.根据权利要求1的方法,其特征在于,所述第一部分组成对属于所述段的所有复制的一个间接引用。
4.根据权利要求1的方法,其特征在于,所述第二部分指向一个寄存器;及所述寄存器包含指向不同页的指针的一个矢量。
5.根据权利要求1的方法,其特征在于,所述第三部分指向属于所述页的一个相关存储桶;及这一指向通过数学函数实现。
6.根据权利要求1的方法,其特征在于,各存储桶包括一个容器,可能还包括一个属于各存储桶的过充满容器。
7.根据权利要求1的方法,其特征在于,给各容器分配一个尺寸,它相应于头标大小和属于所述容器的元素的大小;所述大小随属于所述容器的元素数目变化;及最大尺寸容器的大小限制到最多等于一次可以读入属于在该数据库内操作或使用所述数据库的处理器的超高速缓冲存储器的数据信息量。
8.根据权利要求7的方法,其中,处理可以一次读入超高速缓冲存储器的信息量需要的时间超过为一次超高速缓冲存储器不命中的时间,其特征在于,限制容器的最大增长尺寸,使得处理最大尺寸容器占用的时间小于为超高速缓冲存储器不命中逝去的时间,不管一次可以读入超高速缓冲存储器多少数据信息量。
9.根据权利要求6、7或8的方法,其特征在于,把所述页分成若干缓冲器;把各缓冲器分成一个所谓的可用性表限制的一个第一部分和一个第二部分;使各缓冲器适应包括一个最大尺寸容器,它容纳所述第一和所述第二部分全体,或一个开始在所述第一部份中扩展到所述第二部分的第一非最大容器,或一个在所述第一部分中开始不扩展到所述第二部分的第一非最大容器,和一个可能存在的在所述第二部分中开始的非最大容器。
10.根据权利要求9的方法,其特征在于,将对在一个缓冲器内的存储器空间是否要在共享一个公共缓冲器的两个容器之间分割的检验赋予所述两个容器,不管所述容器之一是否超过可用性表限制。
11.根据权利要求9的方法,其特征在于,第一数目的缓冲器为静态缓冲器;第二数目的缓冲器为自由缓冲器;使属于所述静态缓冲器的第一部分适应包括一个容器;及使属于所述静态缓冲器的所述第二部分和属于所述自由缓冲器的两部分适应包括一个过充满容器。
12.根据权利要求11的方法,其特征在于,放置在第一部分内的容器在所述第一部分的开始处开始,当对所述容器添加另一元素时向相关缓冲器的中心增长;及放置在第二部分内的容器在所述第二部分的末尾开始,当对该容器添加另一元素时,向相关缓冲器的中心增长。
13.根据权利要求11的方法,其特征在于,当给属于所述存储桶的一个最大尺寸的容器分配另外的元素时,使相关存储桶适应包括一个过充满容器;及给所述另外的元素在所述过充满容器内分配一个位置。
14.根据权利要求11的方法,其特征在于,使可用性表适应包括在所述页上属于所述静态缓冲器的所有可用的第二部分和属于所述自由缓冲器的所有可用的第一和第二部分。
15.根据权利要求14的方法,其特征在于,当在相应第一部分内的一个非最大容器在大小上超过可用性表限制时,从所述可用性表清除属于一个缓冲器的一个可用第二部分。
16.根据权利要求14的方法,其特征在于,当在相应第一部分内的一个容器在大小上原来超过可用性表限制而现在减小并不再超过所述限制时,向该可用性表增加属于一缓冲器的一个可用第二部分。
17.根据权利要求15和权利要求16的方法,其特征在于,当伴随在所述第一部分内的一个容器的大小增加或减少,而应从所述可用性表中清除或向其添加一个可用第二部分时,引入滞后,它使一第二部分在所述第一部分内的一个容器超过可用性表限制一个预定值后从可用性表中清除;和在所述第一部分内的一个容器的大小减少并位于所述可用性表限制以下一个预定值之后,向该可用性表添加一个第二部分。
18.根据权利要求13和权利要求15的方法,其特征在于,给所述过充满容器在所述可用性表上的一个可用部分内分配一个位置;及在进行所述分配时从所述表中清除所述可用部分。
19.根据权利要求13和权利要求15的方法,其特征在于,属于所述段的一页是过充满页;所述过充满页只包括自由缓冲器;及当在可用性表内无可用部分时在属于所述过充满页上的一个缓冲器的一部分内给所述过充满容器分配一个位置。
20.根据权利要求18和权利要求19的方法,其特征在于,所述头标包括4个信息携带字段,其中,第一信息携带字段包括关于所述容器大小的信息,当存储桶只包括一个容器时- 所述第二信息携带字段指示,一个可能的过充满容器在同一页上存在;- 第三信息携带字段指示,不存在过充满容器;- 第四信息携带字段不用;当该存储桶在同一页上包含一个容器和一个过充满容器时- 第二信息携带字段指示,一个可能的过充满容器在同一页上存在;- 第三信息携带字段指示,存在一个过充满容器;- 第四信息携带字段指向所述过充满容器;当所述存储桶在所述过充满页上包括一个过充满容器时- 第二信息携带字段指示,在所述过充满页上存在一个过充满容器;- 第三信息携带字段包括指向所述过充满页的一个指针;- 第四信息携带字段包括指向所述过充满容器的一个指针;和使各字段的大小适应各自的情况;及给属于所述容器的元素紧接所述头标后分配位置,并在所述容器内一个紧接一个。
21.根据权利要求6的方法,其特征在于,由所述数学函数指示的容器全体读入属于搜索一个元素的处理器的超高速缓冲存储器。
22.根据权利要求20和权利要求21的方法,其特征在于,当所述元素未在已读入所述超高速缓冲存储器中的容器内找到时,把过充满容器全体读入所述超高速缓冲存储器。
23.根据权利要求1的方法,其特征在于,所述元素包括带5组信息的头标;当所述元素可用于事务处理时,第一组将包括使用所述数学函数得到的结果的一部分,第二组将包括元素状态位,第三组将包括表示该元素未被锁定的信息,第四组将包括有关属于所述元素的一个局部键字长度的信息,第五组将包括有关属于所述元素的一个元素键字长度的信息;及所述元素还包括所述局部键字和所述元素键字。
24.根据权利要求23的方法,其特征在于,当该元素由于一个影响所述元素的正在进行的事务处理而对于多个事务处理被锁定时,第一和第二组一起包括指向属于所述事务处理的一个事务处理寄存器的指针;所述事务处理寄存器包括使用所述数学函数得到的结果的所述部分、所述状态位、和施加于所述元素的锁的类型;所述第三组包括表示所述元素被锁定的信息;所述第四组包括有关所述局部键字长度的信息;及所述第五组包括有关所述元素键字长度的信息。
25.根据权利要求24的方法,其特征在于,所述头标包含4个字节;所述第一组包括19位,所述第二组包括4位,所述第三组包括1位,所述第四组包括4位,所述第五组包括4位。
26.根据权利要求23的方法,其特征在于,所述状态位用于元素复制过程,诸如复制所述段;各位指示所述元素是否已被复制;多个同时的复制过程每一个使用它们各自的状态位。
27.根据权利要求23的方法,其特征在于,使用所述数学函数得到的所述部分结果用于段分割过程和段组合过程。
全文摘要
本发明涉及在数据库中存储元素和寻找这样存储的元素的方法,借助一个数字函数计算对打算在数据库中存储数据元素的存储器空间的引用,其中,函数输入数据是属于该元素的一个外部键字,其中,使用该数字函数得到的结果指向该数据库中所述元素的一个内部位置。把该结果分成至少3部分(A,B,C)。第一部分(A)组成对属于该数据库的一段(A4)的一个引用,第二部分(B)组成对在该段(A4)内的一页(B4)的一个引用,而第三部分(C)组成对属于该页(B4)的一个所谓的存储桶(C4)的一个引用。一个存储桶(C4)包括至少一个容器,其内可以存储所述元素或已经存储。给所述容器一个尺寸,它相应于容器头标和属于该容器的元素的大小,所述大小随所涉及的元素数目变化。限制最大容器的大小,使其最大等于一次可以读入属于在该数据库内操作或使用该数据库的处理器的超高速缓冲存储器的数据信息量。
文档编号G06F17/30GK1271439SQ98809340
公开日2000年10月25日 申请日期1998年7月7日 优先权日1997年7月21日
发明者U·M·隆斯特伦, A·达巴希 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1