CN107787490B - 分布式数据库网格中的直接连接功能 - Google Patents
分布式数据库网格中的直接连接功能 Download PDFInfo
- Publication number
- CN107787490B CN107787490B CN201680036398.1A CN201680036398A CN107787490B CN 107787490 B CN107787490 B CN 107787490B CN 201680036398 A CN201680036398 A CN 201680036398A CN 107787490 B CN107787490 B CN 107787490B
- Authority
- CN
- China
- Prior art keywords
- database
- grid
- distributed
- grid element
- application
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 98
- 238000009826 distribution Methods 0.000 claims description 68
- 230000008569 process Effects 0.000 claims description 66
- 230000004044 response Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 239000002253 acid Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000010006 flight Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据库被存储为在包括多个网格元素的分布式数据库网格中的多个数据库分片,每个网格元素包括中间层数据库系统。第一网格元素从在与第一网格元素的中间层数据库系统相同的存储器中执行的应用接收第一数据库事务,第一数据库事务包括对存储在属于第一网格元素的第一数据库分片中的具体数据的至少一个数据库操作。第一网格元素执行并提交第一数据库事务,而不需要另一个网格元素的参与。第一网格元素接收要求访问不属于第一网格元素的另一个数据库分片的第二数据库事务。所述多个网格元素中的多于一个网格元素执行第二数据库事务并使用两阶段提交协议来提交第二数据库事务。
Description
技术领域
本文描述的本发明的实施例一般而言涉及数据库,并且更具体地涉及分布式网格数据库。
背景技术
本节中描述的方法是可以追求的方法,但不一定是以前已经构想或追求的方法。因此,除非另有说明,否则不应当假设本节中描述的任何方法仅仅因为包含在本节中而成为现有技术。
数据库服务器管理并提供对特定数据库的访问。用户通过提交使数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器进行交互。用户可以是在客户端计算机上运行的一个或多个客户端应用程序和/或客户端进程。本文也可以将多个用户统称为用户。
在概念上,上述交互的特征在于跨多个层发生。实现每个级别处的部件的计算设备可以与每个其它级别处的计算设备在物理上不同。然而,物理分离并不是严格必要的。对于数据应用通常使用三层方案。“表示层”通常涉及终端用户操作客户端。例如,终端用户可以操作web浏览器或其它用户接口来请求在线服务(诸如预订航班),并且用户可以操作蜂窝电话来请求电话服务。
“中间层”通常是指通过与源自一个或多个后端数据源(诸如后端数据库服务器)的数据进行交互来对表示层请求做出响应的任何部件。例如,中间层web应用可以向用户提供用于预订航班的表示层web接口,并且响应于来自用户的请求而向数据库服务器发送一个或多个请求以获得航班数据。作为另一个示例,中间层蜂窝交换软件可以依靠来自数据库服务器的数据来确定如何对蜂窝电话进行呼叫的请求做出响应。
“数据层”涉及一个或多个数据源(诸如文件系统、web服务器或数据库服务器和数据库)。例如,数据层数据库可以包括以下中的一个或多个:存储在一个或多个持久性存储装置处的持久性数据库;数据库服务器,其与持久性存储装置直接交互以提供对存储在一个或多个持久性数据库中的逻辑结构的访问;以及,管理持久性存储装置或后端数据库服务器的其它部件。当中间层应用访问数据层数据库时,至少需要一次往返网络访问。
对于一些应用,将一个或多个数据库系统实现为中间层系统而不是常规数据层系统是有利的,由此避免了基于网络的延迟。中间层数据库系统通过使数据更靠近应用而为中层应用提供更快的数据访问。
一些中间层数据库系统再进一步,并支持直接模式。如本文所使用的,术语“直接模式”是指数据库软件在与一个或多个中间层应用相同的地址空间中运行,从而进一步降低了从一个或多个中间层应用访问数据库的开销。例如,通过将应用链接到作为可以与应用链接的可执行库而提供的数据库服务器软件,应用可以以直接模式运行。在直接模式中不需要进程间通信,因为应用能够访问存储在共享地址空间中的数据。
在单个中间层系统中,直接模式的实现方案相当简单。然而,如果有多个中间层系统,每个中间层系统都有单独的中间层数据库,那么对于中间层数据库系统来说,提供数据的单个映像(该单个映像可以跨中间层数据库系统分布)就变得有挑战性。因此,这种系统的可缩放性是有限的。因此,在分布式数据库网格中需要直接连接功能。
附图说明
在附图中:
图1是可以在其上实践本文描述的技术的系统的实施例的框图;
图2是中间层数据库网格的实施例的框图;
图3是示出用于经由直接连接处理数据库事务的过程的实施例的流程图;
图4是示出用于处理分布式数据库事务的过程的实施例的流程图;
图5是示出用于访问存储在中间层数据库网格的实施例中的数据的过程的实施例的流程图;以及
图6示出了可以在其上实现一个或多个实施例的计算机系统。
具体实施方式
在下面的描述中,出于解释的目的,阐述了许多具体细节,以提供对本发明的透彻理解。然而,将清楚的是,本发明可以在没有这些具体细节的情况下实践。在其它情况下,结构和设备以框图形式示出,以避免不必要地模糊本发明。
总体概述
公开了用于在包括多个数据库网格元素的数据库网格中提供直接连接功能的方法、技术和机制。可缩放网格体系架构被配置为提供对作为单个映像的整个数据库的访问,同时保持特定数据库网格元素和与该特定数据库网格元素运行在同一主机系统上的应用之间的直接连接功能。
如本文所使用的,术语“数据库网格元素”是指托管在中间层主机上的中间层存储器中(in-memory)数据库系统。网格元素包括数据库或较大数据库的数据库分片(shard),这将在下文中更详细地描述。网格元素还包括用于访问和管理数据库或数据库分片的数据库软件。数据库网格元素的重要特征是它支持用于访问数据库的多个模式:直接模式和远程连接模式。
在远程连接模式中,运行应用的进程向网格元素的主机上的另一个进程发送访问该网格元素的数据库的请求。该请求可以涉及在网格元素本地的数据库分片,或者可以涉及存储在其它网格元素上的其它数据。例如,为了支持这种模式,网格元素可以包括在主机上运行的一个或多个守护进程(daemon),这一个或多个守护进程负责服务于使用远程连接模式发送的请求。这种守护进程在本文被称为代理服务器。在许多方面中,代理服务器充当数据库服务器。
网格元素在本文可以被认为执行或进行操作或其它动作。当以这种方式指代网格元素时,可以意味着以直接模式运行的进程或者代理服务器正在执行操作或动作。
分布式数据库网格
分布式数据库网格包括多个数据库网格元素,这多个数据库网格元素提供跨多个数据库网格元素存储的数据库的单个映像。每个数据库网格元素保持数据库的一部分(其在本文被称为“数据库分片”或“分片”)。
相对于分布式数据库网格的网格元素以直接模式运行的任何应用可以访问整个数据库中的数据。然而,当访问另一个网格元素的分片时,将使用远程连接模式来访问该分片。
例如,应用进程可以相对于保持特定数据库分片的特定数据库网格元素以直接模式运行。应用进程可以查询整个数据库,包括由分布式数据库网格的其它数据库网格元素所保持的数据库分片。当被查询的数据实际上驻留在另一个数据库网格元素的数据库分片中时,请求被发送到该另一个数据网格元素的代理服务器。在一个实施例中,该请求被应用透明地发送,这是因为应用进程对链入(linked-in)的数据库软件的执行使得该请求被发送。
因为数据库跨数据库网格元素的集合被分区,所以常常有可能将来自“表示层”的请求路由到保持仅服务该请求所需的分片的特定网格元素。因此,在具体区域代码内的电话呼叫计费的示例请求中,请求可以完全以直接模式处理。这种系统提供单个系统直接模式中间层数据库的大部分性能优势,同时提供现代应用所需的可缩放性。
分布式数据库网格允许远程连接模式和直接模式的应用访问。在远程连接模式中,应用通过使用诸如TCP/IP之类的通信协议将消息从该应用发送到分布式数据库网格来与数据库软件进行通信。在直接模式中,应用进程可以以直接模式访问驻留在同一主机系统上的特定数据库网格元素。应用不是向数据库系统发送消息,而是诸如通过API简单地调用数据库系统。因此,由驻留在同一主机系统上的数据库网格元素存储的数据分片可以由应用“直接”访问,而不需要网络通信开销。
根据实施例,当来自“表示层”的请求被发送到分布式数据库网格时,该请求被路由到保持处理该请求所需的数据库分片的网格元素。例如,在电话计费系统中,如果客户的所有数据都按区域代码分区,那么对具体区域代码内的电话呼叫计费的请求可以全部被路由到存储保持用于该具体区域代码的数据的碎片的单个网格元素。
无论是使用直接模式还是远程连接模式,数据库网格元素都可以在对物理地存储在该数据库网格元素的分片中的数据进行操作时独立于分布式数据库网格的其它网格元素执行一个或多个数据库操作。例如,中间层应用的实例可以在根据分布方案存储特定分片的数据库网格元素内执行。当应用实例的数据库访问请求限于特定的数据库分片时,该应用实例可以直接读取和写入该特定分片,而不会招致分布式数据库访问的典型开销。在实施例中,分布式应用的应用实例根据用于数据集的分布方案被分区,由此增加了应用实例和数据库网格元素之间的数据共置(co-location)。
应用可以访问作为一个逻辑数据库的中间层数据库网格,而不处理关于数据位置的任何操作细节。任何数据库分片都可以在不知道分布方案的情况下被透明地访问。此外,数据库操作可以跨多于一个的数据库网格元素。在一个实施例中,知道数据集的分布方案的分布式应用可以将与恰当数据库分片共置的应用实例配置为在直接模式中访问相应的数据库网格元素。只引用位于本地元素上的数据的这种访问将不招致网络开销。应用可以访问存在于分布式数据库网格中其它数据库网格元素上的数据,但将招致用于这种访问的通信开销。
在一个实施例中,以维持ACID兼容性和SQL功能的向外扩展(scale-out)体系架构来设置分布式存储器中数据库网格。ACID是指保证可靠的数据库事务处理的属性集合:原子性、一致性、隔离性和持久性。该体系架构维持低响应时间并大幅降低直接连接访问的延迟,这对于要求实时响应时间的实时应用(诸如电话呼叫路由、认证和授权、实时计费、证券交易、欺诈检测、网上银行等)是关键的。
实施例涉及用于在分布式数据库网格中提供直接连接功能的方法。数据库被存储在包括多个网格元素的分布式数据库网格中。数据库根据用于该数据库的分布方案跨多个网格元素分布。存储数据库的具体分片的特定网格元素经应用和该特定网格元素之间的直接连接从应用接收第一数据库事务。该数据库事务包括对具体数据的至少一个数据库操作。具体网格元素执行第一数据库事务并提交第一数据库事务,而不需要多个网格元素中的另一个网格元素的参与。如果分布式数据库网格元素接收到第二数据库事务,该第二数据库事务包括对存储在分布式数据库网格的多个元素中的数据的数据库操作,那么对分布式数据库网格中的这些元素中的每一个元素执行第二数据库事务。使用两阶段提交协议来跨这些数据库元素提交第二数据库事务。
在其它方面中,计算机装置和计算机可读介质被配置为执行前述步骤。
结构概述
图1是可以在其上实践本文描述的技术的系统的实施例的框图。下面更详细地描述系统100的部件。其它系统可以包括更多或更少的不同布置的部件。而且,工作在部件之间的分布可以因系统而异。系统100包括表示层190、中间层130和可选的数据层110。
表示层190包括客户端191-194。客户端191-194可以包括客户端侧应用,诸如web浏览器、桌面应用、移动应用和其它客户端侧应用。客户端191-194从中间层应用181-185请求服务。
中间层130包括应用181-185。应用181-185可以包括一个或多个web应用、服务器、服务提供商和/或其它应用和/或服务。在一个实施例中,应用181-185包括一个或多个分布式应用。如本文所使用的,术语“应用”是指包括可由包括一个或多个处理器的系统执行的指令的可执行软件的单元,其包括任何分布式应用和/或其任何实例。在实施例中,中间层应用181-185中的一个或多个不由数据库系统150的供应商提供。例如,一个或多个中间层应用可以由第三方开发。可替代地,中间层应用181-185中的一个或多个可以是由数据库系统供应商提供的应用。为了提供由客户端191-194请求的服务,中间层应用181-185依靠数据库系统150中的数据,并且可配置为访问存储在数据库系统150中的数据。
数据库系统150包括一个或多个中间层部件。虽然数据库系统150的一个或多个部件被示为驻留在中间层130中,但是数据库系统150可以包括数据层110中的一个或多个其它部件,包括但不限于备份部件和/或遗留部件。可替代地,数据库系统150可以完全驻留在中间层130中。
数据库系统150包括中间层分布式数据库网格140。分布式数据库网格140包括多个数据库网格元素160-162。每个数据库网格元素160-162包括数据和执行数据库功能的一个或多个守护进程,使得每个数据库网格元素160-162可以充当自包含(self-contained)的中间层数据库系统。守护进程不仅可以包括一个或多个代理服务器,而且还可以包括负责在其相应的数据库网格元素处的各种资源管理任务(诸如维护和报告关于数据使用和连接的统计信息、管理共享的存储器访问和策略,以及启动和/或恢复其相应的中间层数据库网格元素的各个部件)的一个或多个进程。数据库网格元素160-162可以根据需要进一步包括任何数量的附加部件。
在一个实施例中,每个数据库网格元素160-162将指派的数据库分片存储在易失性存储器中(诸如RAM中)的存储器空间中。数据库网格元素160-162可以与运行在同一主机系统上的其它应用共享该存储器空间以便于直接模式访问。数据库网格元素160-162可以被托管在与机架上的其它服务器刀片互连的服务器刀片上,和/或在可以物理地耦合或可以不物理地耦合的异构计算单元上。
数据库网格元素160-162可以被实现在分开的主机计算设备上。可替代地和/或附加地,可以在共享的主机计算设备上实现数据库网格元素160-162中的一个或多个。在一个实施例中,每个数据库网格成员160-162具有其自己的事务日志文件和检查点文件,这些文件被持久化到盘。在系统重新启动或发生故障的情况下,存储器中数据库将从检查点和事务日志文件中恢复。
在实施例中,一个或多个数据库网格元素160-162包括存储器中数据库(诸如但不限于Oracle TimesTenTM数据库),存储器中数据库在运行时完全驻留在易失性存储器中并且为了恢复和重新启动的能力而被持久化到盘存储装置。TimesTenTM为SQL操作提供完整的事务支持,并且事务日志被持久化到盘以用于恢复。
数据库网格元素160-162全都被认为是同一分布式数据库网格140的部分,因为它们每个都存储数据库的单独数据库分片,该数据库可以作为单个映像通过数据库网格元素160-162中的任何一个来访问。数据库网格元素160-162能够通过检索和/或操纵存储在它们相应的数据库分片中的数据来独立地对来自应用181-185的数据库命令做出响应。数据库网格元素160-162也被配置为参与分布式数据库操作,这将在此后更详细地描述。
中间层应用181-185可以通过到特定的数据库网格元素的直接连接或者通过远程连接模式来通过数据库网格元素160-162访问数据库。例如,诸如当中间层应用182在与数据库网格元素160相同的主机系统上运行以及中间层应用183和185在与数据库网格元素162相同的主机系统上运行时,中间层应用182-183和185被配置为经由直接模式访问数据库网格元素160-162。中间层应用还可以以远程连接模式访问数据库,诸如中间层应用181和中间层应用184。在一个实施例中,中间层应用181-185中的一个或多个是分片应用实例,其基于存储在分布式数据库网格140中的数据的分布方案而利用共置。将在下文中更详细地描述分片应用实例。
如将更详细解释的,作为由数据库网格管理器170管理的分布式操作,中间层应用181-185可以访问数据库网格元素160-162的多个数据库分片。在实施例中,数据库系统150可以不具有诸如数据库网格管理器170之类的任何集中式数据库网格管理器。数据库网格管理器170可以被配置为分布式数据库网格140的部件,或者作为数据库系统150的另一个中间层130部件,或者作为数据库系统150的数据层110部件。
在一个实施例中,数据库网格元素可以是多个分布式数据库网格的成员。例如,第一分布式数据库网格可以包括数据库网格元素160-162,而第二分布式数据库网格可以包括多个数据库网格元素,这多个数据库网格元素包括数据库网格元素162但不包括数据库网格元素160。此外,特定的数据库网格元素对于一个数据库分片可以是活动的数据库网格元素,而对于另一个数据库分片可以是备用(standby)的数据库网格元素或订阅者(subscriber)数据库网格元素。
数据库网格元素160-162是分布式数据库网格140的活动数据库网格元素。除了活动数据库网格元素160-162之外,分布式数据库网格140还可以包括一个或多个备用数据库网格元素164。备用数据库网格元素164被同步或者异步地保持为与对应的活动数据库网格元素162处的事务一致,使得如果活动数据库网格元素162发生故障,那么备用数据库网格元素164可以以最小的恢复努力来取代活动数据库网格元素162。分布式数据库网格140可以具有用于任何特定数据库网格元素的一个或多个备用数据库网格元素的特征,或者可替代地不具有备用数据库网格元素的特征。
除了活动数据库网格元素160-162之外,分布式数据库网格140还可以包括一个或多个订阅者数据库网格元素166,这些订阅者数据库网格元素166被配置为提供与相关联的数据库网格元素162对应的对数据库分片的只读访问。在实施例中,相关联的数据库网格元素162处的变化被复制或以其它方式传播到订阅者数据库网格元素166,这比被复制或以其它方式传播到备用数据库网格元素162的频次低。分布式数据库网格140可以具有用于任何特定数据库网格元素的一个或多个订阅者数据库网格元素的特征,或者可替代地不具有订阅者数据库网格元素的特征。
分布式数据库网格140还可以包括不存储任何特定的数据库分片的一个或多个空闲(spare)数据库网格元素。空闲数据库网格元素可以被用于从数据库网格元素160-166中的任何一个处的故障中恢复,并且可以在数据库网格元素160-166中的任何数据库网格元素不能从故障中恢复时替换它们。在实施例中,可以为分布式数据库网格140指定任意数量的空闲数据库网格元素,或者可替代地,不指定空闲数据库网格元素。
部署分片应用实例
图2是中间层分布式数据库网格的实施例的框图。分布式数据库网格200包括中间层分布式数据库网格200的多个数据库网格元素202-208以及分布式应用的多个应用实例222-228。图2是能够实现本文所述的技术的系统的示例。其它系统可以包括更多或更少的不同布置的部件。而且,工作在部件之间的分布可以因系统而异。
主机242-248是执行中间层应用实例222-228的中间层计算设备。应用实例222-228是分布式应用的执行实例。主机242-248还可以包括任何数量的附加应用(包括其它分布式应用)或与其通信。
分布式数据库网格200被配置为允许以两种不同模式的数据库访问:远程连接模式和直接模式。因此,应用可以选择性地以直接模式或者远程连接模式来访问数据库。
数据库网格元素202-208被部署在中间层130中。被描述或暗示为由数据库网格元素执行的任何任务应当被理解为由在对应主机242-248处执行的任何一个或多个进程执行或者与数据库网格元素202-208相关联。类似地,被描述或暗示为由主机242-248执行的任务应当被理解为由在主机242-248处执行的任何一个或多个进程执行。
数据库网格元素202-208被配置为根据分布方案来存储跨数据库网格元素202-208分布的数据库的数据库分片,这将在下文中更详细地描述。数据库网格元素202-208还可以包括存储在易失性存储器中的附加部件,包括索引和临时空间。数据库网格元素202-208的其它部件可以包括事务日志和恢复数据(诸如快照),这些可以存储在非易失性存储器(诸如与执行数据库网格元素202-208的实例的主机242-248相关联的闪存盘或硬盘)中。
分布方案
在一个实施例中,每个数据库网格元素202-208根据分布方案存储数据库的数据库分片。可以基于数据库的缺省设置、数据类型的缺省设置、另一个缺省设置、用于选择分布方案的一个或多个优化过程、从应用(包括分布式应用的应用实例222-228)接收的命令或另一种用于选择分布方案的方法来选择分布方案。
数据库分片可以包括一个或多个表。不同的表可以基于不同的分布方案进行划分。数据库可以分布在数据库网格元素202-208上,以便散布数据、共置数据和/或本地化数据。在一个实施例中,分布方案被选择为优化一个或多个应用(包括分布式应用)的性能,诸如以减少直接模式中的延迟。在一个实施例中,通过应用编程接口(API)将分布方案暴露给应用。可以提供API以用于确定适当的数据库网格元素202-208,从而允许应用实例222-228通过直接访问存储器中的相应数据库分片212-218来利用直接模式。
在一个实施例中,根据散列(hash)分布方案对一个或多个表进行分区。在散列分布方案中,基于主键的散列或者一个或多个表中的可选的一个或多个列,将一个或多个表跨数据库网格元素202-208分布。在一个实施例中,散列分布方案是用于一个或多个表的缺省分布方案。散列分布方案可以适应拓扑变化,诸如数据库网格元素202-208的数量或标识的变化。在一个实施例中,特定的散列分布方案通过API被暴露给应用,该API允许应用基于散列分布方案来确定包括包含给定键值的数据的分片212-218的数据库网格元素202。
在一个实施例中,数据库的至少一部分(诸如一个或多个表)根据参考分布方案在数据库分片212-218之间被分区。在参考分布方案中,基于一个或多个表的外键(foreignkey)列的散列,将一个或多个表跨数据库网格元素202-208分布。外键列可以是数据库的一个或多个其它表的主键列。通过对一个或多个表使用外键列,相关的数据可以相对于另一个集合的一个或多个表共置。例如,由具体客户下的订单可以与和该具体客户相关的其它数据共置。共置的一个好处是避免对这种相关表上的连接的远程访问。参考分布方案可以适应拓扑变化,诸如数据库网格元素202-208的数量或标识的变化。在一个实施例中,特定的参考分布方案通过API被暴露给应用,该API允许应用基于散列分布方案来确定包括包含给定键值的数据的分片212-218的数据库网格元素202。
在一个实施例中,数据库的至少一部分(诸如一个或多个表)根据复制分布方案在数据库分片212-218之间分区。在复制分布方案中,一个或多个表或其部分被存储在多个数据库网格元素202-208上。在一个实施例中,一个或多个表或其部分的相同副本被存储在所有数据库网格元素上。当在不同的数据库网格元素上维护多个本地副本时,在副本之间维持一致性,使得副本被同步。复制分布方案非常适合被频繁访问的小型表,并且减少或消除远程访问成本。例如,一些被频繁访问的表可以在相对于特定数据库网格元素202-208本地存储时允许以直接模式执行更多的数据库操作。
上面提到的分布方案是可以被使用的分布方案的示例。其它分布方案(包括基于标签的分布方案、基于范围的分布方案和定制的分布方案)可以根据本文所述的一个或多个实施例被使用。
应用可以被配置为利用数据放置信息来获得最可能的亲和性(affinity)。在一个实施例中,应用知道数据库(诸如一个或多个表)跨中间层数据库网格的数据库网格元素分布的分布方案。在一个实施例中,应用被允许指定用于一个或多个特定表的分布方案。可替代地和/或另外地,可以(诸如经由映射、API或者可以将一个或多个特定表中的具体数据映射到具体数据库网格元素的任何其它分布方案)给予应用关于分布方案的知识。
直接模式
可以以直接模式访问存储在分布式数据库网格200中的数据。在直接模式中,应用实例222-228可以直接访问分布式数据库网格200的对应数据库网格元素202-208。驻留在与对应数据库网格元素202-208相同的主机242-248上的应用实例222-228可以直接连接到对应的数据库网格元素202-208。因此,应用实例可以直接读取和写入特定的分片。
在一个实施例中,应用(诸如应用实例222-228)经由一个或多个存储器中API调用以直接模式访问对应的数据库网格元素202-208。如前面所提到的,通过使用预编译的指令库以及用于利用这些指令的API来开发应用,其中预编译的指令库执行与数据库服务器相同的许多功能。在一个实施例中,应用(诸如应用实例222-228)经由JDBC(Java数据库连接)、ODBC(开放数据库连接)、ODP.NET(用于.NET的Oracle数据库提供者)、OCI(Oracle调用接口)、Pro*C/C++以及Oracle PL/SQL编程接口来使用标准SQL以直接模式访问分布式数据库网格200。
在一个实施例中,应用(诸如应用实例222-228)使用一个或多个驱动器232-238连接到分布式数据库网格200,包括数据库网格元素202-208中的一个或多个。驱动器232-238被配置为经由现有的库访问分布式数据库网格200,并且可以包括一个或多个直接模式驱动器和/或包括直接模式功能的一个或多个驱动器。在一个实施例中,驱动器232-238被配置为处理访问分布式数据库网格200的数据库请求,以及处理直接模式请求和远程连接模式请求二者。
透明的操作
不管是使用直接模式还是远程连接模式,应用都可以访问作为一个逻辑数据库的中间层数据库网格,而无需处理关于数据位置的任何操作细节。在这种情况下,中间层数据库网格作为分布式数据库网格执行分布式数据库操作。位置透明性是指需要访问分布式系统中的资源的应用不需要知道或指定资源的位置(诸如存储特定数据子集的特定数据库网格元素)的特性。应用可以向具有位置透明性的数据库系统150提交数据库请求。
在一个实施例中,数据库网格元素160-162中的一个或多个可以被配置为处理来自应用的要求访问多个数据库分片的数据库请求。在这种情况下,一个或多个数据库网格元素160-162被配置为发起和/或以其它方式透明地管理涉及其它数据库网格元素160-162的分布式数据库操作。可替代地和/或另外地,集中式数据库网格管理器170(参见图1)可以被配置为处理这种数据库请求或以其它方式管理涉及数据库网格元素160-162的这种分布式数据库操作。
查询处理
查询是对来自数据库的信息的请求。查询通常以查询语言的语句提交,该语句由数据库服务器解释以引发一个或多个数据库操作。对分布式数据库网格的访问可以是查询的形式,诸如来自一个或多个应用的查询。查询可以以直接模式或远程连接模式提交;无论使用哪种模式,查询结果都将是相同的。查询可以在处理查询所需的数据不位于单个数据库网格元素上时被提交。
当经由到具体网格元素的直接连接以直接模式提交查询时,当该具体网格元素存储处理该查询所需的全部具体数据时,该具体网格元素将独立于分布式数据库网格的其它网格元素对查询做出响应。例如,包括读取操作的查询从具体网格元素读取数据,而包括写入操作的查询将数据写入具体网格元素。
在一个实施例中,分布式应用的应用实例222直接与特定的数据库网格元素202连接,其中该应用基于对应数据库的分布方案进行分区。应用实例222可以经直接连接向特定数据库网格元素202提交查询,当具体网格元素202的分片212存储处理该查询所需的全部具体数据时,该查询将完全以直接连接模式被处理。在一个实施例中,分布式应用实例222-228使用数据库的分布方案来确定是否有任何特定的数据库网格元素202-208完全包含查询所要求的具体数据,使得该特定的数据库网格元素本地的应用实例经由直接连接提交查询。
当没有具体网格元素完全包含处理查询所需的具体数据时,网格元素202-208之一可以访问分布式数据库网格200的适当数据库网格元素202-208。可替代地,应用可以经由分布式网格管理器170提交查询,其中分布式网格管理器170被配置为管理分布式数据库网格200上的分布式数据库操作。
事务处理
事务包括一个或多个数据库操作,为了数据库一致性,这些操作可以被视为一个单元。事务是原子性的、一致的、隔离的和持久的,即,符合ACID的。为了维持ACID兼容性,事务的所有数据库操作应当都被提交,或者应当都不提交。在后一种情况下,由数据库操作造成的改变应当被回滚。
当事务被处理时,它可能访问多个数据库网格元素,并且必须使用机制来确保所有数据库网格元素都提交或者都回滚所有数据库网格元素上的事务。在一个实施例中,使用两阶段提交机制来确保分布式事务的提交。两阶段提交机制中涉及的通信造成延迟增加。在第一阶段中,协调数据库网格元素要求其它每个参与的数据库网格元素确认该数据库网格元素是否能够提交或回滚事务以及在第二阶段中什么时候被请求这样。参与的数据库网格元素各自通过在本地继续处理事务、生成重做(redo)记录来准备提交,使得数据库网格元素可以提交或者回滚本地事务。为了确保事务可以被回滚,软件系统通常记录每个操作(包括提交操作本身)。每个参与的数据库网格元素通知协调数据库网格元素是否成功执行了事务的本地操作,或者参与的数据库网格元素是否无法成功执行事务的本地操作。在第二阶段中,当每个参与的数据库网格元素已经成功执行了所有对应的本地操作时,发起的数据库网格元素要求所有参与的数据库网格元素提交事务。如果这个结果是不可能的,那么所有的数据库网格元素都被要求回滚。每个参与数据库网格元素提交分布式事务的本地部分。当提交阶段完成时,分布式系统的所有数据库网格元素上的数据都是一致的。
当事务仅涉及驻留在单个网格元素中的数据时,具体的网格元素独立地提交数据库事务,而不需要多个网格元素中的另一个网格元素的参与。这允许提高的性能,诸如减少延迟。在一个实施例中,应用可以被配置为以优化的方式来构造事务,使得在可能时事务只对单个数据库网格元素本地的数据库分片进行操作,从而该事务可以以直接模式来处理,并且该事务可以由单个数据库网格元素提交而不需要两阶段提交机制。
故障
在一个实施例中,分布式数据库网格200被配置为如下所述地处理故障。在数据库网格元素202-208上的软件故障的情况下,发生故障的数据库网格元素202-208的对应分片212-218失效,直到诸如基于发生故障的数据库网格元素202-208的一个或多个检查点文件和/或事务日志文件重新加载该分片。
在与数据库网格元素202-208对应的主机242-248上的硬件故障的情况下,可以将发生故障的数据库网格元素202-208的实例加载到新的主机242-248上。对应的分片212-218检查点文件和/或事务日志文件被复制或以其它方式传送到新主机242-248或者被置为可由新主机242-248访问,并且在新主机242-248上启动发生故障的数据库网格元素202-208的新实例。可以执行一个或多个更新过程以使新的数据库网格元素202-208的分片212-218是最新的,诸如使其符合一个或多个ACID属性。
可以在分布式数据库网格200中维护备用数据库网格元素和/或订阅者数据库网格元素。在一个实施例中,为分布式数据库网格的每个活动的数据库网格元素202-208维护至少一个备用数据库网格元素。
用于单个元素事务的过程
图3是示出用于处理数据库事务的过程的流程图,其中该数据库事务仅引用存储在由单个数据库元素管理的单个分片中的数据。过程300的一个或多个框可以由一个或多个计算设备和/或其进程来执行。在一个实施例中,过程300的一个或多个框由一个或多个数据库网格元素(诸如中间层数据库网格元素202-208中的一个或多个)执行。
在框304处,经由应用和特定网格元素之间的直接模式或远程连接模式连接来接收数据库事务。在一个实施例中,特定网格元素是自包含的中间层数据库系统。特定网格元素存储具体的数据库分片,并且数据库事务包括对具体数据的至少一个数据库操作。在一个实施例中,从应用的应用实例接收数据库事务。在一个实施例中,根据数据库的分布方案对应用实例进行分区,以通过实现应用实例与由应用实例本地的数据库网格元素存储的数据库分片之间的亲和性来利用直接模式。当分布式应用的应用实例和特定网格元素被部署在同一计算设备上时,可以自动和/或隐式地建立直接连接(诸如启用直接连接的驱动器)。
在框306处,具体网格元素执行经由与应用的连接接收到的数据库事务。应用和/或其实例可以包括被配置为经由直接连接向对应的网格元素发送一个或多个命令的驱动器。在一个实施例中,数据库事务包括对由具体网格元素存储的具体数据的至少一个数据库操作,并且该具体网格元素独立于分布式数据库网格的其它网格元素执行该至少一个数据库操作。数据库事务可以作为多个数据库操作被接收,其中这多个数据库操作包括发信号通知数据库事务完成的提交操作。
在框308处,具体网格元素提交数据库事务。具体网格元素独立地提交数据库事务,而不需要多个网格元素中的另一个网格元素的参与。
在框310处,过程300返回和/或终止。例如,处理可以继续处理连接中的另一个数据库事务、另一个连接中的另一个数据库事务、另一个分布式数据库事务、另一个数据库操作、将控制传递给调用进程、生成任何适当的记录或通知、在方法或函数调用之后返回,或者终止。
用于分布式事务的过程
图4是示出用于处理分布式数据库事务的过程的实施例的流程图。过程400可以由一个或多个计算设备和/或其进程来执行。在一个实施例中,过程400的一个或多个框由分布式数据库网格的多个数据库网格元素(诸如中间层数据库网格200的数据库网格元素202-208)执行。过程400的一个或多个框可以由分布式数据库网格管理器(诸如数据库网格管理器170)执行。
在框404处,从应用(诸如分布式应用的实例)接收分布式数据库事务。在一个实施例中,当分布方案指示数据跨分布式数据库网格的多个网格元素分布时,应用提交分布式数据库事务。在一个实施例中,当应用知道分布方案并且分布方案指示数据跨多个网格元素分布时,应用可以做出决定(诸如基于成本的决定)以提交分布式数据库事务,或者以与各个网格元素的多个直接连接来访问分开的数据并在应用本身内处理这些分开的数据。
在框406处,在分布式数据库网格中执行分布式数据库事务。在一个实施例中,分布式数据库事务涉及多个网格元素中的两个或更多个。可替代地,诸如当应用不知道分布方案时,分布式数据库事务可能只涉及多个网格元素中的一个。
在框408处,使用涉及多个网格元素中的两个或更多个网格元素的两阶段提交协议来提交分布式数据库事务。两阶段提交协议被用来确保分布式事务的原子性,由此确保事务中涉及的所有数据库网格元素都提交分布式事务或者都不提交分布式事务。
在框410处,如果两阶段的提交成功,那么确认分布式数据库事务的提交。该确认被发送到分布式数据库事务的请求者,诸如应用和/或分布式应用的实例。在确认可以被发送之前,需要成功完成两阶段提交协议。
在框412处,过程400返回和/或终止。例如,处理可以继续处理直接连接的数据库事务、另一个分布式数据库事务、另一个数据库操作、将控制传递给调用进程、生成任何适当的记录或通知、在方法或函数调用之后返回或终止。
用于混合数据库访问的过程
图5是示出用于访问存储在中间层数据库网格的实施例中的数据的过程的实施例的流程图。过程500可以由被配置为访问包括中间层数据库网格(诸如中间层数据库网格200)的数据库系统的一个或多个计算设备、应用和/或其进程来执行。例如,过程500的一个或多个框可以由分布式应用(包括分布式应用的实例)执行。
在框502处,由应用生成一个或多个数据库操作。例如,一个或多个数据库操作可以包括一个或多个数据库查询、一个或多个数据库事务,或需要访问包括多个数据库网格元素的分布式数据库网格的任何其它操作。在一个实施例中,多个数据库网格元素的至少一部分中的每一个是自包含的中间层数据库系统。
在判定框504处,确定一个或多个数据库操作是否需要访问其分布方案已知或被使用的数据。例如,如果应用未被设计为利用任何分布方案,那么分布方案可能不是已知的;在这种情况下,应用将数据库视为单个逻辑实体。在一个实施例中,数据库操作可能需要访问其分布方案已知或未知的一个或多个表。在一个实施例中,诸如通过API来获得描述分布方案的分布数据。该分布方案和/或分布数据可用于识别存储具体数据的数据库分片相对于多个网格元素定位。如果分布方案未知或未被使用,那么该处理继续到框512。
在框512处,分布式数据库操作被提交给分布式数据库网格。在一个实施例中,分布式数据库操作是根据过程400被处理的分布式数据库事务。
返回判定框504,如果确定分布方案是已知的并且被使用,那么处理继续到判定框506。在判定框506处,使用分布方案来确定数据库操作是否在单个数据库网格元素上操作。在一个实施例中,由应用经由其提交数据库操作的驱动器来做出该判定。如果确定数据库操作在单个数据库网格元素上操作,那么该处理继续到框510。
在框510处,经由到基于分布方案识别出的特定数据库网格元素的直接连接来提交数据库操作。在一个实施例中,根据过程300处理该数据库操作。
返回到判定框506,如果确定数据库操作在多个数据库网格元素上操作,那么处理继续到判定框508。在判定框508处,确定数据库操作是否应当被划分为可以各自经由直接连接用特定数据库网格元素执行的子操作。该确定可以是基于成本的决定,诸如是让分布式数据库网格执行操作的成本与执行一个或多个合并操作的成本相比的比较。对一些数据库操作进行划分可能是不切实际的、不可能的和/或不期望的。例如,当数据库操作包括应当被原子地提交的事务时,分布式数据库网格可能最适合于使用两阶段提交协议来确保这种原子性。在一个实施例中,基于成本的决定考虑延迟。
在框512处,过程500返回和/或终止。例如,处理可以继续处理另一个数据库操作、将控制传递给调用进程、生成任何适当的记录或通知、在方法或函数调用之后返回或终止。
数据库概述
数据库是逻辑上相关的数据和元数据的集合。数据库元数据定义数据库对象,诸如表、对象表、视图或复杂类型。从高级角度来看,数据和元数据被组织成逻辑结构。例如,数据和元数据可以根据关系和/或对象-关系数据库结构进行组织。
一般而言,服务器(诸如数据库服务器)是集成的软件部件和计算资源分配(诸如存储器、数据库网格元素以及数据库网格元素上用于执行集成的软件部件的进程)的组合,其中软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。
数据库命令可以是数据库语句的形式。数据库命令可以使对数据库执行一个或多个数据库操作。为了让数据库服务器处理数据库语句,数据库语句必须符合数据库服务器所支持的数据库语言。许多数据库服务器所支持的数据库语言的一个非限制性示例是SQL,包括诸如Oracle数据库服务器(例如Oracle数据库11g)所支持的SQL的专有形式。将SQL数据定义语言(“DDL”)指令发布到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂类型。数据操纵语言(“DML”)指令被发布到DBMS,以管理存储在数据库结构内的数据。例如,SELECT、INSERT、UPDATE和DELETE是在一些SQL实现中找到的DML指令的常见示例。SQL/XML是在对象-关系数据库中操纵XML数据时使用的SQL的常见扩展。
一般而言,数据被存储在一个或多个数据容器中的数据库中,每个容器包含记录,并且每个记录内的数据被组织成一个或多个字段。在关系数据库系统中,数据容器通常被称为表,记录被称为行,而字段被称为列。在面向对象的数据库中,数据容器通常被称为对象类,记录被称为对象,而字段被称为属性。其它数据库体系架构可以使用其它术语。实现本发明的系统不限于任何特定类型的数据容器或数据库体系架构。然而,为了解释的目的,本文使用的示例和术语将是通常与关系数据库或对象-关系数据库相关联的示例和术语。因此,本文将使用术语“表”、“行”和“列”来分别指代数据容器、记录和字段。
硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它储存器或者组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程组合来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图6是示出本发明的实施例可以在其上实现的计算机系统600的框图。计算机系统600包括总线602或者用于传送信息的其它通信机制,以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602的用于存储信息和要由处理器604执行的指令的主存储器606(诸如随机存取存储器(RAM)、参数随机存取存储器(PRAM)或其它动态存储装置)。主存储器606还可以用于在要由处理器604执行的指令的执行期间存储临时变量或其它中间信息。当存储在处理器604可访问的非暂态存储介质中时,这种指令使计算机系统600变成为执行指令中所指定的操作而定制的专用机器。
计算机系统600还包括耦合到总线602的只读存储器(ROM)608或者其它静态存储装置,以用于为处理器604存储静态信息和指令。存储装置610(诸如磁盘、光盘或固态驱动器)被提供并且耦合到总线602以用于存储信息和指令。
计算机系统600可以经由总线602耦合到显示器612(诸如阴极射线管(CRT))以用于向计算机用户显示信息。输入设备614(包括字母数字和其它键)耦合到总线602,以用于向处理器604传送信息和命令选择。另一种类型的用户输入设备是游标控制616(诸如鼠标、轨迹球或者游标方向键),用于向处理器604传送方向信息和命令选择并且用于控制显示器612上的游标运动。这种输入设备通常具有在两个轴(第一个轴(例如,x)和第二个轴(例如,y))中的两个自由度,这允许设备指定平面中的位置。
计算机系统600可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统600成为或者把计算机系统600编程为专用机器。根据一个实施例,本文的技术由计算机系统600响应于处理器604执行包含在主存储器606中的一个或多个指令的一个或多个序列而执行。这种指令可以从另一个存储介质(诸如存储装置610)读到主存储器606中。对包含在主存储器606中的指令序列的执行使处理器604执行本文所述的过程步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
如在本文所使用的,术语“存储介质”指存储使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储装置610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒带。
存储介质与传输介质不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线602的线。传输介质还可以采取声或光波的形式,诸如在无线电波数据通信和红外线数据通信中生成的那些。
各种形式的介质可以涉及把一个或多个指令的一个或多个序列携带到处理器606以供执行。例如,指令最初可以被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以把指令加载到其动态存储器中并且利用调制解调器经由电话线发送指令。计算机系统600本地的调制解调器可以接收电话线上的数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以把数据放在总线602上。总线602把数据携带到主存储器606,处理器604从该主存储器606检索并执行指令。由主存储器606接收的指令可以可选地在被处理器604执行之前或之后存储在存储装置610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、线缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何此类实现中,通信接口618发送和接收携带表示各种类型信息的数字信号流的电信号、电磁信号或光信号。
网络链路620通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路620可以提供通过本地网络622到主计算机624或者到由互联网服务提供商(ISP)626操作的数据装备的连接。ISP 626继而通过现在通常称为“互联网”628的全球分组数据通信网络提供数据通信服务。本地网络622和互联网628二者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路620上并通过通信接口618的信号是传输介质的示例形式,这些信号把数字数据带到计算机系统600或者携带来自计算机系统600的数字数据。
计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据(包括程序代码)。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618发送针对应用程序的所请求的代码。
所接收的代码可以在其被接收时由处理器604执行,和/或存储在存储装置610或其它非易失性储存器中以供随后执行。
在前面的说明书中,已经参考各种具体细节描述了本发明的实施例,这些细节可以因实现方案而异。因而,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指示以及申请人预期作为本发明的范围的内容是从本申请中发布的权利要求集合的字面范围和等同范围,这是以这些权利要求被发布的具体形式,包括任何后续的更正。
Claims (11)
1.一种方法,包括:
将数据库作为多个数据库分片存储在包括多个网格元素的分布式数据库网格中;
其中中间层至少包含所述多个网格元素的子集;
其中所述多个网格元素的所述子集中的每个网格元素包括存储器中数据库系统以及所述多个数据库分片中的相应数据库分片;
其中数据集根据分布方案分布;
其中所述多个网格元素的子集中的每个特定网格元素运行相应的代理服务器,所述代理服务器用于服务对所述多个数据库分片中的相应数据库分片进行更改的请求,并且具有两个模式:
远程连接模式,在所述远程连接模式中,所述特定网格元素的代理服务器从所述多个网格元素中的其他网格元素接收访问由所述特定网格元素存储的相应数据库分片内所包含的数据的请求,并且服务所述访问请求;以及
直接模式,在所述直接模式中,与所述特定网格元素的中间层数据库系统在同一存储器空间中执行的应用直接访问由所述特定网格元素存储的相应数据库分片;
由在与所述多个网格元素的所述子集中的第一网格元素的存储器中数据库系统相同的地址空间中执行的应用进程从表示层接收服务请求;
响应于接收到所述服务请求,由所述应用进程以直接模式执行第一数据库事务;
其中第一数据库事务包括对存储在属于第一网格元素的第一数据库分片中的具体数据的至少一个数据库操作以及提交操作,所述应用进程执行所述至少一个数据库操作;
其中第一数据库事务由所述应用进程提交,而无需所述多个网格元素中的另一个网格元素的参与;
由第一网格元素以所述直接模式从与第一网格元素的中间层数据库系统在同一存储器空间中执行的所述应用进程接收分布式数据库事务,其中所述分布式数据库事务要求对所述多个数据库分片中被存储在第二网格元素中的第二数据库分片中的数据进行更改,所述分布式数据库事务包括对存储在第一数据库分片和第二数据库分片中的具体数据的数据库操作;
由至少第一网格元素以所述直接模式并且借助所述第二网格元素的所述远程连接模式下的相应代理服务器来执行所述分布式数据库事务,其中所述分布式数据库事务包括对第二数据库分片中的数据进行所述更改;
第一网格元素与第二网格元素参与两阶段提交协议以提交所述分布式数据库事务。
2.如权利要求1所述的方法,其中所述多个网格元素的至少一个子集各自包括存储器中数据库系统,所述存储器中数据库系统被配置为对数据库命令做出响应。
3.如权利要求1所述的方法,其中用于所述数据集的所述分布方案是基于来自所述应用进程的指令来确定的。
4.如权利要求1所述的方法,还包括:
基于所述分布方案向所述应用进程提供分布数据;以及
由所述应用进程确定包括所述具体数据的第一数据库分片的位置。
5.如权利要求4所述的方法,其中所述分布数据经由API被提供给所述应用进程。
6.如权利要求1所述的方法,其中所述应用进程和所述分布式数据库网格二者都在中间层应用层中实现。
7.如权利要求1所述的方法,其中所述应用进程是分布式应用的实例,并且其中第一数据库事务是从所述分布式应用的所述实例接收的。
8.如权利要求7所述的方法,其中基于用于所述数据集的所述分布方案对所述分布式应用进行分区。
9.如权利要求7所述的方法,其中所述分布式应用包括多个应用实例,所述多个应用实例各自包括驱动器,所述驱动器被配置为实现与对应网格元素的直接连接。
10.一种存储指令的非暂态计算机可读介质,所述指令在由一个或多个处理器执行时,使得执行如权利要求1-9中任一项所述的方法。
11.一种包括用于执行如权利要求1-9中任一项所述的方法的单元的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/709,018 US11829349B2 (en) | 2015-05-11 | 2015-05-11 | Direct-connect functionality in a distributed database grid |
US14/709,018 | 2015-05-11 | ||
PCT/US2016/023529 WO2016182635A1 (en) | 2015-05-11 | 2016-03-22 | Direct-connect functionality in a distributed database grid |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107787490A CN107787490A (zh) | 2018-03-09 |
CN107787490B true CN107787490B (zh) | 2021-12-07 |
Family
ID=55637507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680036398.1A Active CN107787490B (zh) | 2015-05-11 | 2016-03-22 | 分布式数据库网格中的直接连接功能 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11829349B2 (zh) |
EP (1) | EP3295332B1 (zh) |
CN (1) | CN107787490B (zh) |
WO (1) | WO2016182635A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10270476B1 (en) | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Failure mode-sensitive layered redundancy coding techniques |
US10270475B1 (en) | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Layered redundancy coding for encoded parity data |
US10977128B1 (en) | 2015-06-16 | 2021-04-13 | Amazon Technologies, Inc. | Adaptive data loss mitigation for redundancy coding systems |
US10298259B1 (en) | 2015-06-16 | 2019-05-21 | Amazon Technologies, Inc. | Multi-layered data redundancy coding techniques |
US9998150B1 (en) | 2015-06-16 | 2018-06-12 | Amazon Technologies, Inc. | Layered data redundancy coding techniques for layer-local data recovery |
US10198311B1 (en) | 2015-07-01 | 2019-02-05 | Amazon Technologies, Inc. | Cross-datacenter validation of grid encoded data storage systems |
US10108819B1 (en) | 2015-07-01 | 2018-10-23 | Amazon Technologies, Inc. | Cross-datacenter extension of grid encoded data storage systems |
US9959167B1 (en) | 2015-07-01 | 2018-05-01 | Amazon Technologies, Inc. | Rebundling grid encoded data storage systems |
US10089176B1 (en) | 2015-07-01 | 2018-10-02 | Amazon Technologies, Inc. | Incremental updates of grid encoded data storage systems |
US10394762B1 (en) | 2015-07-01 | 2019-08-27 | Amazon Technologies, Inc. | Determining data redundancy in grid encoded data storage systems |
US10162704B1 (en) | 2015-07-01 | 2018-12-25 | Amazon Technologies, Inc. | Grid encoded data storage systems for efficient data repair |
US9904589B1 (en) | 2015-07-01 | 2018-02-27 | Amazon Technologies, Inc. | Incremental media size extension for grid encoded data storage systems |
US9998539B1 (en) * | 2015-07-01 | 2018-06-12 | Amazon Technologies, Inc. | Non-parity in grid encoded data storage systems |
US9928141B1 (en) | 2015-09-21 | 2018-03-27 | Amazon Technologies, Inc. | Exploiting variable media size in grid encoded data storage systems |
US11386060B1 (en) | 2015-09-23 | 2022-07-12 | Amazon Technologies, Inc. | Techniques for verifiably processing data in distributed computing systems |
US9940474B1 (en) | 2015-09-29 | 2018-04-10 | Amazon Technologies, Inc. | Techniques and systems for data segregation in data storage systems |
US10394789B1 (en) | 2015-12-07 | 2019-08-27 | Amazon Technologies, Inc. | Techniques and systems for scalable request handling in data processing systems |
US10642813B1 (en) | 2015-12-14 | 2020-05-05 | Amazon Technologies, Inc. | Techniques and systems for storage and processing of operational data |
US9785495B1 (en) | 2015-12-14 | 2017-10-10 | Amazon Technologies, Inc. | Techniques and systems for detecting anomalous operational data |
US10248793B1 (en) | 2015-12-16 | 2019-04-02 | Amazon Technologies, Inc. | Techniques and systems for durable encryption and deletion in data storage systems |
US10324790B1 (en) | 2015-12-17 | 2019-06-18 | Amazon Technologies, Inc. | Flexible data storage device mapping for data storage systems |
US10127105B1 (en) | 2015-12-17 | 2018-11-13 | Amazon Technologies, Inc. | Techniques for extending grids in data storage systems |
US10102065B1 (en) | 2015-12-17 | 2018-10-16 | Amazon Technologies, Inc. | Localized failure mode decorrelation in redundancy encoded data storage systems |
US10235402B1 (en) | 2015-12-17 | 2019-03-19 | Amazon Technologies, Inc. | Techniques for combining grid-encoded data storage systems |
US10180912B1 (en) | 2015-12-17 | 2019-01-15 | Amazon Technologies, Inc. | Techniques and systems for data segregation in redundancy coded data storage systems |
US10592336B1 (en) | 2016-03-24 | 2020-03-17 | Amazon Technologies, Inc. | Layered indexing for asynchronous retrieval of redundancy coded data |
US10678664B1 (en) | 2016-03-28 | 2020-06-09 | Amazon Technologies, Inc. | Hybridized storage operation for redundancy coded data storage systems |
US10061668B1 (en) | 2016-03-28 | 2018-08-28 | Amazon Technologies, Inc. | Local storage clustering for redundancy coded data storage system |
US10366062B1 (en) | 2016-03-28 | 2019-07-30 | Amazon Technologies, Inc. | Cycled clustering for redundancy coded data storage systems |
US9948655B1 (en) * | 2016-04-15 | 2018-04-17 | AtScale, Inc. | Data access authorization for dynamically generated database structures |
US11137980B1 (en) | 2016-09-27 | 2021-10-05 | Amazon Technologies, Inc. | Monotonic time-based data storage |
US10810157B1 (en) | 2016-09-28 | 2020-10-20 | Amazon Technologies, Inc. | Command aggregation for data storage operations |
US10437790B1 (en) | 2016-09-28 | 2019-10-08 | Amazon Technologies, Inc. | Contextual optimization for data storage systems |
US10657097B1 (en) | 2016-09-28 | 2020-05-19 | Amazon Technologies, Inc. | Data payload aggregation for data storage systems |
US11204895B1 (en) | 2016-09-28 | 2021-12-21 | Amazon Technologies, Inc. | Data payload clustering for data storage systems |
US10496327B1 (en) | 2016-09-28 | 2019-12-03 | Amazon Technologies, Inc. | Command parallelization for data storage systems |
US11281624B1 (en) | 2016-09-28 | 2022-03-22 | Amazon Technologies, Inc. | Client-based batching of data payload |
US10614239B2 (en) | 2016-09-30 | 2020-04-07 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
US10296764B1 (en) | 2016-11-18 | 2019-05-21 | Amazon Technologies, Inc. | Verifiable cryptographically secured ledgers for human resource systems |
US11269888B1 (en) | 2016-11-28 | 2022-03-08 | Amazon Technologies, Inc. | Archival data storage for structured data |
CN106611064B (zh) * | 2017-01-03 | 2020-03-06 | 北京华胜信泰数据技术有限公司 | 分布式关系数据库的数据处理方法和装置 |
US10740733B2 (en) * | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
US10719446B2 (en) | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10956335B2 (en) | 2017-09-29 | 2021-03-23 | Oracle International Corporation | Non-volatile cache access using RDMA |
US10732836B2 (en) | 2017-09-29 | 2020-08-04 | Oracle International Corporation | Remote one-sided persistent writes |
US10810268B2 (en) * | 2017-12-06 | 2020-10-20 | Futurewei Technologies, Inc. | High-throughput distributed transaction management for globally consistent sharded OLTP system and method of implementing |
US11468060B2 (en) * | 2018-06-25 | 2022-10-11 | Oracle International Corporation | Automatic query offloading to a standby database |
CN110222053B (zh) * | 2019-05-21 | 2023-03-21 | 深圳壹账通智能科技有限公司 | 一种基于区块链的溯源数据的获取方法及相关设备 |
US11055262B1 (en) * | 2020-03-09 | 2021-07-06 | Snowflake Inc. | Extensible streams on data sources |
US11669518B1 (en) * | 2021-12-14 | 2023-06-06 | Huawei Technologies Co., Ltd. | Method and system for processing database transactions in a distributed online transaction processing (OLTP) database |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828527A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 用于跨不同应用程序框架的数据服务的平台 |
CN102541990A (zh) * | 2010-12-07 | 2012-07-04 | 国际商业机器公司 | 利用虚拟分区的数据库重新分布方法和系统 |
CN103853718A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 分片数据库访问方法及数据库系统 |
Family Cites Families (122)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4881166A (en) * | 1987-07-24 | 1989-11-14 | Amoco Corporation | Method for consistent multidatabase transaction processing |
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5778430A (en) | 1996-04-19 | 1998-07-07 | Eccs, Inc. | Method and apparatus for computer disk cache management |
US5870761A (en) | 1996-12-19 | 1999-02-09 | Oracle Corporation | Parallel queue propagation |
US6243838B1 (en) | 1997-05-13 | 2001-06-05 | Micron Electronics, Inc. | Method for automatically reporting a system failure in a server |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US5953719A (en) * | 1997-09-15 | 1999-09-14 | International Business Machines Corporation | Heterogeneous database system with dynamic commit procedure control |
US6009432A (en) | 1998-07-08 | 1999-12-28 | Required Technologies, Inc. | Value-instance-connectivity computer-implemented database |
US6370622B1 (en) | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6611898B1 (en) | 2000-12-22 | 2003-08-26 | Convergys Customer Management Group, Inc. | Object-oriented cache management system and method |
US7548898B1 (en) | 2001-02-28 | 2009-06-16 | Teradata Us, Inc. | Parallel migration of data between systems |
US6920533B2 (en) | 2001-06-27 | 2005-07-19 | Intel Corporation | System boot time reduction method |
US6799188B2 (en) * | 2001-08-31 | 2004-09-28 | Borland Software Corporation | Transaction processing system providing improved methodology for two-phase commit decision |
US7149769B2 (en) | 2002-03-26 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | System and method for multi-destination merge in a storage area network |
US6993631B2 (en) | 2002-05-15 | 2006-01-31 | Broadcom Corporation | L2 cache maintaining local ownership of remote coherency blocks |
US7210006B2 (en) | 2002-06-28 | 2007-04-24 | Sun Microsystems, Inc. | Computer system supporting read-to-write-back transactions for I/O devices |
US7337214B2 (en) | 2002-09-26 | 2008-02-26 | Yhc Corporation | Caching, clustering and aggregating server |
JP4158534B2 (ja) * | 2003-01-21 | 2008-10-01 | 修平 西山 | 分散型データベースシステム |
US20040199552A1 (en) | 2003-04-01 | 2004-10-07 | Microsoft Corporation | Transactionally consistent change tracking for databases |
US7330862B1 (en) | 2003-04-25 | 2008-02-12 | Network Appliance, Inc. | Zero copy write datapath |
US7610348B2 (en) | 2003-05-07 | 2009-10-27 | International Business Machines | Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed |
US7555497B2 (en) | 2003-08-21 | 2009-06-30 | Microsoft Corporation | Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization |
GB0414291D0 (en) | 2004-06-25 | 2004-07-28 | Ibm | Methods, apparatus and computer programs for data replication |
US20060010130A1 (en) | 2004-07-09 | 2006-01-12 | Avraham Leff | Method and apparatus for synchronizing client transactions executed by an autonomous client |
US7395258B2 (en) | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
US7984180B2 (en) | 2005-10-20 | 2011-07-19 | Solarflare Communications, Inc. | Hashing algorithm for network receive filtering |
DE112005003736T5 (de) | 2005-12-29 | 2008-11-13 | Intel Corporation, Santa Clara | Virtueller Übersetzungspuffer |
US7430553B2 (en) | 2005-12-30 | 2008-09-30 | Microsoft Corporation | Managing states with delta pager |
US8117153B2 (en) * | 2006-03-28 | 2012-02-14 | Oracle America, Inc. | Systems and methods for a distributed cache |
US20080059492A1 (en) | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US7693886B1 (en) | 2006-12-15 | 2010-04-06 | Netapp, Inc. | Delta query technique |
US7716517B2 (en) | 2006-12-21 | 2010-05-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Distributed platform management for high availability systems |
US20080209009A1 (en) | 2007-01-18 | 2008-08-28 | Niraj Katwala | Methods and systems for synchronizing cached search results |
US8706687B2 (en) * | 2007-01-24 | 2014-04-22 | Hewlett-Packard Development Company, L.P. | Log driven storage controller with network persistent memory |
US8868504B2 (en) | 2007-03-07 | 2014-10-21 | Oracle International Corporation | Database system with active standby and nodes |
US7664866B2 (en) | 2007-04-10 | 2010-02-16 | Apertio Limited | Sub-tree access control in network architectures |
US7647443B1 (en) | 2007-04-13 | 2010-01-12 | American Megatrends, Inc. | Implementing I/O locks in storage systems with reduced memory and performance costs |
US8671076B2 (en) | 2007-05-08 | 2014-03-11 | Bmc Software, Inc. | Database recovery using logs applied to consistent copies |
US8782075B2 (en) | 2007-05-08 | 2014-07-15 | Paraccel Llc | Query handling in databases with replicated data |
US9146922B2 (en) * | 2007-07-26 | 2015-09-29 | Oracle International Corporation | Mobile multimedia proxy database |
US7570451B2 (en) | 2007-12-12 | 2009-08-04 | Seagate Technology Llc | Servo architecture for high areal density data storage |
US8037110B2 (en) | 2007-12-27 | 2011-10-11 | Microsoft Corporation | Business data access client for online/offline client use |
US8401994B2 (en) * | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
US8306951B2 (en) * | 2009-09-18 | 2012-11-06 | Oracle International Corporation | Automated integrated high availability of the in-memory database cache and the backend enterprise database |
US8229945B2 (en) * | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8775718B2 (en) | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US7930361B2 (en) | 2008-09-15 | 2011-04-19 | Dell Products L.P. | System and method for management of remotely shared data |
US7912051B1 (en) | 2008-12-19 | 2011-03-22 | Emc Corporation | Techniques for port virtualization |
US8145838B1 (en) | 2009-03-10 | 2012-03-27 | Netapp, Inc. | Processing and distributing write logs of nodes of a cluster storage system |
US10152504B2 (en) | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
US8401996B2 (en) | 2009-03-30 | 2013-03-19 | Commvault Systems, Inc. | Storing a variable number of instances of data objects |
US8515965B2 (en) | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US8583692B2 (en) | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US20100306234A1 (en) | 2009-05-28 | 2010-12-02 | Microsoft Corporation | Cache synchronization |
GB2472620B (en) * | 2009-08-12 | 2016-05-18 | Cloudtran Inc | Distributed transaction processing |
US9542408B2 (en) | 2010-08-27 | 2017-01-10 | Pneuron Corp. | Method and process for enabling distributing cache data sources for query processing and distributed disk caching of large data and analysis requests |
US8868510B2 (en) | 2009-12-03 | 2014-10-21 | Sybase, Inc. | Managing data storage as an in-memory database in a database management system |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US8433684B2 (en) | 2010-03-30 | 2013-04-30 | Sybase, Inc. | Managing data backup of an in-memory database in a database management system |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US20120158650A1 (en) * | 2010-12-16 | 2012-06-21 | Sybase, Inc. | Distributed data cache database architecture |
US8880508B2 (en) | 2010-12-30 | 2014-11-04 | Sap Se | Processing database queries using format conversion |
US8397025B2 (en) | 2010-12-30 | 2013-03-12 | Lsi Corporation | Apparatus and method for determining a cache line in an N-way set associative cache using hash functions |
US8949294B2 (en) * | 2011-03-23 | 2015-02-03 | Red Hat, Inc. | Data grid supporting multiple protocols |
US8930647B1 (en) | 2011-04-06 | 2015-01-06 | P4tents1, LLC | Multiple class memory systems |
US11086850B2 (en) * | 2011-04-13 | 2021-08-10 | International Business Machines Corporation | Persisting of a low latency in-memory database |
US20120323971A1 (en) | 2011-06-14 | 2012-12-20 | Sybase, Inc. | Optimizing data storage and access of an in-memory database |
US8812555B2 (en) | 2011-06-18 | 2014-08-19 | Microsoft Corporation | Dynamic lock-free hash tables |
US8805984B2 (en) * | 2011-07-14 | 2014-08-12 | Red Hat, Inc. | Multi-operational transactional access of in-memory data grids in a client-server environment |
US8924346B2 (en) * | 2011-09-09 | 2014-12-30 | Oracle International Corporation | Idempotence for database transactions |
US10592416B2 (en) | 2011-09-30 | 2020-03-17 | Oracle International Corporation | Write-back storage cache based on fast persistent memory |
US8918436B2 (en) | 2011-12-22 | 2014-12-23 | Sap Ag | Hybrid database table stored as both row and column store |
DE112011106078B4 (de) | 2011-12-29 | 2021-01-28 | Intel Corp. | Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff |
US9703500B2 (en) * | 2012-04-25 | 2017-07-11 | International Business Machines Corporation | Reducing power consumption by migration of data within a tiered storage system |
US10019371B2 (en) | 2012-04-27 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Data caching using local and remote memory |
US9792320B2 (en) * | 2012-07-06 | 2017-10-17 | Box, Inc. | System and method for performing shard migration to support functions of a cloud-based service |
US20140040218A1 (en) | 2012-07-31 | 2014-02-06 | Hideaki Kimura | Methods and systems for an intent lock engine |
US8904231B2 (en) | 2012-08-08 | 2014-12-02 | Netapp, Inc. | Synchronous local and cross-site failover in clustered storage systems |
US8856484B2 (en) | 2012-08-14 | 2014-10-07 | Infinidat Ltd. | Mass storage system and methods of controlling resources thereof |
US9164702B1 (en) * | 2012-09-07 | 2015-10-20 | Google Inc. | Single-sided distributed cache system |
US20140075493A1 (en) | 2012-09-12 | 2014-03-13 | Avaya, Inc. | System and method for location-based protection of mobile data |
US9507825B2 (en) * | 2012-09-28 | 2016-11-29 | Oracle International Corporation | Techniques for partition pruning based on aggregated zone map information |
US20140108421A1 (en) * | 2012-10-04 | 2014-04-17 | Codefutures Corporation | Partitioning database data in a sharded database |
US9378179B2 (en) | 2012-11-21 | 2016-06-28 | International Business Machines Corporation | RDMA-optimized high-performance distributed cache |
US9348752B1 (en) | 2012-12-19 | 2016-05-24 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
US9792405B2 (en) | 2013-01-17 | 2017-10-17 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
GB2523495A (en) | 2013-01-17 | 2015-08-26 | Edico Genome Corp | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
US10148548B1 (en) * | 2013-01-29 | 2018-12-04 | Axway, Inc. | System and method for real-time analysis of incoming data |
US9495114B2 (en) | 2013-05-10 | 2016-11-15 | Arista Networks, Inc. | System and method for reading and writing data with a shared memory hash table |
US9767138B2 (en) * | 2013-06-12 | 2017-09-19 | Oracle International Corporation | In-database sharded queue for a shared-disk database |
US9792349B2 (en) * | 2013-06-12 | 2017-10-17 | Oracle International Corporation | In-database sharded queue |
US9495296B2 (en) * | 2013-06-12 | 2016-11-15 | Oracle International Corporation | Handling memory pressure in an in-database sharded queue |
US9619545B2 (en) * | 2013-06-28 | 2017-04-11 | Oracle International Corporation | Naïve, client-side sharding with online addition of shards |
US10223326B2 (en) * | 2013-07-31 | 2019-03-05 | Oracle International Corporation | Direct access persistent memory shared storage |
US9037753B2 (en) * | 2013-08-29 | 2015-05-19 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US9323799B2 (en) * | 2013-09-21 | 2016-04-26 | Oracle International Corporation | Mechanism to run OLTP workload on in-memory database under memory pressure |
US10311154B2 (en) * | 2013-09-21 | 2019-06-04 | Oracle International Corporation | Combined row and columnar storage for in-memory databases for OLTP and analytics workloads |
US9292564B2 (en) * | 2013-09-21 | 2016-03-22 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
US9128972B2 (en) | 2013-09-21 | 2015-09-08 | Oracle International Corporation | Multi-version concurrency control on in-memory snapshot store of oracle in-memory database |
US9378232B2 (en) | 2013-09-21 | 2016-06-28 | Oracle International Corporation | Framework for numa affinitized parallel query on in-memory objects within the RDBMS |
US9389994B2 (en) * | 2013-11-26 | 2016-07-12 | International Business Machines Corporation | Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning |
WO2015094179A1 (en) | 2013-12-17 | 2015-06-25 | Hewlett-Packard Development Company, L.P. | Abstraction layer between a database query engine and a distributed file system |
JP6274857B2 (ja) | 2013-12-26 | 2018-02-07 | キヤノン株式会社 | メモリ制御装置、メモリ制御方法、およびプログラム |
US9613122B2 (en) * | 2014-05-02 | 2017-04-04 | Facebook, Inc. | Providing eventual consistency for multi-shard transactions |
US20160026399A1 (en) | 2014-07-23 | 2016-01-28 | Lsi Corporation | Block i/o interface for a host bus adapter that utilizes nvdram |
CA2920121C (en) | 2014-09-15 | 2019-07-16 | Huawei Technologies Co., Ltd. | Write data request processing method and storage array |
US10481835B2 (en) | 2014-10-09 | 2019-11-19 | Netapp, Inc. | Methods and systems for dynamic hashing in caching sub-systems |
TWI567554B (zh) | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
US9842033B2 (en) | 2014-11-12 | 2017-12-12 | Netapp, Inc. | Storage cluster failure detection |
US9626119B2 (en) | 2014-11-14 | 2017-04-18 | Intel Corporation | Using counters and a table to protect data in a storage device |
US11023453B2 (en) | 2015-01-29 | 2021-06-01 | Hewlett Packard Enterprise Development Lp | Hash index |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US9525737B2 (en) | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US9965487B2 (en) | 2015-06-18 | 2018-05-08 | International Business Machines Corporation | Conversion of forms of user data segment IDs in a deduplication system |
US10031883B2 (en) * | 2015-10-16 | 2018-07-24 | International Business Machines Corporation | Cache management in RDMA distributed key/value stores based on atomic operations |
US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
US10133667B2 (en) | 2016-09-06 | 2018-11-20 | Orcle International Corporation | Efficient data storage and retrieval using a heterogeneous main memory |
US10346315B2 (en) | 2017-05-26 | 2019-07-09 | Oracle International Corporation | Latchless, non-blocking dynamically resizable segmented hash index |
US10552321B2 (en) | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
-
2015
- 2015-05-11 US US14/709,018 patent/US11829349B2/en active Active
-
2016
- 2016-03-22 CN CN201680036398.1A patent/CN107787490B/zh active Active
- 2016-03-22 WO PCT/US2016/023529 patent/WO2016182635A1/en active Application Filing
- 2016-03-22 EP EP16712181.3A patent/EP3295332B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828527A (zh) * | 2005-02-28 | 2006-09-06 | 微软公司 | 用于跨不同应用程序框架的数据服务的平台 |
CN102541990A (zh) * | 2010-12-07 | 2012-07-04 | 国际商业机器公司 | 利用虚拟分区的数据库重新分布方法和系统 |
CN103853718A (zh) * | 2012-11-28 | 2014-06-11 | 纽海信息技术(上海)有限公司 | 分片数据库访问方法及数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
US11829349B2 (en) | 2023-11-28 |
EP3295332A1 (en) | 2018-03-21 |
US20160335310A1 (en) | 2016-11-17 |
CN107787490A (zh) | 2018-03-09 |
EP3295332B1 (en) | 2020-02-19 |
WO2016182635A1 (en) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107787490B (zh) | 分布式数据库网格中的直接连接功能 | |
EP4064067B1 (en) | Automatic query offloading to a standby database | |
US8401994B2 (en) | Distributed consistent grid of in-memory database caches | |
US10732836B2 (en) | Remote one-sided persistent writes | |
KR101862718B1 (ko) | 블록-기반 저장을 위한 데이터 볼륨 지속성 상태 감소 | |
US9740582B2 (en) | System and method of failover recovery | |
EP2653986B1 (en) | Client-side caching of a database transaction token. | |
JP2023518374A (ja) | データベースのトランザクション処理方法、データベースのトランザクション処理装置、サーバ、及びコンピュータプログラム | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
US20120158650A1 (en) | Distributed data cache database architecture | |
US10152500B2 (en) | Read mostly instances | |
US20150234884A1 (en) | System and Method Involving Resource Description Framework Distributed Database Management System and/or Related Aspects | |
US9563522B2 (en) | Data recovery for a relational database management system instance in a heterogeneous database system | |
WO2020191107A1 (en) | Transferring connections in a multiple deployment database | |
US11023457B1 (en) | Targeted sweep method for key-value data storage | |
US20160092507A1 (en) | Optimizing a query with extrema function using in-memory data summaries on the storage server | |
US20160292037A1 (en) | Data recovery for a compute node in a heterogeneous database system | |
US20140089260A1 (en) | Workload transitioning in an in-memory data grid | |
US10776165B2 (en) | Optimized database resource handling | |
US10558530B2 (en) | Database savepoint with shortened critical phase time | |
US10474541B2 (en) | Optimized savepoint during database recovery | |
US11216440B2 (en) | Optimization of non-exclusive access database consistent change | |
Guo et al. | Cornus: Atomic Commit for a Cloud DBMS with Storage Disaggregation (Extended Version) | |
US20240126781A1 (en) | Consensus protocol for asynchronous database transaction replication with fast, automatic failover, zero data loss, strong consistency, full sql support and horizontal scalability | |
US20230350921A1 (en) | Database processing using hybrid key-value tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |