用直接存储器存取在两台或更多机器之间执行数据库操作的制作方法

文档序号:6422628阅读:181来源:国知局
专利名称:用直接存储器存取在两台或更多机器之间执行数据库操作的制作方法
技术领域
本发明涉及数据库系统环境中的通信。具体而言,本发明涉及使用直接存储器进行存取,以在两台或更多台机器之间执行数据库操作。
背景技术
直接存储器存取(DMA)是一项无需使数据通过中央处理单元就可将数据从一个存储器片段传送到另一存储器片段的技术。与使用更加传统的互联网协议通道的计算机相比,具有DMA启用通道的计算机能快速与装置进行数据交换。
DMA技术已经日益整合到不同的高速传送协议和架构中。以DMA作为特征的架构实例包括VIRTUAL INTERFACE和INFINIBAND。这样的系统中的DMA特征使得一个装置上的存储器中的数据特定指向另一外部位置上的存储器,例如另一节点或计算机系统上的存储器等。为了获得DMA的全部优点,整合DMA特征的系统用快速网络连接装置这样做。
DMA数据传送消除了作为传输控制协议/互联网协议(TCP/IP)数据传送的特征的数据位额外开销(overhead)。TCP/IP协议传送使用分段的字节流,其中每个片段都包括标题信息和使得特定数据片段能抵达其计划目标的其它特征。相反,DMA无需将数据分段成各个可传送字节就可以传送存储器片段中的数据。尽管DMA与TCP/IP相比具有优势,但是也存在着TCP/IP和DMA同时使用的技术。一种这样的技术称之基于TCP/IP的远程DMA(RDMA)。


