加速计算机数据库事务处理的装置 【发明背景】
本发明与加速计算机数据库的事务处理的装置和方法有关。
计算机数据库是数据记录的一个集合,每一数据记录具有一个或多个逻辑关键字,这些逻辑关键字起到记录的“名字”的作用。一般来讲,当一个应用程序请求访问数据库中的一个记录时,它就向一数据库管理程序提供一逻辑关键字值,接着,数据库管理程序从保存在磁盘或存储器的索引中获得信息,以将该逻辑关键字值映射到一记录的地址值。这一记录地址值指定与该逻辑关键字值有关的数据记录在磁盘上的位置。因此,数据库索引地作用与一本书的索引非常相似:读者提供一逻辑关键字值(感兴趣的主题),接着由索引提供要寻找的信息的一记录地址值(页号)。
一数据库可以具有多个关键字。一般来讲,选择某一关键字作为“主关键字”,它提供对该记录的明确的和迅速的访问,而“从关键字”提供对一记录的较慢的或较不明确的访问。比如,一个雇员数据库可以使用雇员的编号作为它的主关键字,而将雇员的名字和部门编号作为从关键字。关键字索引作为数据库的固定部分驻留在磁盘上。它可以与数据记录本身存储在同一个文件中(就象与一本书粘连在一起的目录一样),也可以驻留在单独的文件中(就象一本多卷百科全书的索引/总览卷)。
已知的数据库管理系统分成两个逻辑层:称为数据库管理程序的高层--它提供用户接口(比如数据库查询语言),和称为数据库引擎(database engine)的底层--它维护数据库的结构,即逻辑关键字值和存储在数据库文件中的物理数据之间的关系。
发明概述
第一,本发明提供了管理计算机数据库的硬件加速设备。该加速设备包括存储一映象(该映象将记录的关键字值与记录的地址值相关连)的一关键字存储器;一搜索处理器(对于一给定的关键字值,用它搜索关键字存储器,并将相关的记录关键字值提供给中央处理器);一总线接口(用于将搜索处理器和关键字存储器连接到中央处理器);和一数据库管理软件(它在中央处理器上执行,通过在总线接口上向搜索处理器发送请求而要求从关键字值到记录地址值的映象)。
本发明的较佳实施例可以包括下列特征。关键字存储器可以存储从一个关键字到多个记录地址的映象,比如对于非唯一的从关键字。搜索处理器可以包括使用二分搜索结构搜索关键字存储器的结构,该结构能提供关键字存储器中与一给定的关键字值相匹配的第一项。数据库管理软件具有一结构,在将一关键字值提供给搜索处理器以映象到一记录地址之前,它执行从一逻辑关键字值到一编码的关键字值的映象。中央处理器包括分配关键字存储器的结构。存储在主计算机的磁盘存储器中的索引文件可以存储关键字存储器内容的映象。可以有一个存储器端口,通过它中央处理器可以读和写关键字存储器。搜索处理器可以向中央处理器提供对应于给定关键字值的关键字存储器的一个项的索引,然后数据库管理软件从对应于该索引的关键字存储器中读出各项。数据库加速设备可以包括向/自关键字存储器中增加和/或删除项的结构。
第二,本发明具有一种改进的二分搜索,该方法在所搜索的项的值不唯一的情况下对搜索存储器特别有用。改进的二分搜索在存储器中找到第一个匹配给定值的项。如同在一个通常的二分搜索中,各项以排序了的顺序存储在存储器中。产生一试探地址,即开始和末尾地址的平均值,并且试探对应的项。根据试探的项与给定值的比较结果,将开始或末尾地址设为试探地址。该改进利用了由试探项与给定值的比较所产生的进位(CARRY),以改变在搜索的下一次重复中计算的试探地址。在找到给定的值时,该搜索并不终止,而是继续进行,直到其开始和末尾地址收敛在匹配给定值的第一项上。
本发明的优点如下,使用数据库加速设备的数据库管理程序比没有加速设备的要快得多,这是因为不需要访问索引信息的磁盘备份就能完成逻辑关键字值到记录地址值的映射。对于数据库软件销售商,本发明提供了防止复制的特点:没有数据库加速设备板数据库管理软件的非法拷贝是没有用的。以前的软件数据库引擎不得不在搜索的快速访问与对记录的增加或删除的慢速访问(一般是分层组织),以及对记录的增加或删除的快速访问与慢速搜索(一般是关系数据库)之间作一折衷。相反,本发明以比任一软件数据库引擎高得多的速度进行搜索和更新功能,而且设计上更为简单。
从下面一较佳实施例的描述以及附图中可更清楚地了解本发明的其它优点和特点,其中:
附图的简要描述
图1是具有数据库加速设备的计算机的框图。
图2显示了一数据库的磁盘记录和具有一关键字存储器的一数据库加速设备。
图3是数据库加速设备的框图。
图4是数据库加速设备的操作流程图。
较佳实施例的描述
参见图1,个人计算机100具有一中央处理单元(CPU)102、一随机访问存储器(RAM)104和一磁盘或其它大容量存储单元106,所有这些单元通过一系统总线108进行通讯。磁盘106保存数据文件110和索引文件112,这些文件构成一数据库,CPU102运行存储在RAM104中的数据库管理软件114和应用软件116。数据库加速设备120也通过总线108通讯,该加速设备120具有一控制逻辑122和一关键字存储器124。
在下述的启动阶段,将逻辑关键字值映射到记录地址值的索引信息被从索引文件112装入关键字存储器124以用于快速访问。
在通常操作中,应用软件116向数据库管理软件114请求某一操作。如果该请求是SEARCH(搜索)、ADDITION(增加)或DELETION(删除)之一,数据库管理软件114就接着在系统总线108上通过一总线接口130将该请求传送到数据库加速设备120,而跳过访问数据库索引文件的步骤。考虑一SEARCH操作,作为由数据库加速设备120执行的典型操作(下面将结合图4,进一步详细讨论SEARCH,ADDITION和DELETION),数据库管理软件114将一逻辑关键字值和搜索该逻辑关键字的命令(SEARCH)提供给数据库加速设备120。在数据库加速设备120中,控制逻辑122(它可以是一状态机)将该请求的操作引导到该加速设备的关键字存储器124中。如果在关键字存储器124中找到该逻辑值,控制逻辑122将与该逻辑关键字值有关的一记录地址值提供给数据库管理程序114,接着,数据库管理程序即可以此访问数据库文件110中的适当的数据库记录。
参见图2,数据库加速设备的关键字存储器124被组织成好象有两列,左边一列202用于编码的逻辑关键字值,右边一列用于相关的记录地址值。在图2中,示意带有索引112的数据库110具有5个数据记录,每一个都具有主和从关键字。在启动阶段,按照关键字值的排序顺序,将这些主和从编码逻辑关键字以及与其相关的记录地址装进关键字存储器124中。在通常操作中,控制逻辑122指引在左列202中对一编码的逻辑关键字值211-215或221-225的搜索。当找到该码的逻辑关键字值时,在右列的对应项就是记录251-255的记录地址值231-235或241-245。因此,关键字存储器124对于索引文件112中的信息起到一高速缓存的作用。
参见图3,数据库加速设备120具有一总线接口130,其设计方案主要由主计算机的总线协议决定,比如现在在各种个人计算机上常见的AT、ISA、EISA、Microchannel(微通道)或MacIntosh总线结构。图3的逻辑可以用任一常见的技术实现,比如定制VLSI、门阵列、现场可编程门阵列、可编程逻辑阵列(PAL)、位片处理器(bit-slice processor)或一微处理器。关键字存储器124的大小要能保存数据库110所需要的关键字,一般为256kB。
数据库加速设备120具有多个映射到主处理器102的内存空间的数据和控制寄存器。主处理器102一般是通过将值写到这些寄存器中来请求数据库加速设备的服务,诸如要搜索的值、要搜索的关键字存储器的区域的高和低边界、一命令值(比如SEARCH)和一GO(进行)命令。在数据库加速设备120服务该请求时,主处理器102可通过进行其它功能或通过执行对该数据库加速设备的一状态寄存器的循环等待来等待该操作的完成。这些步骤将在下面详细讨论。
主处理器可以读或写关键字存储器124。为访问关键字存储器,主处理器102将一存储器LOAD(装入)或UNLOAD(卸出)命令写入控制缓冲区301。作为响应,地址多路复用器将地址缓冲区309的地址值送到关键字存储器124。当控制缓冲区301被置为LOAD时,写入存储器数据缓冲区303的任何数据值都将依次写到关键字存储器124的由地址缓冲区309所指定的地址处。类似地,当控制缓冲区301被置为UNLOAD时,由地址缓冲区309所寻址的单元值将被拷贝到存储器数据缓冲区303,以供主处理器读取。一般来讲,由于关键字存储器124相当大,控制缓冲区301存储在关键字存储器124上移动一“窗口”的高地址位,而低地址位存储在地址缓冲区309中。
现在详细讨论启动阶段,其过程如下。将编码逻辑关键字/记录地址值对装入关键字存储器124。编码逻辑关键字值以16位编码关键字值存储在关键字存储器124的一列202中;主处理器可以使用任何适当的方法,诸如CRC(循环冗余校验)等已知的散列函数,将每一个任意长度的逻辑关键字值映射到16位的编码关键字值。因此,多个逻辑关键字值可以映射到同一个编码关键字值,并且可具有不同的记录地址。图2中的记录地址值列以16位的整数存储在第二列204中,表示数据库文件110中的记录号。为了加载关键字存储器124,主数据库管理软件114从数据库110和112中获得记录个数的计数以及该数据库记录的逻辑和记录地址值,并且选择将哪一个编码逻辑关键字和记录地址存储在关键字存储器124中。比如,索引文件112可以以关键字存储器124使用的格式存储编码逻辑关键字和记录地址,在这种情况下,有可能只通过简单地将索引从索引文件112拷贝到关键字存储器124中而加载关键字存储器124。或者,主机数据库软件114可以读出数据库文件110的记录,抽取出逻辑关键字,将它们映射到16位的编码关键字,并且使用上述的LOAD命令将编码关键字/记录地址对存储在关键字存储器124中。
主机数据库软件114管理关键字存储器124,比如将关键字存储器124分配给多个逻辑关键字。例如,如果关键字存储器124有4096项,数据库文件110有三个关键字(通常为一个主关键字和两个从关键字),主机数据库软件114可以决定将主关键字存储在项0至1365,将第二关键字存储在项1366至2730,将第三关键字存储在项2731至4095。主机数据库软件114维护分给每一逻辑关键字的关键字存储器的范围,从而对于每一个SEARCH、ADDITION或DELETION请求它都能确定出正确的边界。根据搜索策略的要求来管理关键字存储器124中的项,数据库加速设备120的搜索电路实现这些搜索策略。例如,如果数据库加速设备120使用二分搜索,那么关键字存储器120的项就必须以排序顺序存储,而且在分配给逻辑关键字值的范围内没有间隔。
图4示意在关键字存储器124被划分和加载之后数据库加速设备120的操作。在步骤402,主处理器102将命令和数据值写到该加速设备的多个数据寄存器中,这些寄存器的作用将在下面描述的每一操作中明确。比较步骤408区分不同的命令,即SEARCH、DELETION和ADDITION操作,它们中的每一个将在下面讨论。
现在参见图3和4,SEARCH命令使用二分搜索在对应于一编码关键字值的一所选定的关键字存储器范围里搜索第一个关键字值,因此应按照编码关键字值202的升序来存储关键字存储器124的项。在步骤402,主处理器102将关键字存储器124中需要搜索的范围的项的编号分别存入一起始地址寄存器SAR316和一结束地址寄存器EAR314中。要搜索的编码关键字值存储在一数据缓冲区310中。指定SEARCH命令的值存储在一控制缓冲区301中。一旦在步骤402和404已将这些数据存储在各自的寄存器中,主处理器102则在步骤404将一GO信号写入GO/结果缓冲区307中。
在步骤406,数据库加速设备120通过将控制缓冲区301的值(由主处理器102读出)置为BUSY(忙)进行响应。在步骤408,控制逻辑302确定执行哪一命令,并且控制数据库加速设备120的逻辑执行适当的命令。SEARCH过程开始于步骤410。来自比较器318的CARRY(进位)信号被控制逻辑302置为1。在该搜索的后续步骤中,这一CARRY信号由比较器320自动产生,并用于修正二分搜索的正常规则,从而,如果所选择的编码关键字值在关键字存储器124中出现多次,该搜索将在这些项的顺序的第一个终止,而不是在第一次命中时终止。FOUND信号在步骤410也被置为0。FOUND信号指示关键字存储器124中的项是否与编码逻辑关键字值匹配,从而指示搜索是否成功。在步骤412,加法器317将SAR316、EAR314和CARRY的内容相加,并在移位寄存器320中被2除,以形成值M1,即在二分搜索这一步骤中进行试探的关键字存储器124的地址。在步骤414中,FINISHED标志记录下通过比较器319将M1的值与SAR316的当前值进行比较的结果,该结果指示这是否是该二分搜索的最后一次试探。向前看步骤426,如果FINISHED标志在414被置位,则在项M1的试探是该二分搜索的最终试探,该搜索可以在这一次重复中终止。
在步骤416,M1通过一地址多路复用器308被多路传输到地址关键字存储器124。在关键字存储器124的项M1的编码关键字/记录地址值被装入一临时缓冲区311。在步骤418,由比较器320将来自数据缓冲区310的搜索关键字值与所试探的编码关键字值311进行比较。控制逻辑302使用比较器320的结果来确定所试探的编码关键字值是小于、等于还是大于该搜索关键字值。在步骤422,如果搜索的关键字值和所试探的关键字值相等,比较器320的CARRY被清零(CARRY:=0)。控制逻辑302置FOUND标志(FOUND:=1),并使用M1的值替换EAR314的内容。在步骤420,如果临时缓冲区311(保存所试探的关键字值)小于数据缓冲区310(保存搜索的关键字值),则M1的值从地址MUX308锁存到SAR316,并将CARRY置位(为1)。否则,在步骤424,所试探的关键字值311大于搜索的关键字值;并且地址M1从地址MUX308锁存到EAR314,并清除CARRY。注意,二分搜索在搜索关键字值与关键字存储器124的编码关键字值匹配的情况下并不停止;搜索过程要一直持续到下界SAR316和上界EAR314收敛到关键字存储器124中与数据缓冲器310中存放的搜索关键字值相匹配的第一个项为止。
在步骤426,当二分搜索结束时,即EAR314的内容(等于M1的值)为SAR的内容之一时,M1指向与编码的关键字值相匹配的关键字存储器124中的第一项,如果这一项在所指定的原始SAR和EAR之间存在的话。如果在步骤422设置了FOUND标志,则知道至少有一个匹配的项。从而步骤426的YES(肯定)比较将处理器引向步骤428,M1的值被写入GO/结果缓冲区307,FOUND状态值被写入控制缓冲区301。一个NO(否定)比较表示二分搜索必须继续,只是EAR和SAR之间的差减少一半。
在步骤430结束数据库加速设备的搜索运算。如果主处理器102一直等待着控制缓冲区301,现在它可以接着执行了。主处理器102从GO/结果缓冲区307读出M1的值,M1的值指示要读出的关键字存储器124中的项。如果这一项的编码的关键字与搜索的编码的关键字相匹配,则这一项的低16位将指示从数据库文件110中读出的一个记录。通常,主处理器102将从数据库文件110读出所指示的记录。
由于对于同一个编码的关键字值可以有多个记录(特别是对于逻辑关键字本身可以是不唯一的从关键字),通常必须检查具有搜索的编码的关键字值的所有记录。搜索过程410-430只提供与所搜索的编码关键字值相匹配的关键字存储器中的第一项;通常主处理器102将使用上述的UNLOAD命令从关键字存储器124读出后续项和数据库文件110中的记录,直到从关键字存储器124读出的编码关键字值不再与所搜索的编码关键字匹配为止。
DELETION和ADDITION操作如流程图的步骤440-452所示。由于编码关键字和记录地址对数组必须保持紧密(对于一特定的逻辑关键字专用的关键字存储器空间中不可以有任何间隙),ADDITION是将数组中大于所插入的关键字值的部分向上移动一个关键字存储器位置而进行的;然后主处理器102将新的编码关键字和记录地址对写入所选择的位置。DELETION是将关键字存储器的高端部分向下拷贝一项而进行的,见步骤450-454。主机数据库软件114更新其结束地址,从而可使用正确的EAR值限制对关键字存储器124的下一操作。
为执行一ADDITION(DELETION)命令,在步骤402-404,主处理器102将用于插入(删除)的存储器位置的关键字存储器的项号写入UCR306,将最后的有效的项号写入EAR314,将一个ADDITION(DELETION)命令值写入控制缓冲区301,并将一个GO(进行)信号写入GO缓冲区307。在步骤406,控制逻辑302将控制缓冲区301的值置为BUSY,并在数据移动完成之后置为FOUND或NOTBUSY。在步骤440-442(450-452),ADDITION(DELETION)命令将大于在UCR306中所指定的项的所有项向上(下)移动一项。数据库加速设备完成一ADDITION命令时,将复制关键字存储器中的一项,使用上述的LOAD命令将一新项写到该复制的第一个上。在步骤446(454)完成ADDITION(DELETION)命令。
关键字映象124保持与数据库文件110的一致,比如在DELETION和ADDITION命令之后。可以利用在传统的软件数据库引擎中所使用的一些技术,而且一些技术能大大地简化。运行在主计算机102上的数据库管理软件114维护一个事务日志文件,该文件记录所有写数据库文件的事务。保存事务日志文件有助于失败恢复。由于索引搜索、插入和删除在关键字存储器124中以RAM速度发生,而在不是索引文件112中以磁盘速度发生,因此层次数据库管理软件中为提高性能而使用的复杂的索引文件(和管理该索引文件的复杂的数据库引擎软件)在此不再需要。仅有一个只是关键字存储器124的编码关键字/记录地址对的一个映象的索引文件就足够了,而且可以不必频繁更新,比如只在当天不再使用时更新。如果计算机崩溃而没有更新索引文件112以与数据库文件110一致,可以从数据库文件110的记录中重新产生索引文件112。在用户正常退出时,主处理器使用其访问窗口从关键字存储器124中读出项,并将关键字存储器124的一个映象存储到索引文件112中,使索引文件112与数据库文件110一致。在用户下一次登录进该数据库时,关键字存储器可以直接从索引文件112中装入。
在主机数据库软件114向数据库加速设备120发送一个命令之后,主处理器102进入一个循环等待,等待数据库加速设备在控制缓冲区301设置一“操作完成”状态码。数据库加速设备很快,比如在256K存储器中对64K个项的搜索使用16次试探,对于16MHz的数据库加速设备的时钟,可在937ns内完成,主处理器只需对一个循环进行两次或三次重复。
其它实施例可以对关键字存储器进行不同的组织。比如对于一个大型数据库,对于编码关键字和记录地址最好使用32位(或更长)的表示。长度寄存器可以指定编码关键字值的长度,或类型寄存器可指定逻辑关键字的对照序列。记录地址可以采用任何一种方便的表示来存储,比如存储可以用来找到数据记录的磁盘卷、柱面、磁头和记录。可以将关键字存储器组织成可使用任何一种方便的搜索技术,比如B-树、散列表(hash table)、Fibonaccian搜索或插值搜索(interpolation search)。关键字存储器组织的选择可能受到插入和删除与搜索的相对频率的影响。
其它实施例包含在下面的权利要求中。