CN101443765A - 数据库卸载处理 - Google Patents
数据库卸载处理 Download PDFInfo
- Publication number
- CN101443765A CN101443765A CNA2007800176187A CN200780017618A CN101443765A CN 101443765 A CN101443765 A CN 101443765A CN A2007800176187 A CNA2007800176187 A CN A2007800176187A CN 200780017618 A CN200780017618 A CN 200780017618A CN 101443765 A CN101443765 A CN 101443765A
- Authority
- CN
- China
- Prior art keywords
- data
- memory device
- request
- database
- srdbm92
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
Abstract
处理数据库请求包括:在包含所述数据库的数据的存储设备上提供第一数据库管理程序;在所述存储设备外部产生所述数据库请求;将所述数据库请求提供给所述存储设备上的所述第一数据库管理程序;及所述第一数据库管理程序通过从所述存储设备内部获取数据并在所述存储设备内处理所述数据服务于所述数据库请求从而提供其结果,其中所述数据中不是所述结果的一部分的那些部分不从所述存储设备提供到外部。处理数据库请求还可包括:提供主机,有数据库应用程序在所述主机上运行。所述数据库请求由所述数据库应用程序产生。处理数据库请求还可包括:在所述主机上提供第二数据库管理程序,其中所述第二数据库管理程序与所述第一数据库管理程序通信以提供所述数据库请求。
Description
发明背景
1.技术领域
本申请涉及计算机存储设备领域,尤其涉及有效使用计算机存储设备执行数据操作的领域。
2.背景技术
主处理机系统可使用存储设备保存和检索数据,存储设备包含多个主机接口装置(主机适配器)、磁盘驱动程序、及磁盘接口装置(磁盘适配器)。例如,这样的存储设备可由马萨诸塞州Hopkinton的伊姆西公司提供,且其在授权给Yanai等的美国专利5,206,939、授权给Galtzur等的美国专利5,778,394、授权给Vishlitzky等的美国专利5,845,147、及授权给Ofek等的美国专利5,857,208中公开。主机系统通过多个随其提供的通道访问存储设备。主机系统通过存储设备通道提供数据和访问控制信息,存储设备也通过通道提供数据给主机系统。主机系统不直接寻址存储设备的磁盘驱动程序,而是访问对主机系统表现为多个逻辑卷的装置。逻辑卷可以也可不对应于实际的磁盘驱动程序。
一些应用程序程序如数据库应用程序程序使主机对存储设备进行大量访问。此外,与数据库应用程序程序类似的应用程序程序使得在主机和存储设备之间交换大量数据,因而使用可能用于其它目的的数据带宽,所述其它目的包括提高其它应用程序程序的吞吐量。因此,可能希望这样一种机制,其使将在存储设备上进行的数据库操作能消除或减少所述存储设备和所述主机之间的大量访问和数据传输。在一些情况下还可能希望能够将与数据库操作相关联的CPU周期从所述主机的处理器移到所述存储设备的处理器。
发明内容
根据本发明,处理数据库请求包括在包含所述数据库数据的存储设备上提供第一数据库管理程序、在所述存储设备的外部产生所述数据库请求、将所述数据库请求提供给所述存储设备上的所述第一数据库管理程序、及所述第一数据库管理程序通过从所述存储设备内部获取数据并在所述存储设备内处理所述数据以提供其结果而服务于所述数据库请求,其中所述数据中不是所述结果的部分的那些部分不从所述存储设备提供到外部。所述第一数据库管理程序可使用Linux操作系统。处理数据库请求还可包括提供数据库应用程序在其上运行的主机。所述数据库请求可由所述数据库应用程序产生。处理数据库请求还可包括在所述主机上提供第二数据库管理程序,其中所述第二数据库管理程序与所述第一数据库管理程序通信以提供所述数据库请求。所述第一数据库管理程序可以是关系数据库管理程序。处理数据库请求还可包括提供与所述第一数据库管理程序通信以提供所述数据库请求的第二数据库管理程序,其中所述第二数据库管理程序在所述存储设备的外面。所述第一数据库管理程序可使用DRDA协议与所述第二数据库管理程序通信。所述存储设备的共享内存可用于内部获取数据。所述共享内存可包括用于内部获取数据的多个队列。所述队列中的至少一个可使用阵列实施。
进一步根据本发明,在存储设备内的计算机可读存储介质中的计算机软件处理针对保存在所述存储设备上的数据的数据库请求。所述计算机软件包括所述存储设备内的、从所述存储设备外部的源接收数据库请求的可执行代码,及包括所述存储设备内的、通过从所述存储设备内部获取数据并在所述存储设备内处理所述数据以提供其结果而服务于所述数据库请求的可执行代码,其中所述数据中不是所述结果的部分的那些部分不从所述存储设备提供到外部。所述可执行代码可使用Linux操作系统运行。服务于所述数据库请求的可执行代码可以是关系数据库管理程序。所述存储设备的共享内存可用于内部获取数据。所述共享内存可包括用于内部获取数据的多个队列。
进一步根据本发明,存储设备包括多个导控器及与至少一导控器通信的至少一处理器系统,所述导控器处理所述存储设备的数据接收和发送,其中所述至少一处理器系统包括处理针对保存在所述存储设备上的数据的数据库请求的计算机可读存储介质。所述计算机可读存储介质包括所述存储设备内的、从所述存储设备外部的源接收数据库请求的可执行代码,及包括所述存储设备内的、通过从所述存储设备内部获取数据并在所述存储设备内处理所述数据以提供其结果而服务于所述数据库请求的可执行代码,其中所述数据中不是所述结果的部分的那些部分不从所述存储设备提供到外部。服务于所述数据库请求的可执行代码可以是关系数据库管理程序。所述存储设备可包括用于内部获取数据的共享内存。所述共享内存可包括用于内部获取数据的多个队列。
进一步根据本发明,从主机处理器系统卸载应用程序程序处理包括在所述主机处理器系统上提供所述应用程序程序的第一部分、在包含用于所述应用程序程序的数据的存储设备上提供所述应用程序程序的第二部分、所述应用程序程序的所述第一部分与所述应用程序程序的所述第二部分通信以产生从所述应用程序程序的所述第一部分到所述应用程序程序的所述第二部分的请求、及所述应用程序程序的所述第二部分通过从所述存储设备内部获取数据并在所述存储设备内处理数据以获取其结果而服务于所述请求,所述结果从所述应用程序程序的所述第二部分提供给所述应用程序的所述第一部分,其中所述数据的不是所述结果的部分的那些部分不被提供。所述应用程序的所述第二部分可使用Linux操作系统运行。所述存储设备的共享内存可用于内部获取数据。所述共享内存可包括用于内部获取数据的多个队列。至少一所述队列可使用阵列实施。内部获取数据可包括将I/O请求提供给所述存储设备处理I/O请求的部分。所述存储设备处理I/O请求的所述部分可被提供旁路驱动程序,该旁路驱动程序从所述存储设备内的第一内部通路读数据请求并将服务于所述I/O请求的结果提供给所述存储设备内的第二内部通路。所述第一内部通路和所述第二内部通路可使用共享内存。
进一步根据本发明,提供在计算机可读存储介质中的计算机软件从主机处理器系统卸载应用程序处理。所述软件包括所述主机处理器系统上的将请求提供给包含所述应用程序的数据的存储设备的可执行代码、及包括所述存储设备上的通过从所述存储设备内部获取数据并在所述存储设备内处理数据以获取其结果而服务于所述请求的可执行代码,所述结果被提供给所述主机处理器系统,其中所述数据的不是所述结果的部分的那些部分不被提供。所述存储设备上的可执行代码可使用Linux操作系统运行。所述存储设备的共享内存可用于内部获取数据。所述共享内存可包括用于内部获取数据的多个队列。至少一所述队列可使用阵列实施。内部获取数据可包括将I/O请求提供给所述存储设备处理I/O请求的部分。所述计算机软件还可包括从所述存储设备内的第一内部通路读数据请求并将服务于所述I/O请求的结果提供给所述存储设备内的第二内部通路的可执行代码。所述第一内部通路和所述第二内部通路可使用共享内存。
进一步根据本发明,存储设备包括多个导控器及与至少一所述导控器通信的至少一处理器系统,所述导控器处理所述存储设备的数据接收和发送,其中所述至少一处理器系统包括计算机可读存储介质,其包括:所述存储设备内的从所述存储设备外部的源接收请求的可执行代码及所述存储设备内的通过从所述存储设备内部获取数据并在所述存储设备内处理数据以获取其结果而服务于所述请求的可执行代码,其中所述数据的不是所述结果的部分的那些部分不被提供到所述存储设备外部。所述存储设备还可包括用于内部获取数据的共享内存。所述共享内存可包括用于内部获取数据的多个队列。所述存储设备还可包括从所述存储设备内的第一内部通路读数据请求并将服务于所述I/O请求的结果提供给所述存储设备内的第二内部通路的可执行代码。
附图说明
图1为连同在此所述的系统一起使用的多个主机及数据存储设备的示意图。
图2为根据在此所述的系统的存储设备、内存、多个导控器和通信模块的示意图。
图3为根据在此所述的系统,具有主关系数据库管理系统的主机及具有辅助关系数据库管理程序的存储设备的图示。
图4为根据在此所述的系统,具有主关系数据库管理系统的主机经数据网络连接到存储设备上的辅助关系数据库管理程序的图示。
图5为根据在此所述的系统的主关系数据库管理系统的运行流程图。
图6为根据在此所述的系统的作为存储设备的一部分的处理器系统、HA和内存的图示。
图7为根据在此所述的系统,其上具有第一处理器系统、第二处理器系统及共享内存的导控器的图示。
图8为根据在此所述的系统,提供具有旁路驱动程序的辅助关系数据库管理程序的软件的图示。
图9为根据在此所述的系统,用于具有旁路驱动程序的HA的软件的图示。
图10为根据在此所述的系统的具有请求队列和响应队列的共享内存的图示。
图11为根据在此所述的系统,连同请求队列和/或响应队列一起使用的链表的图示。
图12为根据在此所述的系统向共享内存写数据的流程图。
图13为根据在此所述的系统从共享内存读数据的流程图。
图14为根据在此所述的系统,主机、辅助关系数据库管理程序及HA之间交互作用的图示。
图15为根据在此所述的系统,主机、辅助关系数据库管理程序及HA之间交互作用的另一实施例的图示。
图16为根据在此所述的系统,HA在接收数据时所执行的处理的流程图。
图17为根据在此所述的系统,连同用于处理请求队列和/或响应队列的另一实施例一起使用的表的图示。
图18为根据在此所述的系统,向共享内存写数据的另一实施例的流程图。
图19为根据在此所述的系统,从共享内存读数据的另一实施例的流程图。
具体实施方式
参考图1,示图20示出了连接到数据存储设备24的多个主机22a-22c。数据存储设备24包括内部内存26,如本文别处所述,其有助于存储设备24的运行。数据存储设备还包括多个主机适配器(HA)28a-28c,其处理主机22a-22c和存储设备24之间的读和写数据。尽管示图20示出主机22a-22c中的每一个分别连接到HA28a-28c之一,本领域技术人员应当意识到,HA 28a-28c中的一个或多个可连接到其它主机。
存储设备24可包括一个或多个RDF适配器单元(RA)32a-32c。RA 32a-32c连接到RDF链路34并与HA 28a-28c类似,但用于在存储设备24及同样连接到RDF链路34的其它存储设备(未示出)之间传送数据。除RDF链路34之外,存储设备24还可连接到另外的RDF链路(未示出)。
存储设备24还可包括一个或多个磁盘36a-36c,每一磁盘包含保存在存储设备24上的不同数据部分。磁盘36a-36c中的每一个可连接到多个磁盘适配器单元(DA)38a-38c中的相应磁盘适配器单元,其向相应磁盘36a-36c提供数据并从相应磁盘36a-36c接收数据。应注意,在一些实施例中,一个以上磁盘将由一个DA服务是可能的,及一个以上DA服务一个磁盘也是可能的。
存储设备24中对应于磁盘36a-36c的逻辑存储空间可被细分为多个卷或逻辑设备。逻辑设备可以也可不对应于磁盘36a-36c的物理存储空间。因而,例如,磁盘36a可包含多个逻辑设备,或者,单一逻辑设备可跨两个磁盘36a、36b。主机22a-22c可被配置成独立于磁盘36a-36c上的逻辑设备位置访问逻辑设备的任何组合。
一个或多个内部逻辑数据通路存在于DA38a-38c、HA 28a-28c、RA 32a-32c和内存26之间。在一些实施例中,可使用一个或多个内部总线和/或通信模块。在一些实施例中,内存26可用于帮助数据在DA 38a-38c、HA 28a-28c和RA 32a-32c之间传送。内存26可包含将由DA 38a-38c、HA 28a-28c和RA 32a-32c中的一个或多个执行的任务。内存26还可包含用于从磁盘36a-36c中的一个或多个取回的数据的高速缓存。内存26的使用将在下文中详细描述。
如图1中所示,存储设备24可提供为连接到主机22a-22c的独立设备,或者,存储设备24可以是包括多个其它存储设备及路由器、网络连接等的存储区网络(SAN)的一部分。所述存储设备可连接到SAN结构和/或可以是SAN结构的一部分。在此描述的系统可使用软件、硬件、和/或软件和硬件的结合实施,其中软件可保存在适当的存储介质中并由一个或多个处理器执行。
参考图2,示图50示出了存储设备24的实施例,其中多个导控器52a-52c连接到内存26。每一导控器52a-52c表示HA 28a-28c、RA 32a-32c、或DA 38a-38c中的一个或多个。在这里公开的实施例中,可以有高达64个导控器连接到内存26。当然,对于其它实施例,可使用更高或更低最大数量的导控器。
示图50还示出了可选通信模块(CM)54,其在导控器52a-52c之间提供备选通信路径。每一导控器52a-52c可连接到CM54,使得导控器52a-52c中的任一导控器可向导控器52a-52c中的任何其它导控器发送消息和/或数据,而不需要经过内存26。CM54可使用传统MUX/路由器技术实施,其中导控器52a-52c中的发送导控器提供适当的地址以使消息和/或数据将由导控器52a-52c中的预定接收导控器接收。CM54的部分或全部功能可使用一个或多个导控器52a-52c实施,例如,使得导控器52a-52c可与每一导控器52a-52c上提供的互连功能直接互连。此外,导控器52a-52c中的发送导控器能够同时向所有其它导控器52a-52c或其它导控器52a-52c的子组传播消息。
在一些实施例中,导控器52a-52c中的一个或多个可在其上具有多个处理器系统因而能够执行多个导控器的功能。在一些实施例中,其上具有多个处理器系统的导控器52a-52c中的至少一个可同时执行至少两种不同类型的导控器(如HA和DA)的功能。此外,在一些实施例中,其上具有多个处理器系统的导控器52a-52c中的至少一个可同时执行至少一类型的导控器的功能及执行另一处理系统的其它处理。这将在本文别处详细描述。
参考图3,系统80包括连接到存储设备84的主机82。主机82与如上所述的主机22a-22c之一类似,而存储设备84与如上所述的存储设备24类似。主机82包括数据库应用程序85及主关系数据库管理系统(PRDBMS)86,二者均可在主机82上运行。PRDBMS86以与传统RDBMS相同的方式(如使用SQL)与所述数据库应用程序85交互作用。所述数据库应用程序85对所述PRDBMS86进行传统的RDBMS调用并自其接收传统的RDBMS响应。因而,在此所述的系统可与配置成与RDBMS交互作用的任何数据库应用程序一起工作。在这里的实施例中,所述数据库应用程序85使用任何适当的接口如SQL与所述PRDBMS86交互作用。
所述存储设备84包括经链路94与所述PRDBMS86通信的辅助关系数据库管理程序(SRDBM)92。所述PRDBMS86可使用DRDA协议与所述SRDBM92通信,尽管任何适当的通信技术/协议均可用于提供在此所述的功能。所述SRDBM92可以有助于所述SRDBM92执行某些处理的方式与所述存储设备84一体化,要不然所述处理将由传统RDBMS在主机82上执行。存储设备84可包含由主机82上运行的数据库应用程序85访问和操作的数据库。所述SRDBM92的运行将在本文别处详细描述。
可在主机82和存储设备84之间提供第二数据链路96。所述第二数据链路96可对应于现有通道接口以在主机82和存储设备84之间提供传统的数据存储耦合,而另一链路94可用于所述PRDBMS86和所述SRDBM92之间的通信。在其它实施例中,不提供所述第二数据链路96,而是所述链路94既可用于主机82和存储设备84之间的传统数据耦合(现有通道接口)又可用于所述PRDBMS86和所述SRDBM92之间的通信。在链路94既用于传统数据耦合又用于所述PRDBMS86和所述SRDBM92之间的通信的情况下,任何适当的机制均可用于使主机82和存储设备84能在不同类型的数据/命令之间进行区分。
在一些实施例中,也可使用另外的其它存储器97。另一存储器97可代表与存储设备84类似的另一存储设备或任何其它类型的存储设备。另一存储设备97可以是主机82的本地磁盘。因而,在使用另一存储设备97的实施例中,所述PRDBMS86可访问存储设备84及另一存储器97。到所述另一存储器97的链路可以是任何适当的数据链路。
系统80提供一种机制,与数据密集应用程序如数据库应用程序相关联的大量处理藉此可从主机82卸载到存储设备84。此外,对于某些操作,需要在主机82和存储设备84之间交换的数据量可得以减少。例如,如果数据库应用程序85进行RDBMS调用以对提供在存储设备84上的数据库进行排序,所述SRDBM92可在存储设备84处执行所述排序而不必在所述排序操作时将任何记录从存储设备84传到主机82。相反,对于在主机82上运行及访问存储设备84上的数据的传统RDBMS,来自数据库应用程序85的执行排序的调用在所述排序操作时将使得大量数据在主机82和存储设备84之间传送以在主机82上而不是存储设备84上执行所述排序。
在一些实施例中,所述PRDBMS86和所述SRDBM92均是传统的、可通过商业途径获得的、提供全部RDBMS功能的RDBMS。所述SRDBMS86和所述SRDBM92可以是一样的软件包(即来自同一厂家),也可以是不同的软件包。在其它实施例中,所述PRDBMS86简单地为将所有RDBMS请求传给所述SRDBM92的通信层。当然,对于所述PRDBMS86简单地为通信层的实施例中,不可能包括另一存储器97,除非另一存储器包括与SRDBM92类似的相应SRDBM。应注意,所述PRDBMS86可使用双方均明白的任何协议与所述SRDBM92通信,包括特定数据库厂家使用的专用协议。还应注意,对于所述PRDBMS86,使用同一协议与数据库应用程序85及与所述SRDBM92通信是可能的(例如DRDA协议)。对于所述PRDBMS86,使用与用于和所述SRDBM92通信的协议不同的协议与数据库应用程序85通信也是可能的。
参考图4,示出了与上面结合图3所述的系统80类似的另一系统80’。然而,系统80’示出了可用于使所述PRDBMS86和所述SRDBM92之间的通信容易的网络98。所述网络98可以是任何数据通信网络,如因特网。所述网络98也可代表机构的内部数据网络、机构或机构群的宽域网络、或任何其它数据通信网络。PRDBMS86经第一连接94a连接到网络98,而SRDBM92经第二连接94b连接到网络98。到网络98的所述连接94a、94b可以任何适当的方式提供。系统80’也可在主机82和存储设备84之间包括可选的第二数据链路96。在这里的实施例中,所述PRDBMS86和所述SRDBM92使用适当的协议如DRDA经TCP/IP网络进行通信。
参考图5,流程图100示出了在服务于所述数据库应用程序85的请求时所述PRDBMS86执行的步骤。流程图100所示的处理对应于所述PRDBMS86不仅仅是通信层的系统(上述)。处理开始于第一测试步骤102,确定所述数据库应用程序85的请求是否将由所述SRDBM92服务。哪些操作由所述PRDBMS86执行而不用所述SRDBM92的帮助及哪些操作在所述SRDBM92的帮助下执行之间的划分由所述PRDBMS86和SRDBM92的设计员基于本领域技术人员熟悉的功能因素的变化进行选择。通常,为了使存储设备84和主机82之间传递的数据量最小,使在存储设备84上运行的SRDBM92执行要求对存储设备84上的数据进行大量访问的操作是有利的。因此,例如,由所述SRDBM92执行的操作可包括数据库排序和搜索操作,由所述PRDBMS86执行而不使用SRDBM92的操作可包括状态操作及先前的结果已由所述PRDBMS86缓存的操作。
如果在测试步骤102确定提供给PRDBMS86的请求要求不由SRDBM92处理,则控制从测试步骤102转到步骤104,所述PRDBMS86向调用进程(如数据库应用程序85)提供响应。在步骤104之后,处理结束。应注意,对于所述PRDBMS86为通信层的实施例,所述PRDBMS可使用所述SRDBM92用于提供给所述PRDBMS86的大量(否则全部)请求。
如果在测试步骤102确定提供给所述PRDBMS86的请求可使用所述SRDBM92提供的处理,则控制从测试步骤102转到步骤106,所述请求例如使用网络98提供给所述SRDBM92。应注意,在一些情况下,可提供修改版本的请求。例如,在一些实施例中,所述PRDBMS86可向所述SRDBM92提供适当格式化的请求(如DRDA),其可以不同于由所述PRDBMS86从所述数据库应用程序85接收的请求的格式(如SQL)。由所述PRDBMS86执行的对请求的任何重新格式化对本领域技术人员均是显而易见的,且至少部分依赖于所述PRDBMS86和所述SRDBM92之间的功能划分及使用的不同协议。
在一些实施例中,所述SRDBM92可服务于由不同于所述PRDBMS86的源(如其它PRDBMS、已特殊修改的应用程序等)提供的请求。因此,使任何外部进程/设备能将适当格式化的请求呈现给所述SRDBM92并使该请求由所述SRDBM92服务是可能的,所述SRDBM92将其结果提供给所述外部进程/设备。
在步骤106之后是步骤108,所述PRDBMS86等待对提供给所述SRDBM92的请求的响应。在步骤108之后,控制转到步骤104,如上所述,所述请求的结果被提供给调用所述PRDBMS86的进程(如提供给数据库应用程序85)。在步骤104之后,处理结束。
参考图6,示图120示出了在所述存储设备84处提供所述SRDBM92功能的可能实施例。示图120示出了内存122、处理器系统124和HA126,所有这些均连接到总线128。示图120代表存储设备84的内部硬件/系统的一部分,其可用于实施所述SRDBM92。因此,所述内存122可对应于如上结合图1中所示的存储设备24所述的内存26。HA126可以是如上结合图1中所示的存储设备24所述的HA28a-28c之一的修改版本(如本文别处所述)。处理器系统124可以是与如上结合图2中所示的存储设备24所述的导控器52a-52c类似的导控器。
所述HA126经所述内存122从所述处理器系统124接收数据请求。如本文别处所述,HA126的设备驱动程序使得HA126的软件读和写数据,好像所述数据正经传统的HA连接如SCSI连接或光纤通道连接进行传送一样。所述HA126服务于所述请求并将其结果提供给内存122。之后,处理器系统124通过访问内存122而获得所述结果。如本文别处所述,处理器系统124的设备驱动程序(如HBA驱动程序)可使所述处理器系统124的软件读和写数据,就像所述数据正经传统连接如SCSI连接或光纤通道连接进行传送一样。
所述处理器系统124和所述HA126均被示为包括外部连接127a、127b。然而,在处理器系统124的情况下,所述外部连接127a可用于(例如经网络98)从所述PRDBMS86接收请求。在HA126的情况下,所述外部连接127b可用于为所述HA126提供与在此所述的功能无关的传统连接,如到一个或多个主机的连接。
在这里的实施例中,所述处理器系统124运行Linux操作系统,尽管也可使用其它适当的操作系统。所述SRDBM92在Linux操作系统下的处理器系统124上运行。因此,在这里的实施例中,所述SRDBM92使用传统的、可通过商业途径获得的、在Linux操作系统下运行的RDBMS实施。如本文别处详细所述,处理器系统124的设备驱动程序和HA126的设备驱动程序使用内存122用于I/O操作,而不是通过传统的外部连接。因此,所述RDBMS应用程序和所述处理器系统124的操作系统均可以是传统的、可通过商业途径获得的、不需要进行大的(或任何)修改即可提供在此所述的功能的系统。
参考图7,导控器140被示为包括第一处理器系统142和第二处理器系统144。在这里的实施例中,与存储设备一起使用的导控器中的至少一个可包括两个或两个以上单独的处理器系统,每一处理器系统均能运行与同一导控器上的另一处理器系统运行的操作系统不一样的操作系统。在这里的实施例中,所述第一处理器系统142运行Linux操作系统及SRDBM92,而所述第二处理器系统144运行与提供HA功能相容的操作系统。
共享内存146连接到所述第一处理器系统142和所述第二处理器系统144。共享内存146可用于促进所述第一处理器系统142和第二处理器系统144之间的通信。所述第一处理器系统142和第二处理器系统144也可经总线148连接,所述总线为导控器140提供连接,包括一个或多个外部连接149a和到存储设备元件的一个或多个内部连接149b。导控器140的硬件可使用传统元件基于在此的描述以简单的方式实施。
应注意,提供与图7所示的硬件类似的虚拟机是可能的,其使用不同的硬件和适当的虚拟化软件,如可通过商业途径获得的VMware产品。
参考图8,示图150示出了提供SRDBM92功能的传统RDBMS152。RDBMS在O/S内核154如Linux内核上运行。所述O/S内核使用旁路驱动程序156以使所述RDBMS能通过共享内存进行通信,如本文别处所述。因此,由所述RDBMS152进行的标准读和写调用使将从所述共享内存读数据及将数据写到所述共享内存,而不是通过传统连接(如SCSI连接)。所述旁路驱动程序156的运行和实施将在本文别处详细描述。
参考图9,示图160示出了与旁路驱动程序164交互作用以提供在此所述的功能的HA软件162。由所述RDBMS写到所述共享内存的数据由旁路驱动程序164读取并呈现给HA软件162,就像所述数据已来自外部设备如使用SCSI或光纤通道连接的主机设备一样。因此,所述HA软件接收读和写存储设备上的数据的请求,就像所述请求已由外部设备呈现一样,即使所述请求实际上通过所述共享内存也是如此。类似地,所述旁路驱动程序164使所述HA软件162将数据写到所述共享内存,即使所述HA软件162正执行向外部设备如主机提供数据的操作。因此,所述HA软件162接收请求,就像所述请求已来自外部主机一样,并通过写数据完成这些请求,就像所述数据正被写到外部主机一样。所述旁路驱动程序164使得所述请求和数据将从所述共享内存读取及写到所述共享内存。
参考图10,共享内存170被更详细地示为包括一个或多个请求队列172和一个或多个响应队列174。所述请求队列172可用于将请求从所述SRDBM92传给所述HA。如本文别处所述,所述HA的驱动程序使通过所述共享内存170的请求对所述HA软件表现为是来自外部设备如主机的请求。类似地,连同所述SRDBM92使用的驱动程序使所述SRDBM92执行操作,就像所述请求正被提供给外部设备一样,即使所述请求实际上正被提供给所述共享内存170也是如此。
所述响应队列174可用于将数据从所述HA传给所述SRDBM92。与请求队列172处一样,所述HA软件执行就像响应正被提供给外部设备(如主机)一样,而实际上所述响应正被提供给共享内存170。类似地,连同所述SRDBM92使用的驱动程序使所述RDBMS执行就像所述响应正由外部设备提供一样,而实际上所述响应正通过共享内存170提供。
参考图11,链表180可用于提供所述请求队列172和/或响应队列174。当然,任何其它适当的数据结构均可用于提供所述队列中的一个或多个,包括其它类型的链表、阵列等。所述链表180包括多个单元182-184,每一单元包含数据字段182a-184a和下一字段182b-184b。所述单元182-184中的每一个的数据字段182a-184a是由所述HA或SRDBM92提供给所述共享内存170的请求或响应数据。任何适当的数据格式均可使用。例如,使用SCSI I/O格式在所述HA和所述SRDBM92之间交换数据以包含SCSI命令或包含SCSI响应命令描述块是可能的。
所述单元182-184中的每一个的所述下一字段182b-184b指向所述链表180中的下一单元。所述链表180中的最后单元的下一字段184b为空值指针,指示链表结束。栈顶指针指向所述链表180中的第一单元。所述链表180的操纵将在本文别处详细描述,尽管应注意,任何传统链表处理均可使用,包括既使用栈顶指针又使用栈底指针(第一指针和最后指针)的处理。
参考图12,流程图200示出了向所述请求队列172之一和/或所述响应队列174之一添加单元时所执行的步骤。如本文别处所述,所述SRDBM92可向所述请求队列172之一添加请求,而所述HA可向所述响应队列174之一添加响应。应注意,流程图200所示的处理对应于对设备驱动程序所做的修改,如本文别处所述。
处理开始于第一步骤202,为新单元分配内存以添加所述队列172、174之一。在步骤202使用的具体分配机制取决于用于分配和处理连同所述队列172、174使用的单元的方案。在步骤202之后是步骤204,数据由旁路驱动程序输出(写)到新分配的单元。在步骤204输出的数据对应于执行的操作的类型(请求或响应),当然还对应于用于通信的协议。在步骤204之后是步骤206,所述新分配的单元的下一字段被设为栈顶指针,该栈顶指针指向正向其添加数据的队列的第一单元。在步骤206之后是步骤208,所述栈顶指针被使得指向新分配的单元。在步骤208之后,处理结束。
参考图13,流程图220示出了轮询和删除连同请求队列172和/或响应队列174之一提供的数据所执行的步骤。如本文别处所述,所述SRDBM92通过一个或多个响应队列174从所述HA接收数据,而所述HA经一个或多个请求队列172从所述SRDBM92接收数据。因此,流程图220所示的处理对应于对设备驱动程序所做的修改,如本文别处所述。
处理开始于第一测试步骤222,确定正处理的队列是否为空(即栈顶指针为空值指针)。如果是,则处理循环回到步骤222以继续轮询直到队列不再为空为止。应注意,根据基础硬件/软件的特征,可使用另外的机制代替轮询。这些另外的机制包括CPU间信令机制或虚拟中断机制以在元件之间通信。
一旦在测试步骤222确定队列不为空,则控制从测试步骤222转到测试步骤224,确定所述队列是否只包含一个单元(即通过测试top.next是否等于空值)。如果是,则控制从所述测试步骤224转到步骤226,来自所述单元的数据由所述旁路驱动程序接收(读取)。一旦所述数据已由所述旁路驱动程序读取,其被提供给后续的处理以进行适当的处理。例如,如果所述旁路驱动程序是所述HA的一部分,及所读取的数据为请求,则所述后续的处理包括所述HA处理所述请求。
在步骤226之后是步骤228,由所述栈顶指针指向的单元被解除分配。在步骤228用于解除单元的分配的具体机制取决于用于分配和处理连同所述队列172、174使用的单元的特定方案。在步骤228之后是步骤232,所述栈顶指针被设为等于空值。在步骤232之后,控制转回到步骤222以继续轮询队列从而等待将被写到那里的更多数据。
如果在测试步骤224确定所述队列包含一个以上单元,则控制从测试步骤224转到步骤234,临时指针P1被设为等于所述栈顶指针。在步骤234之后是步骤236,第二临时指针P2被设为等于由所述P1指针指向的下一字段(P1.next)。在步骤236之后是测试步骤238,确定P2是否指向所述链表中的最后单元(即P2.next是否等于空值)。如果否,则控制从测试步骤238转到步骤242,P1被设为等于P2。在步骤242之后,控制转回到步骤236进行下一迭代。
如果在测试步骤238确定P2不指向所述队列中的最后单元,则控制从测试步骤238转到步骤244,接收(读)由P2指向的单元中的数据字段。在步骤244之后是步骤246,由P2指向的单元被解除分配。在步骤246之后是步骤248,由P1指向的下一字段及单元被设为等于空值。在步骤248之后,控制转回到测试步骤224以继续接收(读)数据。
参考图14,示出了主机82和存储设备84的可能结构。在图14所示的结构中,主机82与SRDBM92通信。如本文别处所述,在所述主机82上运行的PRDBMS86提供请求和接收响应。如图14中所示,主机82初始提供请求A 252给所述SRDBM92。请求A 252可以是任何适当的格式。响应于接收到请求A 252,所述SRDBM产生相应的请求B253以提供给HA162。应注意,请求A 252和请求B 253可以不同或相同,如本文别处所述。例如,请求A 252可以是排序多个数据库记录的请求,在这种情况下,请求B 253可以是请求HA162提供数据库记录的请求从而使得所述SRDBM可排序所述记录。如图14中所示,所述SRDBM92可在执行所请求的操作(如排序)时与所述HA162交换数据254。当完成时,所述SRDBM可将所述操作的结果(结果A255)提供给主机82。
应注意,在请求A 252和请求B 253之间可以有一到多种关系,从而单一请求A 252事务产生多个请求B 253事务。例如,请求A 252可以是请求某一字段的值高于某一数量的数据库记录的请求,在这种情况下,请求B 253及相应的数据交换254可导致所述HA162和所述SRDBM92之间的数百或数千个I/O操作。还应注意,尽管相当大量的数据可在HA162和SRDBM92之间交换,所述交换在存储设备84内容进行。不是结果A 255的一部分的数据不被传到存储设备84的外面。因此,例如,如果请求A 252请求特定字段具有最高值的数据库记录,在实现所述请求时所述HA162可将所有数据库记录传给所述SRDBM92,但只有具有最高值的记录(结果A 255)需要从存储设备84传送。
参考图15,主机82和存储设备84之间的另一配置示出所述主机82仅连接到HA162。在图15的方案中,HA162可用作将请求A 252传到所述SRDBM92的管道。与图14中所示的方案一样,所述SRDBM92可响应于请求A 252将请求B 253提供给HA162并可与所述HA162交换数据254。当所述操作完成时,所述SRDBM92可将其结果(结果A255)提供给HA162,其将所述结果传回到主机82。与图14一样,请求A 252和请求B 253之间可以有一到多种关系,及数据254的许多传送可保持在存储设备84内部进行。
参考图16,流程图260示出了所述HA处理数据所执行的步骤。流程图260所示的处理可用于图15中所示的结构。处理开始于第一测试步骤262,所述HA确定所接收的数据是否用于所述SRDBM92。如果是,则控制从测试步骤262转到步骤264,所述数据例如使用共享内存传给所述SRDBM92。在步骤264之后,处理结束。
如果在测试步骤262确定所述数据不用于所述SRDBM92,则控制从测试步骤262转到测试步骤266,确定所述数据是否来自所述SRDBM92。如果是,则控制从测试步骤266转到步骤268,以与在此所述相容的适当方式(如共享内存)传送所述数据。在步骤268之后,处理结束。否则,如果在测试步骤266确定所述数据不是来自所述SRDBM,则控制从测试步骤266转到步骤272,以传统方式处理所述数据(如从主机传给存储设备)。在步骤272之后,处理结束。
参考图17,表280示出了在共享内存中提供请求队列172和/或响应队列174的另一实施例。表280包括多个单元282-286,每一单元包含数据字段和下一字段。单元282-286中的每一个是由HA或SRDBM92提供给共享内存的请求或响应数据。任何适当的数据格式均可使用。例如,使用SCSI I/O格式在HA和SRDBM92之间交换数据以包括SCSI命令或包括SCSI响应命令描述块是可能的。
两个指针与表280一起使用,即消费者指针280a和生产者指针280b。所述指针280b指向所述单元282-286中具有空闲空间的单元,而所述指针280a指向添加到所述表280的所述单元282-286中的最旧单元。当向所述表280添加数据或从其删除数据时,所述指针280a、280b被递增表280大小的模量。当所述指针280a与指针280b指向同一单元时,表280为空。当所述指针280a等于所述指针280b加1模量大小时,表280是满的。
参考图18,流程图300示出了所执行的与向请求队列172之一和/或响应队列174之一添加单元的另一实施例有关的步骤。如本文别处所述,所述SRDBM92可向所述请求队列172之一添加请求,而所述HA可向所述响应队列174之一添加响应。应注意,流程图300所示的处理对应于对设备驱动程序所做的修改,如本文别处所述。
处理开始于第一测试步骤302,确定所述表280是否满。如果是,则处理循环回到步骤302以等待从所述表280删除数据的消费者进程(本文别处所述)。如果在测试步骤302确定所述表280未满,则控制从测试步骤302转到步骤304,所述生产者指针280b加1。在步骤304之后是步骤306,所写的数据被复制到由所述生产者指针280b所指向的单元。在步骤306之后,处理结束。
参考图19,流程图310示出了从表280删除数据以读请求队列172和/或响应队列174之一所执行的步骤。如本文别处所述,所述SRDBM92可通过一个或多个响应队列174从所述HA162接收数据,而所述HA162经一个或多个请求队列172从所述SRDBM92接收数据。因此,流程图310所示的处理对应于对设备驱动程序所做的修改,如本文别处所述。
处理开始于第一测试步骤312,确定所述表280是否为空。如果是,则处理循环回到步骤312以等待一些其它向表280添加数据的进程。如果在测试步骤312确定所述表280不为空,则控制从所述测试步骤312转到步骤314,从所述消费者指针280a指向的单元复制数据。在步骤314之后是步骤316,所述消费者指针280a加1。在步骤316之后,处理结束。
在另一实施例中,单一处理器系统可被配置成处理所述SRDBM处理及与所述存储设备的内部交互作用。所述单一处理器系统可模拟HA,使得所述单一处理器系统对存储设备的其余部分表现为HA。该实施例可通过将HA软件移到Linux操作系统并在所述单一处理器系统上运行所述Linux O/S、RDBMS应用程序及所移的HA软件进行实施。
应注意,尽管在此公开的系统使用共享内存,但任何其它适当的技术均可用于传送数据,包括基于总线的协议(如RapidIO、Infiniband)或例如使用TCP/IP的基于网络的协议。还应注意,在此所述的系统可用于其它类型的数据库应用程序(非关系数据库应用程序)。
在此所述的系统可扩展到用于任何类型的应用程序,其中将FO操作和/或处理循环卸载到存储设备被视为有利。应用程序可被分为多个部分,其中一个部分直接在存储设备上运行。将应用程序的使用保存在所述存储设备上的数据的部分放在存储设备上是有利的。主机处理器系统上的应用程序部分与存储设备上的应用程序部分通信以与本文别处结合数据库所述类似的方式向存储设备提供请求及从其接收结果。应注意,在本说明书中,术语“主机处理器系统”可包括能够向存储设备提供请求的任何处理设备,因而可包括另一存储设备。
在本发明已结合多个实施例进行描述的同时,对其的修改对本领域技术人员而言是显而易见的。因而,本发明的精神和范围在下面的权利要求书中提出。
Claims (10)
1、处理数据库请求的方法,包括:
在包含所述数据库的数据的存储设备上提供第一数据库管理程序;
在所述存储设备外部产生所述数据库请求;
将所述数据库请求提供给所述存储设备上的所述第一数据库管理程序;及
所述第一数据库管理程序通过从所述存储设备内部获取数据并在所述存储设备内处理所述数据服务于所述数据库请求从而提供其结果,其中所述数据中不是所述结果的一部分的那些部分不从所述存储设备提供到外部。
2、根据权利要求1的方法,其中所述第一数据库管理程序使用Linux操作系统运行。
3、根据权利要求1的方法,还包括:
提供主机,有数据库应用程序在所述主机上运行。
4、根据权利要求3的方法,其中所述数据库请求由所述数据库应用程序产生。
5、根据权利要求4的方法,还包括:
在所述主机上提供第二数据库管理程序,其中所述第二数据库管理程序与所述第一数据库管理程序通信以提供所述数据库请求。
6、根据权利要求1的方法,其中所述第一数据库管理程序是关系数据库管理程序。
7、根据权利要求1的方法,还包括:
提供与所述第一数据库管理程序通信以提供所述数据库请求的第二数据库管理程序,其中所述第二数据库管理程序在所述存储设备的外部。
8、根据权利要求7的方法,其中所述第一数据库管理程序使用DRDA协议与所述第二数据库管理程序通信。
9、根据权利要求1的方法,其中所述存储设备的共享内存用于内部获取数据。
10、根据权利要求9的方法,其中所述共享内存包括用于内部获取数据的多个队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/473,586 | 2006-06-23 | ||
US11/473,586 US20080010290A1 (en) | 2006-06-23 | 2006-06-23 | Application offload processing |
US11/473,617 | 2006-06-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101443765A true CN101443765A (zh) | 2009-05-27 |
Family
ID=38920245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800176187A Pending CN101443765A (zh) | 2006-06-23 | 2007-06-15 | 数据库卸载处理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080010290A1 (zh) |
CN (1) | CN101443765A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855627A (zh) * | 2019-01-16 | 2020-02-28 | 星环信息科技(上海)有限公司 | 应用部署方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051203B2 (en) * | 2009-03-12 | 2011-11-01 | Cisco Technology, Inc. | Providing SCSI acceleration as a service in the SAN |
US8161494B2 (en) * | 2009-12-21 | 2012-04-17 | Unisys Corporation | Method and system for offloading processing tasks to a foreign computing environment |
WO2012025728A1 (en) | 2010-08-27 | 2012-03-01 | Fxi Technologies As | Electronics Device |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206939A (en) * | 1990-09-24 | 1993-04-27 | Emc Corporation | System and method for disk mapping and data retrieval |
US5845147A (en) * | 1996-03-19 | 1998-12-01 | Emc Corporation | Single lock command for an I/O storage system that performs both locking and I/O data operation |
US5857208A (en) * | 1996-05-31 | 1999-01-05 | Emc Corporation | Method and apparatus for performing point in time backup operation in a computer system |
US5778394A (en) * | 1996-12-23 | 1998-07-07 | Emc Corporation | Space reclamation system and method for use in connection with tape logging system |
US7200666B1 (en) * | 2000-07-07 | 2007-04-03 | International Business Machines Corporation | Live connection enhancement for data source interface |
US20050015383A1 (en) * | 2003-07-15 | 2005-01-20 | Microsoft Corporation | Method and system for accessing database objects in polyarchical relationships using data path expressions |
US7487288B2 (en) * | 2004-05-14 | 2009-02-03 | International Business Machines Corporation | Dynamic loading of virtual volume data in a virtual tape server |
US20070005564A1 (en) * | 2005-06-29 | 2007-01-04 | Mark Zehner | Method and system for performing multi-dimensional searches |
-
2006
- 2006-06-23 US US11/473,586 patent/US20080010290A1/en not_active Abandoned
-
2007
- 2007-06-15 CN CNA2007800176187A patent/CN101443765A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855627A (zh) * | 2019-01-16 | 2020-02-28 | 星环信息科技(上海)有限公司 | 应用部署方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20080010290A1 (en) | 2008-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110232036B (zh) | 主机系统及其方法和加速模块 | |
US6009478A (en) | File array communications interface for communicating between a host computer and an adapter | |
US5471615A (en) | Distributed data processing system having front-end and back-end computers with different operating systems | |
US9542244B2 (en) | Systems and methods for performing primitive tasks using specialized processors | |
US7664909B2 (en) | Method and apparatus for a shared I/O serial ATA controller | |
US7464191B2 (en) | System and method for host initialization for an adapter that supports virtualization | |
US7801822B2 (en) | Method of controlling storage system | |
US7032228B1 (en) | Common device interface | |
US7543084B2 (en) | Method for destroying virtual resources in a logically partitioned data processing system | |
US7805706B1 (en) | Process for optimizing software components for an enterprise resource planning (ERP) application SAP on multiprocessor servers | |
CN104123242B (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
US7577764B2 (en) | Method, system, and computer program product for virtual adapter destruction on a physical adapter that supports virtual adapters | |
CN101124541A (zh) | 修改逻辑分区数据处理系统中的虚拟适配器资源 | |
US20080181234A1 (en) | System and method for providing quality of service in a virtual adapter | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
CN101305334A (zh) | 降低的本地总线通信量的磁盘驱动器操作的智能存储引擎 | |
US9477418B2 (en) | Assigning device adaptors to use to copy source extents to target extents in a copy relationship | |
CN101443765A (zh) | 数据库卸载处理 | |
US8533163B2 (en) | Database offload processing | |
US10732901B2 (en) | Storage system and storage control method | |
JP5031538B2 (ja) | データ分配方法、データ分配プログラム、及び並列データベースシステム | |
US20220391224A1 (en) | Plugin framework mechanism to manage computational storage devices | |
US20230195320A1 (en) | Systems and methods for integrating a compute resource with a storage device | |
US20230198740A1 (en) | Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device | |
WO2008002406A1 (en) | Database offload processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090527 |