本发明通过附图中的实例进行说明,但并非受限于此,在本发明中,相同参考标号指示相同元件,在附图中图1示出根据本发明的实施例的用于在两台机器之间传送数据的基本系统。
图2示出根据本发明的实施例的用于使用DMA数据传送在两台机器之间执行写操作的方法。
图3示出根据本发明的实施例的用于使用DMA数据传送在两台机器之间执行读操作的方法。
图4示出用于验证两台机器使用DMA数据传送来为数据库操作交换数据的能力的方法。
图5示出根据本发明的实施例的用于使用多个缓存区(buffer,缓冲区)在两台机器之间传送数据的基本系统。
图6示出可实现本发明的实施例的计算机系统的方框图。
具体实施例方式
下面描述一种方法和设备,用于使用直接存储器存取在两台或更多机器之间执行数据库操作。在以下描述中,出于说明目的,为了提供对本发明的透彻理解,此处描述了多个具体细节。然而,显而易见地是,没有这些具体细节也可实施本发明。在其它情形下,为了避免不必要地模糊本发明,将公知结构和装置在方框图中示出。
概述本发明的实施例使得直接存储器存取(DMA)技术在数据库系统环境中有效地实现。具体而言,数据库服务器执行的数据库操作可使用DMA通信介质执行。DMA通信介质包括使得两台计算机能以在各台计算机上以透明方式彼此共享存储器的通道。这样,如果一台计算机将数据写入从属于DMA通道的存储器,则该数据在处理器的最小介入下传送给另一计算机。与使用例如TCP/IP等更传统的通信介质相比,使用DMA通信介质执行数据库操作(特别是那些涉及大量数据传送的数据库操作),能明显更快地执行数据库操作。
根据一个实施例,数据库操作可在与第二机器通信以执行数据库操作的第一机器上执行。这些机器中的至少一个是数据库服务器。在第一机器上,为第二机器分配第一存储器片段。在数据从第二机器传送给第一机器的数据库操作的执行期间,数据在第一存储器片段中缓存。响应于第二机器将该数据写入到第二机器上为第一机器分配的第二存储器片段,缓存该数据。
例如,数据库服务器为客户端分配缓存区的一部分。该数据库服务器可将从客户端接收的数据缓存到所分配的存储器中。响应于客户端将相同数据写入客户端上所分配的存储器,缓存该数据。该数据的传送通过DMA启用通道完成。响应于客户端110发送的结构化查询语言命令,可执行与该数据的传送关联执行的操作。
在一个实施例中,如果在第一和第二机器之间不可用DMA传送,则自动使用TCP/IP传送协议传送数据。执行确认步骤,以确定是否应将TCP/IP通道的DMA通道用于在两台机器之间传送数据。
在一个实施例中,两台机器之间的所述通信可复制,以实现另外的机器之间的数据传送。例如,客户端可通过DMA通道将数据写入数据库服务器,且数据库服务器可通过独立的通道分配数据给其它客户端。
一般功能性描述图1示出根据本发明的实施例的用于在两台机器之间传送数据的基本系统。所描述的系统使得两台机器能使用DMA传送技术彼此传送数据和执行数据库操作。这两台机器中的至少一个包括数据库服务器。在一个实施例中,这两台机器中的一个是客户端110,两台机器中的另一个是用于管理数据库132的数据库服务器120。在其它实施例中,客户端110可对应于另一数据库服务器。例如,数据库服务器组件可执行客户端程序以与数据库服务器120通信。
客户端110包括中央处理器(CPU)112、存储器114、和I/O端口118。数据库服务器120包括CPU 122、存储器124、和I/O端口128。数据库服务器120上的数据库132可通过由CPU 122执行的服务器组件管理。
在一个实施例中,客户端110和数据库服务器120可通过使用两个或更多个通道中的一个进行通信。TCP/IP通道132和DMA通道134可使客户端110的I/O端口118与数据库服务器120的I/O端口128互连。I/O端口118和128均可包括(具有)配置为通过DMA通道134与其它计算机通信的组件或特征。I/O端口118和128以及客户端110和数据库服务器120之间的快速网络连接的组合可形成DMA通道134。I/O端口118、128被配置为无需使用CPU 112、122,就可与它们各自的机器上所分配的存储器片段进行数据交换。I/O端口118、128也被配置为通过使用TCP/IP通道132或DMA信号134与其它计算机通信。如将描述的,本发明的实施例允许在DMA通道134不可用或中断时使用TCP/IP通道132。
为了使用DMA通道134,客户端为数据库服务器120分配存储器114的第一存储器片段116。数据库服务器120为客户端110分配第二存储器片段126。
DMA通道134可设置在与TCP/IP通道132不同的物理组件上。例如,在将TCP/IP通道132设置在例如ETHERNET连接等传统网络连接上时,DMA通道134可包括客户端110和数据库服务器120之间的INFINBAND连接。在另一实施例中,DMA通道设置在与TCP/IP通道132相同的物理组件上。这样,一个介质既可被用作DMA通道,也可被用作TCP/IP通道。
在一实施例中,客户端110和数据库服务器120必须确定是否可使用DMA通道134。如果不能使用DMA通道134,则使用TCP/IP通道132。建立并确定是否可使用DMA通道134的初始通信在TCP/IP通道上进行。
在一个实施例中,客户端110将远程过程调用(RPC)发信号通知数据库服务器120。数据库服务器120的CPU 122确认DMA通道134可用于随后由RPC识别的通信。数据库服务器120通过TCP/IP通道132将一返回发信号通知,指示应使用DMA通道134。客户端110的CPU 112接着为数据库服务器120分配存储器114的第一片段116。数据库服务器120的CPU 122为客户端110分配存储器124的第二片段126。客户端110发送包含第一存储器片段116的标识符的请求(bid)给数据库服务器120。类似地,数据库服务器120发送包含第二存储器片段126的标识符的请求给客户端110。
一旦在客户端110和数据库服务器120上分配存储器,则实施例提供了一个或两个客户端110和数据库服务器120执行检验。该检验用于确定DMA通道是否可用于两台机器之间的数据传送。在一个或两台机器上执行的检验可通过例如参看图4所描述的技术执行。
DMA通道134可用于在客户端110和数据库服务器120之间执行数据库操作。一旦在客户端110和数据库服务器120之间建立了DMA通道134,则通过数据传送器对其为另一机器分配的存储器片段执行写操作,来执行用于将数据从一台机器写入和读入另一机器的操作。通过两台机器中的一个写数据到其被分配的本地存储器,和使用DMA通道134将数据从本地存储器传送至另一机器,可执行读写操作。
对于进行读或写类型的操作,如果确定机器不能在DMA通道134上通信,则将使用TCP/IP通道132。尽管TCP/IP通道132较慢,但将此通道用作备份,确保能够执行数据库操作。
传送数据以执行写和读操作图2和图3示出为执行数据库操作在两台机器之间传送数据的方法。出于提供用于执行本文中描述的方法的步骤的示范性部件的目的,参看图1示出的部件。
图2示出根据本发明的实施例,用于使用DMA数据传送在机器之间执行写操作的方法。出于说明目的,描述了客户端110写数据到数据库服务器120的实施例。例如,客户端110可启动INSERT操作来传送大量格式化为行的数据给数据库服务器120上的数据库。
在步骤210中,客户端110发送RPC给数据库服务器120,指示客户端110试图写数据给数据库服务器120。RPC可指示执行INSERT或其它写操作,以将数据从客户端110传送给数据库服务器120。该数据可指定数据库132,或转送给其它客户端和/或数据库服务器。在任一情形下,对远程过程调用进行响应,数据库服务器120将一返回发送给客户端110。远程过程调用及其返回都通过TCP/IP通道132发送。
在发送RPC后,在步骤220,每台机器都为另一机器分配存储器片段。这样,客户端110为数据库服务器120分配第一存储器片段116。数据库服务器120为客户端110分配第二存储器片段126。
在步骤230,每台机器发送其所分配存储器的标识符给另一机器。这些标识符可被称为请求(bid)。该请求包含到每台机器上所分配的存储器的地址。这样,客户端110发送包含到第一存储器片段116的地址的请求给数据库服务器120。同样,数据库服务器120发送包含到第二存储器片段126的地址的请求给客户端110。在一个实施例中,还可通过TCP/IP通道132在客户端110和数据库服务器120之间交换请求。
为了将数据从客户端110写入数据库服务器120,在步骤240,客户端110将待传送的数据写入第一存储器片段116。客户端110的I/O端口118将该数据从第一存储器片段116移出,并传送给数据库服务器120,此处,该数据通过I/O端口128接收。使用DMA通道134将该数据从客户端110传送给数据库服务器120。
在步骤250,将由数据库服务器120从客户端110接收的数据缓存于第二存储器片段126中。这可通过数据库服务器120的I/O端口128将从I/O端口118接收的数据移动到第二存储器片段126中来实现。接着,数据库服务器120的CPU 122将该数据读入该数据库。
在步骤260,一旦数据被移出第二存储器片段126,数据库服务器120就发送确认应答(acknowledgement)给客户端110。例如,CPU 122可从第二存储器片段126中读取数据,并将该数据移入数据库132,或使该数据可被其它数据库服务器和客户端得到。一旦第二存储器片段126为空,则对客户端110做出确认应答,使得可将另外的数据从客户端110写入数据库服务器120。在一实施例中,在第一存储器片段116和第二存储器片段126均为空时,客户端110和数据库服务器120做出确认应答。
该确认应答可以是较短的消息,例如几个字节长的消息等。这样,该确认应答可在TCP/IP通道132或DMA通道134上发送。然而,一旦DMA通道134开放,则使用DMA通道134发送该确认应答会变得更容易。假设该确认应答较小,且通过DMA通道134传输的数据几乎不含额外开销(例如呈标题形式),则相对较容易将从数据库服务器120发送给客户端110的一些其它消息与该确认应答封装在一起。
图3示出根据本发明的实施例,用于使用DMA数据传送在两台机器之间执行读操作的方法。出于说明目的,图3描述了从客户端110对包含在数据库服务器120中的数据执行读操作。例如,UPDATE或SELECT操作可由客户端110执行,以查看数据库132中的数据。可通过使用DMA通道134来提升执行这种操作的速度。
在步骤310,客户端110发送远程过程调用,以从数据库服务器120读数据。远程过程调用可包含或指示UPDATE、SELECT、或其它读操作。远程过程调用的返回可由数据库服务器120做出。远程过程调用及其返回均通过TCP/IP通道132发送。
在步骤320,每台机器为另一机器分配存储器片段。对于图2中描述的实施例,客户端110可为数据库服务器120分配第一存储器片段116。数据库服务器120可为客户端110分配第二存储器片段126。
在步骤330,客户端110发送请求给包含了到第一存储器116的地址的数据库服务器120。在一实施例中,数据库服务器120也可给客户端110发送请求至给存储器126的第二片段,以返回来自客户端110的通信。也可使用TCP/IP通道132交换该请求。
为了执行读操作,在步骤340,数据库服务器120将数据写入第二存储器片段126,从而使数据被写入客户端110上的第一存储器片段116。一旦数据库服务器120将该数据写入第二存储器片段126,数据库服务器120的I/O端口128就将缓存于第二存储器片段126中的数据移动到客户端110。该数据可通过DMA通道134从客户端110移动到数据库服务器120。
在步骤350,将数据接收并缓存于客户端110的第一存储器片段116中。客户端110的I/O端口118将该数据移动到第一存储器片段116中。接着客户端110上的CPU 112从第一存储器片段116读取该读操作所请求的数据。
验证DMA通信如果图2和图3描述的无论写操作还是读操作在客户端110和数据库服务器120之间都不可用,则本发明的实施例允许客户端110和数据库服务器120使用TCP/IP通道132传送用于执行数据库操作的数据。如果客户端110和数据库服务器120的DMA配置是不兼容的,或因为某一原因是不可能使用的,则使用TCP/IP通道代替DMA通道134,提供了可靠的备份。
图4示出根据本发明的一个实施例的验证两台机器使用DMA数据传送交换数据的能力的方法,其中,数据用于数据库操作。为了执行读操作或写操作,可将例如图4描述的方法等方法结合在机器之间传送数据来使用。这样,例如图4描述的方法等方法可作为图2和3的方法的附加步骤来实现。
在步骤410,第一机器发送RPC给另一机器,以执行某一数据库操作。如所述的,远程过程调用可确定将执行的写操作或读操作。另一机器可将一返回发送给RPC。RPC及其返回都通过TCP/IP通道发送。
在步骤420,每台机器均为另一机器分配存储器片段。如其它实施例所描述的,在每台机器上分配的存储器提供了用于将在这些机器之间传送的数据的临时缓存区。
在步骤430,每台机器均给另一机器发送标识符或请求,至其所分配存储器。该标识符为一台机器提供地址,以将数据写入其他机器。该标识符可通过TCP/IP连接交换。
在步骤440中,做出验证可在两台机器之间执行DMA数据传送的决定。例如,可能的是,两台机器都是DMA启用的,但是一台机器使用不同设备、软件、和/或协议,使得对于执行DMA数据传送来说,这两台机器彼此不兼容。
有多种技术可用于做出验证决定。其中的一种技术提供了每台机器尝试使用分配的存储器将测试消息形式的数据写入另一机器。例如,一台机器可将测试消息通过其分配的存储器写入另一机器,且等待另一机器的确认应答,即数据通过该另一机器的分配的存储器被第二机器接收、缓存、和/或使用。在一个实施例中,仅将数据写入另一机器的机器需要发送测试消息。在另一实施例中,两台机器互相发送测试消息,且等待来自另一机器的确认应答。测试消息和确认应答都可通过DMA通道134传达。
另一种技术提供了通过比较每台机器的软件执行验证应答,以确定这些机器是否对于DMA传送是兼容的。例如,一台机器可发送包含其软件系统的消息给另一机器,且另一机器可执行比较来确定兼容性。在一实施例中,用于执行验证的兼容信息可通过TCP/IP通道发送。兼容信息可包含远程过程调用及其返回。除了或代替通过分配的存储器发送测试消息以外,可执行这样的比较步骤。
如果DMA兼容性在步骤440被验证,则在步骤450,可通过DMA连接在第一机器和第二机器之间执行数据库操作。如果DMA兼容性在步骤440没有被验证,则在步骤460,可通过TCP/IP连接在第一机器和第二机器之间执行数据库操作。例如,在图1中,如果验证在步骤440中被确定,则使用DMA通道134,否则使用TCP/IP通道132。
使用多个缓存区来传送数据图5示出根据本发明的实施例的用于使用多个缓存区在两台机器之间传送数据的基本系统。在图5中,客户端510与数据库服务器520通信,以执行包括利用读和/或写操作传送数据的操作的数据库操作。假定客户端510和数据库服务器520通过DMA连接534兼容。为了建立通过DMA通道534进行的通信,TCP/IP连接532也可使这两台机器互连。数据库服务器520用于管理图5中未示出的数据库。
客户端510具有存储器516,可将该存储器的一部分分配给数据库服务器520。同样,数据库服务器520具有存储器524,可将该存储器的一部分分配给客户端510。数据库服务器520还管理数据库532。可通过I/O端口518与客户端510通信。可通过I/O端口528与数据库服务器520通信。
一旦多台机器之一通过TCP/IP连接532将RPC发信号通知给另一机器,每台机器就为另一机器分配其存储器的一部分。客户端510从其存储器514分配第一存储器片段516。数据库服务器520从其存储器524分配第二存储器片段526。
根据实施例,每台机器上分配的存储器可分成多个缓存区。在客户端510上,将第一存储器片段516分成第一多个缓存区515。在数据库服务器520上,将第二存储器片段526分成第二多个缓存区525。缓存区之间的关系是,第一多个缓存区515中的每一个均对应于第二多个缓存区525中之一。这样,如果将数据写入客户端510或数据库服务器520上的缓存区之一,则该数据一旦确定的命令被执行,就自动写入两台机器中的另一机器上的相应缓存区。可选地,确定的命令可由来自用户的提示(prompt)启动,使得数据通过DMA通道435传送。
在图5中,缓存区515、525之间的对应通过标号示出,其中BUFF11对应于BUFF21,BUFF14对应于BUFF24。可使用TCP/IP通道532建立缓存区之间的对应。例如,可通过RPC1建立对应,以在客户端510和数据库服务器520之间启动数据库操作。
将所分配的存储器分成缓存区提高了数据从客户端510移动到数据库服务器520的速度。如果在所分配的存储器上没有进行划分,则必须在可在客户端510和数据库服务器520之间交换另外的数据之前,将保持在第一存储器片段516中的所有数据传送到第二存储器片段526。因此,如果第一存储器片段516的大小仅为4k,且客户端510的用户希望将8k的数据写入数据库服务器520,则必须将该数据本地写入第一存储器片段516至少两次。首先,必须将4k的数据写入第一存储器片段516,且一旦I/O端口518移动该数据到数据库服务器520,则可将下一个4k的数据写入第一存储器片段516。即使第一存储器片段516大得足以容纳8k的数据,8k的数据仍必须作为一个整块移动,从而一些数据将比其它数据较晚抵达。
相反,采用例如图5示出的实施例,使得两个4k片段的数据同时从第一存储器片段516传送,从而改善了将数据从客户端510传送到数据库服务器520的总传送时间。缓存区的使用减少了被发送的数据的大小,从而与不使用缓存区而将相同大小的数据从第一存储器片段516传送给第二存储器片段526相比,可以较少时间将储存在每个缓存区515中的数据传送给相应的缓存区525。
下面将描述客户端510和数据库服务器520在执行数据库操作期间交换数据的方式。一台机器(即传送器)将数据写入其被分配的存储器,且该数据在多个缓存区之间分配。接着将该数据传输到接收机器上的相应缓存区。一旦储存在接收机器上的每个缓存区中的数据被使用,则接收机器发送确认应答给传送器机器。在一实施例中,该确认应答指示接收机器上的缓存区为空。这样,可为接收机器上的每个缓存区发送确认应答。一旦收到确认应答,传送器机器就知道,由于接收到了确认应答,可将更多数据写入对应于接收机器的缓存区的缓存区。在可能进行异步数据传送的实施例中,数据可在执行写操作的机器的所分配存储器中排队,直到缓存区可用。
如图5中所示,如果客户端510正在将数据写入数据库服务器520,则客户端510将该数据本地写入第一存储器片段516。第一存储器片段516中的数据将被分配给缓存区515。客户端510的I/O端口518将数据从缓存区515移动到数据库服务器520。数据库服务器520的I/O端口528将数据移动到缓存区525中。以此方式,将客户端510中的一个缓存区515中的数据移动到数据库服务器520上的相应缓存区525。当数据库服务器520使用保持在一个缓存区515中的所有数据时,数据库服务器520发送确认应答给客户端510。客户端510接着能放置更多数据到特定缓存区515中,其中特定缓存区515对应于提供确认应答的缓存区525。可从每个缓存区515接收确认应答。在异步数据传送被启用的实施例中,客户终端510可使等待传送给数据库服务器520的数据排队,直到一个缓存区515在已经确认应答为空的数据库服务器520上具有相应的缓存区为止。
例如,如果客户端510对由数据库服务器管理的数据库中的数据执行读操作,则将被识别为用于传送到客户端510的数据移动到第二存储器片段526中。该数据可在缓存区515之间分配,且通过I/O端口528传送到客户端510。接着可将该数据保持在客户端510上的缓存区515中。客户端510接着从缓存区515读取数据。一旦其中的一个缓存区515变得可用,则客户端510发送确认应答给数据库服务器520,表明缓存区为空。
同步和异步数据传送在例如图5所示的系统中,数据可同步或异步传送。在异步数据传送中,如果正被本地写入至为另一机器分配的存储器的数据超过所分配存储器的大小,则正在写该数据的机器的处理器保持活动(active),以监控分配的存储器,并在其可用时将另外的数据写入该分配的存储器。在将该数据异步写入分配的存储器时,将该数据从传送器机器传送。
在异步传送中,在传送器机器上将数据本地写入队列。该队列使该数据在缓存区变为可用时写入缓存区。不需要正在本地写数据的机器上的处理器活动参与,就能监控和写数据到该队列。相反,需要通过所分配的存储器传送的所有数据被一次发送到该队列,且该队列保存用于所分配的存储器(或其单独的缓存区)的数据,直到另外的数据可在所分配的存储器之间分配。
硬件概述图6示出可实现本发明的实施例的计算机系统600的方框图。计算机系统600包括总线602或用于传送信息的其它通信机构、和与总线602连接以处理信息的处理器604。计算机系统600还包括例如随机存取存储器(RAM)或者其它动态存储装置等主存储器606,该主存储器与总线602连接,用于储存信息及要由处理器604执行的指令。主存储器606还可用于在执行将被处理器604执行的指令期间储存临时变量或其他中间信息。计算机系统600还包括与总线602连接的只读存储器(ROM)608或者其他静态存储装置,用于储存静态信息和关于处理器604的指令。例如磁盘或光盘等存储装置610与总线602连接,用于储存信息和指令。
计算机系统600可以经由总线602连接到诸如阴极射线管(CRT)等用于向计算机用户显示信息的显示器612。包括字母数字键和其它键的输入装置614与总线602相连接,用于传送信息和命令选择到处理器604。另一种用户输入装置是光标控制器616,如鼠标、轨迹球、或光标方向键等,用于传送方向信息和命令选择到处理器604及用于控制显示器612上的光标移动。该输入装置通常具有沿两个轴(第一轴(例如x轴)和第二轴(例如y轴))的两个自由度,使装置可在平面中确定位置。
本发明涉及用于实现在此描述的技术的计算机系统600的使用。根据本发明的实施例,响应于处理器604执行包含在主存储器606中的一个或多个指令的一个或多个序列,通过计算机系统600执行这些技术。可将这些指令从诸如存储设备610等另一计算机可读介质读入主存储器606。通过执行包含在主存储器606中的指令序列,使处理器604执行此处所述的处理步骤。在可选实施例中,可用硬连线电路取代软件指令,或者与软件指令结合来实施该发明。因此,本发明中的实施例不限于硬件电路和软件的任何特定组合。
这里使用的术语“计算机可读介质”是指参与提供指令给处理器604来执行的任何介质。这种介质可以采取很多形式,包括但不限于非易失性介质、易失性介质、和传输介质。非易失性介质举例来说包括例如存储装置610等光盘或磁盘。易失性介质包括例如主存储器606等动态存储器。传输介质包括同轴电缆、铜线、和光纤,包括包含总线602的导线。传输介质还可采取声波或光波的形式,例如那些在无线电波和红外线数据通信过程中产生的声波和光波。
通常的计算机可读介质举例来说包括软盘、软磁盘(flexibledisk)、硬盘、磁带、或者任何其它磁性介质;CD-ROM、任何其它光学介质;打孔纸、纸带、或者任何带有孔图案的物理介质;RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存储芯片或者卡;下面描述的载波、或者计算机可读的任何其他介质。
各种形式的计算机可读介质可参与传送一个或者多个指令的一个或多个序列给处理器604来执行。例如,该指令初始地可承载在远程计算机的磁盘中。该远程计算机能将该指令加载到其动态存储器中,然后使用调制解调器通过电话线发送指令。计算机系统600本地的调制解调器可接收电话线上的数据,且使用红外转换器将数据转换成红外信号。红外探测器可以接收红外信号携带的数据,且合适的电路可以把信息放到总线602上。总线602把数据传送到主存储器606中,处理器604从主存储器606取回并执行这些指令。由主存储器606接收的指令可随意地在处理器604执行这些指令之前或之后储存于存储装置610中。
计算机系统600还包括连接到总线602的通信接口618。通信接口618提供连接到网络链路620的双向数据通信,该网络链路与局域网622相连。例如,通信接口618可以是综合业务数字网(Integrated Services Digital Network,ISDN)卡或者调制解调器,用于提供到相应类型电话线的数据通信连接。又如,通信接口618可以是局域网(Local Area Network,LAN)卡,用于提供至兼容LAN的数据通信连接。也可以使用无线链路。在任何这样的实施方式中,通信接口618均发送和接收承载表示各种信息的数字数据流的电信号、电磁信号和光学信号。
网络链路620通常可通过一个或者多个网络提供数据通信给其它数据装置。例如,网络链路620可通过局域网622提供与主机624连接,或者提供与互联网服务提供商(Internet Service Provider,ISP)626操作的数据设备的连接。ISP 626进而通过目前通称为“互联网”628的全球分组数据通信网络提供数据通信服务。局域网622和互联网628都使用承载数字数据流的电信号、电磁信号或光学信号。通过各种网络的信号、和网络链路620上的信号、和通过通信接口618的信号,是传输信息的载波的典型形式,这些信号都传送数字数据给计算机系统600或者传送来自计算机系统600的数字数据。
计算机系统600能通过网络、网络链路620、和通信接口618发送消息和接收数据(包括程序代码)。在互联网实例中,服务器630可通过互联网628、ISP 626、局域网622、和通信接口618传送关于应用程序的所请求代码。
当代码被接收和/或储存在存储装置610上或者其它非易失性存储器上用于随后执行时,处理器604可执行所接收到的代码。以此方式,计算机系统600可以获得载波形式的应用程序代码。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种用于执行数据库操作的方法,所述方法包括在第一机器上执行下述步骤分配用于与第二机器交换数据的第一存储器片段,其中,所述第一机器和所述第二机器中至少之一是数据库服务器;在从所述第二机器传送数据给所述第一机器的数据库操作的执行过程中,响应于所述第二机器将所述数据写入所述第二机器上的第二存储器片段,将数据缓存在所述第一存储器片段中。
2.根据权利要求1所述的方法,进一步包括将到所述第一存储器片段的第一地址提供给所述第二机器;以及其中,将数据缓存在所述第一存储器片段中的步骤包括通过直接存储器存取启用通道将所述第二机器发送的数据接收进所述第一存储器片段。
3.根据权利要求2所述的方法,进一步包括,在所述数据库操作的执行过程中,所述第一机器上的程序读取所述第一存储器片段中的所述数据。
4.根据权利要求1所述的方法,进一步包括,在缓存所述数据时在所述第一机器上执行一个或多个数据库操作,包括执行一个或多个结构化查询语言命令,所述结构化查询语言命令涉及在所述第一存储器片段中从所述第二机器接收的数据。
5.根据权利要求1所述的方法,进一步包括,从所述第二机器接收所述第二存储器片段的第二地址,其中,在所述第二机器上分配所述第二存储器片段,用于与所述第一机器交换数据。
6.根据权利要求5所述的方法,进一步包括,为了使所述第二机器将所述数据写入所述第二存储器片段,发送将所述数据读入所述第二机器的请求。
7.根据权利要求6所述的方法,进一步包括,在缓存所述数据后,从所述第一存储器片段读取所述数据。
8.根据权利要求6所述的方法,其中发送读取所述数据的请求通过传输控制协议/互联网协议通道完成。
9.根据权利要求7所述的方法,进一步包括,在所述第一机器上提供本地通知,表明作为所述数据正在从所述第一存储器片段被读取的结果,所述第一存储器片段为空。
10.根据权利要求1所述的方法,其中分配第一存储器片段包括确定用于与所述第二机器交换数据的多个缓存区;以及缓存在所述第一存储器片段中接收的数据包括将从所述第二机器接收的数据的一部分缓存于所述多个缓存区的每个中。
11.根据权利要求10所述的方法,其中缓存从所述第二机器接收的数据的一部分包括从所述第二机器同时接收数据到多个被确定的缓存区中。
12.根据权利要求2所述的方法,进一步包括,在所述第一存储器片段变得可用于从所述第二机器接收更多数据时,发送确认应答给所述第二机器。
13.根据权利要求10所述的方法,进一步包括,在每个缓存区变得可用于从所述第一机器接收另外的数据时,发送确认应答给所述第二机器。
14.根据权利要求2所述的方法,进一步包括,确认所述第二机器能通过所述直接存储器存取启用通道发送所述数据给所述第一存储器片段。
15.根据权利要求14所述的方法,其中确认所述第二机器能通过所述直接存储器存取启用通道发送所述数据给所述第一存储器片段包括通过所述直接存储器存取启用通道发送测试消息给所述第二机器。
16.根据权利要求14所述的方法,其中确认所述第二机器能通过所述直接存储器存取启用通道发送所述数据给所述第一存储器片段包括使所述第二机器通过所述直接存储器存取启用通道发送测试消息给所述第一机器。
17.根据权利要求14所述的方法,其中确认所述第二机器能通过所述直接存储器存取启用通道发送所述数据给所述第一存储器片段包括将关于在所述第二机器上使用所述直接存储器存取启用通道的资源的信息与在所述第一机器上使用所述直接存储器存取启用通道的资源进行比较。
18.根据权利要求2所述的方法,进一步包括使所述第二机器能异步发送所述数据给所述第一存储器片段。
19.根据权利要求2所述的方法,进一步包括使所述第二机器能同步发送所述数据给所述第一存储器片段。
20.根据权利要求12所述的方法,进一步包括如果所述第一机器或所述第二机器不能使用所述直接存储器存取启用通道,则使用互联网协议启用通道代替所述直接存储器存取启用通道在所述第一机器和所述第二机器之间发送数据。
21.根据权利要求1所述的方法,进一步包括为了使所述第二机器将所述数据写入所述第二存储器片段,发送远程过程调用给所述第二机器。
22.根据权利要求1所述的方法,其中,发送远程过程调用包括通过传输控制协议/互联网协议通道发送所述远程过程调用。
23.根据权利要求1所述的方法,其中,响应于远程过程调用包括通过传输控制协议/互联网协议通道接收所述远程过程调用,和通过传输控制协议/互联网协议通道响应所述远程过程调用。
24.一种用于执行数据库操作的方法,所述方法包括在第一机器上执行下述步骤分配用于与第二机器交换数据的第一存储器片段,其中,所述第一机器和所述第二机器中至少之一是数据库服务器;以及其中,为了将数据缓存在第二存储器片段中,将所述数据写入所述第一存储器片段,其中,所述第二存储器片段分配在所述第二机器上,用于与所述第一机器交换数据。
25.根据权利要求24所述的方法,进一步包括,为了使用直接存储器存取启用通道将所述数据发送给所述第二机器,将所述数据写入所述第一存储器片段。
26.根据权利要求24所述的方法,进一步包括,将所述数据写入所述第一存储器片段包括为了从所述第二存储器片段读取数据,将所述数据写入所述第一存储器片段。
27.根据权利要求24所述的方法,其中分配用于第二机器的第一存储器片段包括确定用于所述第二机器的第一多个缓存区,其中所述第一多个缓存区中的每个缓存区都对应于所述第二机器上的第二多个缓存区中的缓存区。
28.根据权利要求27所述的方法,其中为了将数据缓存在第二存储器片段中而将所述数据写入所述第一存储器片段包括使用所述第一多个缓存区发送所述数据的一部分给所述第二多个缓存区中的每个缓存区。
29.根据权利要求28所述的方法,其中使用所述第一多个缓存区发送所述数据的一部分给所述第二多个缓存区中的每个缓存区包括使用所述第一多个缓存区中的第一缓存区发送所述数据的第一部分给所述第二多个缓存区中的相应的第一缓存区;以及从所述第二机器接收确认应答,所述确认应答表示所述第二多个缓存区中的所述相应的第一缓存区准备接收更多的数据。
30.根据权利要求29所述的方法,其中响应于接收所述确认应答,所述方法进一步包括使用所述第一多个缓存区中的所述第一缓存区发送所述数据的另一部分给所述第二多个缓存区中的所述相应的第一缓存区。
31.根据权利要求30所述的方法,其中从所述第二机器接收确认应答包括响应于由于所述第二机器使用所述数据的所述第一部分而导致所述第二多个缓存区中的所述相应的第一缓存区变空,接收所述确认应答。
32.根据权利要求25所述的方法,进一步包括确认所述第一机器和所述第二机器可使用所述直接存储器存取启用通道。
33.根据权利要求32所述的方法,其中确认所述第一机器和所述第二机器能使用所述直接存储器存取启用通道包括通过所述直接存储器存取启用通道发送测试消息给所述第二机器。
34.根据权利要求33所述的方法,其中确认所述第一机器和所述第二机器能使用所述直接存储器存取启用通道包括将关于在所述第二机器上使用所述直接存储器存取启用通道的资源的信息与在所述第一机器上使用所述直接存储器存取启用通道的资源进行比较。
35.根据权利要求25所述的方法,进一步包括检验所述第一机器和所述第二机器可使用所述直接存储器存取启用通道;以及如果所述第一机器或所述第二机器不能使用所述直接存储器存取启用通道,则自动使用互联网协议启用通道代替所述直接存储器存取启用通道从所述第一机器发送所述数据给所述第二机器。
36.根据权利要求24所述的方法,进一步包括,接收来自所述第二机器的远程过程调用,并响应于所述远程过程调用,将所述数据写入所述第一存储器片段。
37.根据权利要求36所述的方法,其中接收来自所述第二机器的远程过程调用包括通过传输控制协议/互联网协议通道接收所述远程过程调用。
38.根据权利要求25所述的方法,其中为了将所述数据发送给所述第二机器而将所述数据写入所述第一存储器片段包括在将所述数据发送给所述第二机器时将所述数据异步写入所述第一存储器片段。
39.根据权利要求25所述的方法,其中为了将所述数据被发送给所述第二机器而将所述数据写入所述第一存储器片段包括在将所述数据发送给所述第二机器时将所述数据同步写入所述第一存储器片段。
40.一种用于执行数据库操作的方法,所述方法包括在第一机器上执行下述步骤分配用于接收来自第二机器的数据的第一存储器片段;在将数据从所述第二机器传送给所述第一机器的数据库操作的执行过程中,通过直接存储器存取启用通道在所述第一存储器片段中接收来自所述第二机器的所述数据。
41.根据权利要求40所述的方法,进一步包括通过提供所述第一存储器片段的地址给所述第二机器,使所述第二机器能发送所述数据。
42.根据权利要求40所述的方法,进一步包括以下步骤缓存来自所述第二机器的所述数据;以及在缓存所述数据时,在所述第一机器上执行一个或多个数据库操作。
43.根据权利要求42所述的方法,其中,使所述第二机器能够发送所述数据包括使所述第二机器能够从所述第二机器上为所述第一机器分配的第二存储器发送所述数据,其中所述方法进一步包括以下步骤在执行所述一个或多个数据库操作时,为了将数据从所述第一机器传送给所述第二机器,从所述第二机器接收用于所述第二存储器片段的第二地址。
44.根据权利要求40所述的方法,进一步包括在所述第一机器上提供本地通知,所述本地通知表示由于所述数据被从所述第一存储器片段读取而导致所述第一存储器片段为空。
45.根据权利要求40所述的方法,其中,使所述第二机器能发送所述数据的步骤进一步包括以下步骤在所述第一存储器片段变得可用于从所述第二计算机接收更多的数据时,发送确认应答给所述第一机器。
46.根据权利要求40所述的方法,其中,使所述第二机器能发送所述数据的步骤包括使所述第二机器能够异步发送所述数据给所述第一存储器片段。
47.根据权利要求40所述的方法,其中,使所述第二机器能发送所述数据的步骤包括使所述第二机器能够同步发送所述数据给所述第一存储器片段。
48.一种承载一个或多个指令序列的计算机可读介质,其中当所述指令序列由一个或多个处理器执行时,使所述一个或多个处理器执行根据权利要求1至47中任一项所述的方法。
全文摘要
直接存储器存取用于在两台或更多机器之间执行数据库操作。为第二机器分配第一存储器片段。第一机器和第二机器中至少之一是数据库服务器。在将数据从第二机器传送给第一机器的数据库操作的执行过程中,响应于第二机器将数据写入第二机器上的第二存储器片段,将数据缓存在第一存储器片段中。
文档编号G06F12/00GK1751297SQ200380106101
公开日2006年3月22日 申请日期2003年12月10日 优先权日2002年12月17日
发明者德巴希斯·萨哈, 约翰·奇米斯基, 德巴希什·查特吉, 拉克希米纳拉亚南·奇丹巴拉恩 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1