CN110998557B - 通过分布式存储器的高可用性数据库系统及方法 - Google Patents
通过分布式存储器的高可用性数据库系统及方法 Download PDFInfo
- Publication number
- CN110998557B CN110998557B CN201880050653.7A CN201880050653A CN110998557B CN 110998557 B CN110998557 B CN 110998557B CN 201880050653 A CN201880050653 A CN 201880050653A CN 110998557 B CN110998557 B CN 110998557B
- Authority
- CN
- China
- Prior art keywords
- database
- node
- transaction
- metadata
- distributed memory
- 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 title claims abstract description 56
- 230000004044 response Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 7
- 230000008520 organization Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000036541 health Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- 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/2358—Change logging, detection, and notification
-
- 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/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及通过分布式存储器的高可用性数据库系统及方法。公开了与数据库系统在多个节点之间同步数据库系统的当前状态相关的技术,该多个节点配置为处理对存储在分布式存储器中的数据库系统的数据的请求,其中多个节点中的一个节点当前为活动的,多个节点中的其他节点当前为备用节点。在各种实施例中,活动节点接收执行事务的请求,该事务包括将数据提交给分布式存储器。响应于接收到该请求,在一些实施例中,活动节点将数据提交给分布式存储器以更新数据库系统的当前状态,并使得将提供提交指示的元数据存储在事务日志中,该事务日志存储在分布式存储器中。
Description
技术领域
本发明总地涉及高可用性系统,并且更具体地,涉及集群化的数据库系统,还更具体地,涉及通过分布式存储器的高可用性数据库系统及方法。
背景技术
当一组织希望为其用户存储信息时,该组织通常实现以可以被有效访问的有组织的方式存储该信息的数据库系统。大型企业系统的数据库系统可能会依赖多个服务器来实现计算机集群,其中各个服务器充当运行数据库应用程序实例的集群节点。这些节点可以单独服务来自用户的对数据进行操作的请求。由于这些节点可以并行工作,它们可以交换信息以保持节点间的数据一致性。
附图说明
图1是示出根据一些实施例的实现数据库的数据库系统的示例性元素的框图。
图2是示出根据一些实施例的逻辑域和物理域中的事务日志的示例性元素的框图。
图3是示出根据一些实施例的维护一组键的计算机系统的示例性元素的框图。
图4A是示出根据一些实施例的服务将数据写入分布式存储器的请求的活动节点的示例性元素的框图。
图4B是示出根据一些实施例的服务对数据的请求的备用节点的示例性元素的框图。
图5-图7是示出根据一些实施例的与保持节点间的数据一致性有关的示例性方法的流程图。
图8是示出根据一些实施例的示例性计算机系统的框图。
本公开包括对“一个实施例”或“一实施例”的引用。短语“在一个实施例中”或“在一实施例中”的出现不一定指同一实施例。特定特征、结构或特性可以以与本公开一致的任何适当方式组合。
在本公开中,可以将不同实体(其可以被不同地称为“单元”、“电路”、其它组件等)描述或声称为“被配置”为执行一个或更多个任务或操作。本文使用[实体]被配置为[执行一个或更多个任务]这一公式来指结构(即,物理的事物,例如电子电路)。更具体地,该公式用于指示该结构被布置为在操作期间执行一个或更多个任务。结构可以说是“被配置为”执行某任务,即使该结构当前未被操作。“被配置为执行数据库管理应用程序的实例的节点”旨在覆盖例如具有在操作期间执行此功能的电路的计算机系统,即使所述集成电路当前未被使用(例如,电源未与其连接)。因此,被描述或叙述为“被配置为”执行某项任务的实体指的是物理的事物,例如设备、电路、存储可执行程序指令以实现该任务的内存等。因此,“被配置为”结构在本文中不用于指代诸如应用程序编程接口(API)的软件实体。
术语“被配置为”并不意图意味着“可配置为”。例如,未编程的FPGA将不被视为“被配置为”执行某些特定功能,但是它可以“可配置为”执行该功能,并且可以“被配置为”在编程后执行该功能。
如本文所使用的,术语“第一”、“第二”等用作其后面的名词的标签,除非特别说明,否则不意味着任何类型的排序(例如,空间、时间、逻辑等)。例如,在具有八个节点的数据库系统中,术语“第一”和“第二”节点可用于指代八个节点中的任意两个节点。
如本文所使用的,术语“基于”用于描述影响确定的一个或更多个因素。这一术语并不排除其他因素可能影响确定的可能性。也就是说,一确定可以仅仅基于指定的因素,或者基于指定的因素以及其他未指定的因素。考虑短语“基于B确定A”。该短语指定B是用于确定A的因素或影响A的确定的因素。该短语不排除A的确定也可以基于某些其他因素,例如C。该短语还意在涵盖其中A仅基于B确定的实施例。如本文所使用的,短语“基于”因此与短语“至少部分地基于”同义。
具体实施方式
为了维护数据库节点之间的数据一致性,一种方法是让一节点在向数据库提交事务时直接通知其他节点。在这种方法中,所提交事务的通知可以被同步或异步传送。在同步方法中,给定的节点通知其他节点正在被执行的每个事务,然后在提交事务之前等待来自每个节点的接收确认。但是,这种方法对于高性能应用程序是不实际的,因为给定的节点在等待确认时花费了太多时间。此外,如果任何节点未能发送确认(例如,因为它崩溃了),则给定节点将不再能够提交任何事务。在异步方法中,给定的节点以定期批次通知其他节点,但不等待从其他节点接收到确认。然而,如果给定的节点在通知其他节点自上次通知以来执行的新提交事务集之前崩溃,则此方法会失败。
本公开描述了以克服先前方法的一些缺点的方式维护节点间元数据一致性的技术。在下面描述的各种实施例中,写入分布式存储器的节点经由共享存储器间接地向其他节点发送事务元数据,以便它们知道数据库系统的当前状态。在这样的实施例中,共享存储器存储事务日志,该事务日志指示数据库系统的节点提交的事务,并指示提交事务的排序。因此,将数据写入事务的共享存储器的节点可以通过附加记录以指示数据已被写入来更新事务日志。存储在事务日志中的记录可以被其他节点查阅(review),其他节点可以更新其本地缓冲高速缓存,以反映数据库系统的当前状态。为了使能跟踪新存储的记录,在一些实施例中,元数据服务器可以维护可用于识别已写入共享存储器的新事务记录的目录。因此,当节点将新事务的记录写入日志时,该节点可以将新事务及其在分布式存储器中的对应记录通知元数据服务器。然后,元数据服务器可以将该记录的指示存储在目录中。当其他节点稍后查阅目录时,它们可以从存储的指示中了解记录,然后从事务日志中读取该记录,以确定哪些数据已经被修改。以这种方式同步事务日志信息可以比上面讨论的同步方法更有优势,因为写入节点不需要等待其他节点确认接收到事务日志信息。以这种方式同步事务日志信息可以比上面提到的异步方法更有优势,因为事务记录是在事务执行时记录的——因此,在不通知其他节点事务的情况下,节点提交事务的可能性更小。
现在转向图1,示出了数据库系统10的框图。在所示实施例中,数据库系统10包括经由网络150耦连的分布式存储器110、元数据服务器120、活动节点130和备用节点140。如图所示,存储器110包括共同形成事务日志112的日志记录115,元数据服务器120包括目录125。虽然未示出,但多个客户端设备可以通过发送执行数据库事务的请求来与节点130和140交互。在一些实施例中,数据库系统10的实现可以不同于所示的。例如,虽然在所示的实施例中示出了单个活动节点130,但在一些实施例中,数据库系统10包括多个活动节点130。在一些实施例中,元数据服务器120可以实现为存储目录125的多个服务器。
在各种实施例中,数据库系统10通过节点130和140来实现,节点130和140被配置为作为数据库集群操作,并处理包括向分布式存储器110读取和/或写入数据的事务请求131和141。因此,节点可以接收事务请求131以将用户的密码更新为新值,从而可以将该值写入分布式存储器110。在各种实施例中,数据库系统10使用活动的/备用的拓扑来实现高可用性(HA)服务,其中选择一个或更多个节点来代表显示为活动节点130的其他节点将数据写入分布式存储器110。实现HA服务时,数据库系统10可以监控每个节点130或140的健康状况以确定是否发生任何问题或故障。如果检测到问题,则数据库系统10可以基于活动节点130的健康下降来进行选择,以选择新的活动节点130来写入数据。例如,冷却当前活动节点130的风扇可能停止工作,导致节点过热并立即关闭(甚至崩溃)。在这样的例子中,数据库系统10可以检测到当前活动节点130已经变得不响应,然后通过选择将另一节点提升变为活动节点130。在一些实施例中,系统10在任何给定时间仅选择一个节点作为活动节点130操作。
在一些实施例中,分布式存储器110是被配置为存储系统10的用户的数据和维护系统10的事务日志112的共享存储器,事务日志112指定在系统10处提交事务的排序。事务日志112可以包括多个日志记录115,每个日志记录115指定各个事务的元数据,并且可以按照提交事务的排序排列。在一些实施例中,记录115的集合可以被存储在存储器110上的文件(以下称为日志扩展区)中。分布式存储器110可以由通过网络连接在一起的多个存储设备实现,并且被配置为冗余地存储数据以防止数据丢失。在各种实施例中,分布式存储器110可以被节点130和140访问,并且被配置为处理来自这些节点的读写请求。下面参照图2进一步详细描述事务日志112的存储。
在各种实施例中,元数据服务器120被配置为维护节点130和140用于实现数据库系统10的各种元数据。例如,如图所示,服务器120可以维护共享数据库目录125,其可以指定定义各种数据库结构和对象的模式(schema)、用于在数据库中查找数据的索引、允许访问数据库的用户信息等。在各种实施例中,目录125存储关于活动节点130分配新记录115的信息。随后,节点140可以从目录125读取该信息,以确定活动节点130已经分配和写入了哪些记录115。在学习了这些新记录115之后,节点140可以读取记录115,以便确定数据库系统10的当前状态,并大致更新本地维护的元数据,例如更新具有来自分布式存储器110的缓存数据的本地缓冲高速缓存。在各种实施例中,元数据服务器120从活动节点130接收关于节点130最近在存储器110处存储的记录115的通知133。在一些实施例中,活动节点130响应于其分配记录115被放置在存储器110中的该处的新扩展区而发送通知133。下面参照图3进一步详细描述服务器120。
在各种实施例中,活动节点130被配置为服务于向分布式存储器110读写数据的请求。因此,活动节点130可以从客户端设备接收使得节点130将一组数据写入存储器110的写入事务请求131。响应于执行这样的事务,节点130可以将事务日志112中的事务的相应日志记录115(示为写入日志记录132)存储在存储器110内。继续上述密码示例,请求131可以指定新密码来替换先前的密码。结果,在一些实施例中,活动节点130可以写入事务记录115,该事务记录115指定关于事务的元数据,例如用户密码字段的关键字、先前的密码、新密码、时间戳等。如上所述,活动节点130还可以向与这个新创建的记录115关联的元数据服务器120发送通知133。下面参照图4A对活动节点130进行更详细的描述。
在各种实施例中,备用节点140被配置为服务提供存储在分布式存储器110中的数据的请求(或作为备份节点,其被配置为在有保证的情况下接管服务请求的角色)。在各种实施例中,备用节点140各自维护存储数据的本地高速缓存,该本地高速缓存也可以由分布式存储器110存储,并且可以反映数据库系统10的当前状态。在这样的实施例中,备用节点140从客户端设备接收对存储在存储器110中的数据的读取事务请求141。响应于这些请求,如果数据已经存在于高速缓存中,则备用节点140可以从其本地高速缓存(相对于存储器110)检索所请求的数据。为了确保其本地高速缓存与存储器110中的数据并发,在各种实施例中,备用节点140可以查阅目录125以识别哪些新记录115已被添加到事务日志112。然后,可以从存储器110读取这些记录115,以确定对存储器110中的数据的可能影响其本地高速缓存中的数据的任何修改。如果本地高速缓存中的数据受到影响(例如,键-值对的值已被更新或删除),则备用节点140可以更新高速缓存以反映存储器110中的数据的修改(例如,通过更新高速缓存条目或使其无效)。这可以允许备用节点维护反映数据库系统10的当前状态的高速缓存。如上所述,可以选择备用节点140中的一个备用节点成为活动节点130,此时,该节点可以服务于写入事务请求131。维护最新的缓冲高速缓存可以允许新选择的节点140更快地承担活动节点130的角色。下面参照图4B对备用节点140进行更详细的描述。
现在转向图2,示出了分布式存储器110中的事务日志112的一个实施例的框图。如上所述,在各种实施例中,分布式存储器110包括配置成存储系统10的数据的多个存储设备,包括构成事务日志112的多个日志记录115。在所示的实施例中,示出了逻辑域202到物理域204的映射。(在一些实施例中,分布式存储器110的实现方式可以不同于所示,例如,映射210可以位于元数据服务器120处。)
如上所述,事务日志112可以保持数据库系统10的当前状态,并且可以指定由活动节点130将事务提交到分布式存储器110的排序。在所示的实施例中,逻辑域202表示日志112的组织,因为随着时间的推移日志记录115被添加到日志112(并且可以是由诸如节点130和140等存储器110外部的组件感知的组织)。为了便于记录115的存储,在各种实施例中,分布式存储器110保持附加点212(也称为“头部”),该附加点212指定最新的特定记录115存储在哪里,以及在哪里将较新的记录115附加到日志112以用于活动节点130提交的事务。例如,存储器110可以包括特定的日志记录115C,其指定用于将用户密码从ABC更新为DEF的初始事务的元数据。在某一点上,活动节点130可以接收用于将密码从DEF更新为GHI的事务请求131,并在附加点212将附加记录115A附加到日志112。当附加事务被存储在存储器110中时,附加点212前进到事务日志112中的后续记录115。在一些实施例中,存储器110保持尾部214标记,该标记标识仍在存储器110中使用的最旧记录115。当最旧记录115最终被擦除时,尾部214可以前进到下一个正在使用的最旧记录115。
值得注意的是,在上面讨论的示例中,日志112包括两个事务的记录115。以这种方式存储记录115可以允许数据库系统10通过“重放”日志(例如,从头部212开始并向尾部214移动)来恢复到系统10的特定的先前状态。以这种方式存储还可以允许备用节点140通过从附加点212开始并将日志112重放到对应于该时间点的最后读取记录115(或从最后读取记录115开始并向前朝向头部212移动)来学习系统10如何从特定时间点改变(从而确定系统10的当前状态)。继续上述示例,备用节点140可以响应于读取记录115C将用于用户密码的键-值对的副本存储在其本地高速缓存中,该值是DEF。当备用节点140稍后从目录125获悉记录115A并从记录115A读取元数据时,备用节点140可以更新本地高速缓存中的键-值对,使得用户密码的值现在是GHI,从而使本地高速缓存与数据库系统10的当前状态一致。
在所示的实施例中,物理域204表示存储器110的多个存储设备上的日志112的组织,并且可以不同于逻辑域202中的组织。如图所示,例如,日志112的记录115A-C可以在逻辑域中相邻,因为它们在时间上顺序出现,但是可以存储在物理域204中的存储器110的不同元素中。(如上所述,在一些实施例中,一组记录115可以被放置在相同的日志扩展区中,因此,记录115A和115B可以并置在相同的扩展区中,但是记录115C可以包括在位于存储器110中的其他位置的另一扩展区中。)类似地,存储器110还可以包括可用于定位物理域204中的记录115的映射210。
在各种实施例中,映射210保持可用于通过提供对应的键来定位存储在存储器110处的特定记录115的键-值对映射。在一些实施例中,当存储记录115(或在另一实施例中分配用于存储记录115的日志扩展区)时,存储器110(或活动节点130)使用与新分配的记录115相关联的键和物理位置来更新映射210。当备用节点140从目录125获悉与新创建的记录115相关联的键时,备用节点140可以将与记录115相关联的键提供给存储器110,存储器110使用映射210来确定记录位于存储器110中的物理地址。
在各种实施例中,日志记录115包括事务元数据以及被操作的实际数据的副本;然而,数据库系统10也可以将数据的另一副本存储在单独的数据记录中。在一些实施例中,这些数据记录可以与日志记录115并置。在其他实施例中,数据记录可以单独定位并且以更好地促进响应于与读取事务请求141和/或写入事务请求131相关联的数据库查询而检索数据的方式组织。
现在转向图3,示出了元数据服务器120的一个实施例的框图。如上所述,在各种实施例中,元数据服务器120被配置为维护关于数据库集群和日志记录115的元数据,以及维护目录125。因此,在所示的实施例中,服务器120包括元数据320和具有记录键310的目录125。如上所述,元数据服务器120可以由多个相互协作的服务器来实现。在各种实施例中,服务器120的实现方式可以不同于所示,例如,包括如上文关于图2详细描述的映射210。
在各种实施例中,目录125可以包括上述各种信息中的任何一种,并且可以用于确定由活动节点130分配和写入的记录115。因此,目录125可以存储可用于定位特定记录115的键310。例如,键310可以被提供到映射210以接收相关记录115的物理地址。在一些实施例中,键310可用于定位包含一个或更多个日志记录315的容器(例如,日志扩展区)。在各种实施例中,服务器120响应于从活动节点130接收到关于新分配的记录115的通知133,用新键310更新目录125。随后,服务器120可以通知备用节点140目录125已经更新。希望读取新分配的记录115的备用节点140可以首先通过向元数据服务器120发出对键310的读取目录请求312来查阅目录125。响应于请求312,服务器120可以向请求节点提供一个或更多个键310。在一些情况下,请求312可以是基于标准的对键310的请求。例如,备用节点140可以通过对具有满足阈值的时间戳的记录115发出请求312来尝试用最新的事务元数据更新其高速缓存。
如关于图2所注意到的,在各种实施例中,元数据服务器120可以响应于新记录115的分配而从节点130接收附加信息。该信息可以包括附加点212和尾部214标记。元数据服务器120可在元数据330处存储该信息,并响应于请求(未示出)将该信息提供给节点130和140。作为示例,在变为活动的以后,活动节点130可能需要知道日志112的头部,从而可以从服务器120请求点212。在各种实施例中,元数据330包括目录125的每个条目的时间戳(例如,创建、修改等)、每个条目的事务ID、数据库模式等。服务器120可以使用该元数据来处理来自节点130和/或140的请求312。作为示例,特定备用节点140可以请求特定记录115的键310,因此,元数据服务器可以使用事务ID来确定记录115并随后确定键310。
现在转向图4A,示出了活动节点130的一个实施例的框图。如上所述,在各种实施例中,活动节点130被配置为服务于将数据读写到存储器110的事务请求131和141。在所示实施例中,活动节点130包括数据库应用410、高速缓存420和元数据430。在一些实施例中,活动节点130的实现不同于所示。
在各种实施例中,数据库应用410是被配置为实现高可用性(HA)数据库的软件例程、硬件或其组合。如上所述,节点130和140可以配置为在数据库集群中操作,因此应用410可以分布在节点130和140上,使得应用410可以在数据库级和本地级操作。在各种实施例中,例如,节点130和140可以共同进行选择,以确定哪个节点将成为下一个活动节点130。由于应用410可以操作具有所有节点及其健康状况的视图的数据库级,所以可以发生这种选择。在本地,活动节点130可以执行应用410来服务来自客户端设备的事务请求131和141。为了处理这种事务,在一个实施例中,应用410通过将数据和元数据分别存储在高速缓存420和元数据430中来保持数据库的当前状态。元数据430可以包括附加点212、尾部214、与当前存储的数据相关联的数据库模式、附加点212指示的当前日志记录115的剩余存储容量、时间戳、被处理的事务、要处理的事务等。
在各种实施例中,高速缓存420被配置为将数据存储在高速缓存行中,以服务于读取请求和/或缓冲数据以提交事务,直到数据可以存储在存储器110中。在一些实施例中,高速缓存420实现集合关联的高速缓存方案,其中高速缓存420被配置为存储与键相关联的值。例如,高速缓存420可以将数据存储为键-值对,其中键可以是记录的地址位置,值可以是存储在记录中的值。当接收到存储或检索值的请求时,高速缓存420可以使用键来选择用于存储值或从中检索值的特定高速缓存行/条目。在各种实施例中,在将数据写入分布式存储器110中的记录115之前,活动节点130对高速缓存420处的数据进行操作。
当节点130接收到写入事务请求131时,在一些实施例中,活动节点130确定是否将新记录115分配到分布式存储器110中,例如,基于当前日志记录115的剩余存储容量来确定。当新记录115需要被分配时,活动节点130可以在分布式存储器110处分配新记录115。一旦记录115可用于写入,在各种实施例中,活动节点130将事务提交/写入记录115。在一些情况下,事务可以包括新数据、先前数据和被识别的记录;在其他情况下,该信息可以包含在不同的文件中,但是可以被事务引用,例如,如关于图2所讨论的数据记录和日志记录115。在分配新记录115之后,在各种实施例中,活动节点130将记录通知元数据服务器120。这样的通知133可以包括可用于定位和访问新记录115的记录键310。在一些实施例中,活动节点130分配一组记录115而不是单个记录115,例如,节点130分配十个记录。
现在转向图4B,示出了备用节点140的一个实施例的框图。如上所述,在各种实施例中,备用节点140可以被配置为通过提供存储在分布式存储器110中的数据来服务事务请求141。在所示的实施例中,备用节点140包括数据库应用410、高速缓存420和元数据430,其可以实现类似于关于图4A所述的功能。在各种实施例中,节点140可以与所示不同地被实现。
如上所述,在各种实施例中,备用节点140通过将来自存储器110和服务器120的数据分别存储在高速缓存420和元数据430中,来保持数据库系统10的当前状态。这样做可以允许备用节点140变为活动节点130和服务请求141。为了保持系统10的当前状态,在各种实施例中,备用节点140监控目录125的已经被活动节点130分配的任何新记录115。例如,备用节点140可以将由目录125指示的记录115与元数据430中包括的处理记录115的列表(在某些情况下,日志扩展区)进行比较。在其它情况下,备用节点140可以被通知添加到目录125的任何新记录115。在确定存在新记录115之后,备用节点140可以向服务器120发送对应于新记录115(或日志扩展区)的键310的读取目录请求312。使用接收到的键310,备用节点140可以读取日志112中的新记录115,以确定节点130是否改变了本地存储在高速缓存420中的值。这种确定可以基于新记录115中的键,该键对应于用于索引高速缓存420中相应值的键。备用节点140可以更新存储过时值的高速缓存420的条目。在一些实施例中,节点140通过用修改后的值替换过时的值来更新条目;在其他实施例中,节点140通过使条目无效来更新条目,例如引起节点140在随后的请求141中从存储器110检索修改后的值。
现在转向图5,示出了方法500的流程图。方法500是由数据库系统(例如,系统10)执行的方法的一个实施例,该方法用于保持数据库系统的节点(例如,节点130和140)之间的数据一致性。在各种实施例中,方法500包括附加步骤-例如,在给定时间仅选择节点之一作为系统的活动节点(例如,节点130)操作,实现高可用性(HA)集群等。
方法500从步骤510开始,其中第一节点(例如,节点130)将一组数据存储在分布式存储器(例如,存储器110)中。在步骤520,第一节点将事务的记录(例如,记录115)存储在由分布式存储器维护的事务日志(例如,日志112)中。在各种实施例中,事务日志定义关于数据库执行事务的顺序。在各种实施例中,数据库系统的元数据服务器(例如,服务器120)维护识别分布式存储器中的记录的目录(例如,目录125)。第一节点可以通知元数据服务器事务的记录已经存储。
在步骤530中,第二节点(例如,节点140)从分布式存储器读取包括记录的事务日志。在步骤540中,第二节点基于读取事务日志更新由第二节点维护的元数据(例如,高速缓存420和元数据430)。元数据可以指示数据库的当前状态。在各种实施例中,第二节点访问目录以识别由第一节点添加到事务日志中的记录。因此,第二节点可以从分布式存储器中读取所添加的记录,并基于所读取的记录更新其元数据。在各种实施例中,第二节点接收执行包括写入一组数据的另一事务的请求。因此,第二节点将数据集连同事务日志中的事务记录一起存储在分布式存储器中。在一些实施例中,第二节点维护高速缓存(例如420),其包括维护也存储在分布式存储器中的数据的条目。在某些情况下,第二节点通过响应于指示条目中的数据已被该组数据替换的记录使高速缓存中的条目无效,来更新元数据。
现在转向图6,示出了方法600的流程图。方法600是由数据库系统(例如,数据库系统10)执行的方法的一个实施例,该方法用于在配置为处理对存储在分布式存储器(例如,存储器110)中的数据库系统的数据的请求的多个节点(例如,节点130和140)之间同步数据库系统的当前状态。在一些实施例中,多个节点中的一个节点当前为活动的,而其他节点当前为备用节点。
方法600从步骤610开始,活动节点(例如,节点130)接收到请求(例如,请求131),以执行包括将数据提交到分布式存储器的事务。响应于接收到请求,在步骤620中,活动节点将数据提交给分布式存储器以更新数据库系统的状态,并使得将提供提交的指示(例如记录115)的元数据存储在分布式存储器中的事务日志(例如日志112)中。在一些实施例中,事务日志向备用节点标识用于备用节点了解数据库的当前状态的信息。在各种实施例中,数据库系统维护在节点之间共享的目录(例如,目录125)。在各种实施例中,目录标识存储在分布式存储器中的元数据,并且可由备用节点(例如,节点140)用于定位存储在分布式存储器中的元数据。响应于使得存储元数据,活动节点可以更新目录以标识元数据。在各种实施例中,活动节点将数据写入外部存储到分布式存储器中的事务日志的数据记录。
在一些实施例中,备用节点接收到事务日志已被修改的通知。备用节点可以响应于活动节点更新目录以标识元数据来接收通知。响应于接收到通知,在一些实施例中,备用节点更新在备用节点处维护的元数据(例如,高速缓存420和元数据430),以服务于客户端请求(例如,请求141)。在一些实施例中,备用节点基于读取与事务相关联的元数据来更新其元数据。在各种实施例中,备用节点包括存储分布式存储器的数据的高速缓存。因此,备用节点可以从事务日志中检索与该事务相关联的键-值对的键。因此,备用节点可以识别高速缓存中与键相关联的条目,并用与键-值对的键相对应的值更新该条目。在一些实施例中,响应于备用节点成为新的活动节点,新的活动节点将数据提交给另一事务的分布式存储器,并使得将提供该另一事务的指示的元数据存储在事务日志中。
在一些实施例中,方法600包括额外的步骤,例如,执行可操作以使备用节点(例如,节点140)能够成为活动节点(例如,节点130)的高可用性(HA)应用(例如,应用410),仅选择多个节点中的一个节点作为数据库系统的活动节点,维护将事务日志(例如,日志112)中的指示(例如,记录115)的键与分布式存储器中存储该指示的物理位置相关联的映射,等等。
现在转向图7,示出了方法700的流程图。方法700是由数据库节点(例如,节点140)执行以保持与其他数据库节点的数据一致性的方法的一个实施例。
方法700从步骤710开始,其中数据库节点(例如,节点140)维护用于存储在在多个节点(例如,节点130和140)之间共享的分布式存储器(例如,存储器110)中的数据的高速缓存(例如,高速缓存420)。在各种实施例中,高速缓存包括用于键-值对的条目。在步骤720中,数据库节点读取事务日志(例如,日志112),该事务日志标识数据库系统(例如,系统10)的事务被提交到分布式存储器的排序。在各种实施例中,数据库节点监控数据库系统的目录,其标识已提交到事务日志的新事务。目录可以存储数据库系统的数据库模式。在读取事务日志之前,在一些实施例中,数据库节点确定目录标识了被提交到事务日志的新事务。
基于读取,在步骤720中,数据库节点确定另一节点(例如,节点130)向分布式存储器提交了修改键-值对的值的事务。响应于此确定,在步骤730中,数据库节点基于键-值对的修改后的值更新高速缓存中包括的条目。在一些实施例中,数据库节点用键-值对的修改后的值替换条目中的值;在其他实施例中,该节点使高速缓存中包含的条目无效。在被指示处理将数据写入分布式存储器的请求之后,在各种实施例中,数据库节点从客户端设备接收修改与分布式存储器中的另一键-值对相关联的值的请求。因此,数据库节点可以在分布式存储器处存储根据请求指定对值的修改的事务,并更新目录以标识该事务。在各种实施例中,方法700包括额外的步骤,例如,接收对与键-值对的键相对应的值的请求,将该值提供给客户端设备等。
示例计算机系统
现在转向图8,示出了可以实现分布式存储器110、元数据服务器120、活动节点130或备用节点140的示例性计算机系统800的框图。计算机系统800包括经由互连860(例如,系统总线)耦连到系统内存820和一个或更多个I/O接口840的处理器子系统880。一个或更多个I/O接口840耦连到一个或更多个I/O设备850。计算机系统800可以是各种类型的设备中的任何一种,包括但不限于服务器系统、个人计算机系统、台式计算机、膝上型计算机或笔记本计算机、大型机计算机系统、平板计算机、手持计算机、工作站、网络计算机、诸如移动电话、音乐播放器的消费者设备,或个人数据助理(PDA)。尽管为了方便起见,图8中示出了单个计算机系统800,但系统800也可以被实现为两个或更多个一起操作的计算机系统。
处理器子系统880可以包括一个或更多个处理器或处理单元。在计算机系统800的各种实施例中,处理器子系统880的多个实例可以耦连到互连860。在各种实施例中,处理器子系统880(或880内的每个处理器单元)可以包含高速缓存或其它形式的板上存储器。
系统内存820可用于存储由处理器子系统880可执行的程序指令,以使系统800执行本文所述的各种操作。系统内存820可以使用不同的物理存储器介质来实现,例如硬盘存储器、软盘存储器、可移除磁盘存储器、闪存、随机存取存储器(RAM-SRAM、EDO RAM、SDRAM、DDR SDRAM、RAMBUS RAM等)、只读存储器(PROM、EEPROM等)等。计算机系统800中的存储器不限于诸如内存820之类的主存储器。而是,计算机系统800还可以包括其他形式的存储器,例如处理器子系统880中的高速缓存内存和I/O设备850上的辅助存储器(例如,硬盘驱动器、存储阵列等)。在一些实施例中,这些其他形式的存储器还可以存储可由处理器子系统880执行的程序指令。在一些实施例中,上面描述的高速缓存420和元数据430可以包括(或被包括在)系统内存820中。
根据各种实施例,I/O接口840可以是配置成耦连到其它设备并与其它设备通信的各种类型的接口中的任何一种。在一个实施例中,I/O接口840是从前端到一个或更多个后端总线的桥芯片(例如,南桥(Southbridge))。I/O接口840可以经由一个或更多个对应总线或其他接口耦连到一个或更多个I/O设备850。I/O设备850的示例包括存储设备(硬盘驱动器、光盘驱动器、可移除闪存驱动器、存储阵列、SAN或其相关控制器)、网络接口设备(例如,到局域网或广域网)或其他设备(例如,图形、用户接口设备等)。在一个实施例中,计算机系统800经由网络接口设备850(例如,被配置为通过WiFi、蓝牙、以太网等进行通信)耦连到网络。
本申请的主题的实现包括但不限于以下示例1至20。
1、一种用于数据库系统在多个节点之间同步所述数据库系统的当前状态的方法,所述多个节点配置为处理对存储在分布式存储器中的所述数据库系统的数据的请求,其中所述多个节点中的一个节点当前为活动的,而所述多个节点中的其他节点当前为备用节点,所述方法包括:
在活动节点处接收执行第一事务的请求,所述第一事务包括将数据提交到所述分布式存储器;以及
响应于接收到所述请求:
由所述活动节点将所述数据提交到所述分布式存储器,以更新所述数据库系统的所述当前状态;以及
由所述活动节点使得将提供提交指示的第一元数据存储在事务日志中,所述事务日志存储在所述分布式存储器中,其中所述事务日志向所述备用节点标识信息,以便所述备用节点获知所述数据库系统的所述当前状态。
2、根据示例1所述的方法,还包括:
在所述备用节点中的一个备用节点处接收所述事务日志已被修改的通知;以及
响应于接收到所述通知,由所述备用节点更新在所述备用节点处维护的第二元数据以服务于客户端请求,其中所述更新包括读取存储在所述事务日志中的第一元数据。
3、根据示例2所述的方法,还包括:
维护在所述多个节点之间共享的目录,其中所述目录标识存储在所述分布式存储器中的元数据,并且能够由所述备用节点使用以定位存储在所述分布式存储器中的所述第一元数据;以及
响应于使得存储所述第一元数据,所述活动节点更新所述目录以标识所述第一元数据,其中所述更新使得所述备用节点接收所述通知。
4、根据示例1所述的方法,其中所述备用节点中的一个备用节点包括存储所述分布式存储器的数据的高速缓存,其中所述方法还包括:
由所述备用节点从所述事务日志中检索与所述第一事务相关联的键-值对的键;
由所述备用节点标识所述高速缓存中与所述键相关联的条目;以及
使用与所述键-值对的键相对应的值更新所述条目。
5、根据示例1所述的方法,其中所述提交包括将所述数据外部存储到所述分布式存储器中的所述事务日志中。
6、根据示例1所述的方法,其中所述多个节点被配置为执行高可用性(HA)应用,其能够操作为使能所述备用节点中的一个备用节点成为新的活动节点,并且其中所述方法还包括:
响应于所述备用节点成为新的活动节点:
由所述新的活动节点将数据提交到所述分布式存储器以用于第二事务;以及
由所述新的活动节点使得将提供所述第二事务的指示的元数据存储在所述事务日志中。
7、根据示例1所述的方法,还包括:
由所述分布式存储器维护将向所述事务日志中的多个事务提供指示的元数据的键与所述分布式存储器中提供所述指示的所述第一元数据所存储的物理位置相关联的映射。
8、一种数据库系统,包括:
多个节点,被配置为实现数据库;以及
分布式存储器,其可被所述多个节点访问,并且被配置为存储所述数据库的数据;
其中,所述多个节点中的第一节点被配置为:
针对第一事务,将第一组数据存储在所述分布式存储器中;以及
将所述第一事务的第一记录存储在由所述分布式存储器维护的事务日志中,其中所述事务日志定义了关于所述数据库执行事务的排序;以及
其中所述多个节点中的第二节点被配置为:
从所述分布式存储器中读取包括所述第一记录的事务日志;以及
基于读取了所述事务日志,更新由所述第二节点维护的元数据,其中所述元数据指示所述数据库的当前状态。
9、根据示例8所述的数据库系统,其中所述事务日志包括所述事务的多个记录,并且其中所述数据库系统还包括:
元数据服务器,其被配置为维护标识所述分布式存储器中的多个记录的目录,其中所述第一节点被配置为通知元数据服务器所述第一记录已被存储。
10、根据示例9所述的数据库系统,其中所述第二节点被配置为:
访问由所述元数据服务器维护的所述目录,以标识由所述第一节点添加到所述事务日志中的记录;
从所述分布式存储器中读取所添加的记录;以及
基于所读取的记录更新所维护的元数据。
11、根据示例8所述的数据库系统,其中所述第二节点被配置为:
在所述第二节点维护高速缓存,其中所述高速缓存包括维护也存储在所述分布式存储器中的数据的条目;以及
其中,更新所述元数据包括第二节点响应于第一记录指示条目中的数据已经被所述第一组数据替代,无效高速缓存中的条目。
12、根据示例8所述的数据库系统,其中所述第二节点被配置为:
接收执行包括写入第二组数据的第二事务的请求;
响应于所述请求:
将第二组数据存储在所述分布式存储器中;以及
将所述第二事务的第二记录存储在由所述分布式存储器维护的事务日志中。
13、根据示例8所述的数据库系统,其中所述数据库系统被配置为在给定时间仅选择所述多个节点中的一个节点作为所述数据库系统的活动节点操作。
14、根据示例8所述的数据库系统,其中所述多个节点被配置为实现高可用性(HA)集群,并且其中所述分布式存储器包括经由网络耦连到所述多个节点的多个存储设备。
15、一种非暂时性计算机可读介质,其上存储有程序指令,所述程序指令能够:使得数据库系统的多个数据库节点中的第一数据库节点来执行操作,所述操作包括:
维护用于在所述多个数据库节点之间共享的分布式存储器中所存储的数据的高速缓存,其中所述高速缓存包括用于第一键-值对的条目;
读取事务日志,其中所述事务日志标识将所述数据库系统的事务提交到所述分布式存储器的排序;
基于所述读取确定所述多个数据库节点中的第二数据库节点已将修改所述第一键-值对的值的第一事务提交到所述分布式存储器;以及
响应于所述确定,基于所述第一键-值对的修改后的值更新所述高速缓存中包含的所述条目。
16、根据示例15所述的计算机可读介质,其中所述操作进一步包括:
监控所述数据库系统的目录,所述目录标识已被提交到所述事务日志的新事务,其中所述目录存储所述数据库系统的数据库模式;以及
在读取所述事务日志之前,确定所述目录标识提交到所述分布式存储器的新事务。
17、根据示例16所述的计算机可读介质,其中所述操作进一步包括:
从客户端设备接收执行第二事务的请求,所述第二事务包括修改所述分布式存储器中的第二键-值对的值;
在所述分布式存储器处存储所述第二键-值对的修改后的值和所述第二事务的记录,其中所述记录指定对所述第二键-值对的值的修改;以及
更新所述目录,以标识所述第二事务的所述记录。
18、根据示例15所述的计算机可读介质,其中所述更新包括用所述第一键-值对的所述修改后的值替换所述条目中的值。
19、根据示例15所述的计算机可读介质,其中所述更新包括使包括在所述高速缓存中的所述条目无效。
20、根据示例15所述的计算机可读介质,其中所述操作进一步包括:
从客户端设备接收对与所述第一键-值对的键相对应的值的请求;以及
响应于确定所述值由更新后的条目存储,将来自所述更新后的条目的所述值提供给所述客户端设备。
***
尽管上文已经描述了具体实施例,但这些实施例并不意图限制本公开的范围,即使仅针对特定特征描述了单个实施例。除非另有说明,否则本发明中提供的特征的示例旨在说明而非限制。上述描述旨在涵盖对具有本公开的益处的本领域技术人员来说显而易见的替代、修改和等效物。
本公开的范围包括本文公开的任何特征或特征的组合(明示或暗示),或其任何概括,无论其是否缓解本文所述的任何或所有问题。因此,在对本申请(或对其主张优先权的申请)的申请过程期间,可以对任何此类特征组合提出新的请求。具体地,参照所附权利要求,从属权利要求的特征可以与独立权利要求的特征组合,并且各个独立权利要求的特征可以以任何适当的方式组合,而不仅仅是在所附权利要求中列举的特定组合。
Claims (16)
1.一种用于数据库系统在多个数据库节点之间同步所述数据库系统的当前状态的方法,所述多个数据库节点配置为处理对存储在分布式存储器中的所述数据库系统的数据的请求,其中所述多个数据库节点中的一个数据库节点当前为活动的,而所述多个数据库节点中的其他数据库节点当前为备用数据库节点,所述方法包括:
在活动数据库节点处,接收执行第一事务的请求,所述第一事务包括将数据提交到所述分布式存储器;以及
响应于接收到所述请求:
由所述活动数据库节点将所述数据提交到所述分布式存储器,以更新所述数据库系统的所述当前状态;
通过由所述活动数据库节点使得将提供提交指示的第一元数据存储在事务日志中而修改存储在所述分布式存储器中的所述事务日志,其中所述事务日志向所述备用数据库节点标识信息,以便所述备用数据库节点获知所述数据库系统的所述当前状态;以及
响应于使得存储所述第一元数据,所述活动数据库节点更新由所述数据库系统的元数据服务器维护的目录以标识所述第一元数据,所述目录能够由所述备用数据库节点使用以定位所述第一元数据,其中所述元数据服务器能够操作为通知所述备用数据库节点所述目录已经被更新。
2.根据权利要求1所述的方法,还包括:
在所述备用数据库节点中的一个备用数据库节点处接收所述事务日志已被修改的通知;以及
响应于接收到所述通知,由所述备用数据库节点更新在所述备用数据库节点处维护的第二元数据以服务于客户端请求,其中所述更新包括读取存储在所述事务日志中的第一元数据。
3.根据权利要求2所述的方法,还包括:
由所述备用数据库节点维护高速缓存,所述高速缓存包括维护也存储在所述分布式存储器中的数据的条目;以及
其中更新所述第二元数据包括:所述备用数据库节点响应于所述第一元数据指示所述条目中的数据已被已提交的数据替换而使所述高速缓存中的条目无效。
4.根据权利要求1所述的方法,其中所述备用数据库节点中的一个备用数据库节点包括存储所述分布式存储器的数据的高速缓存,其中所述方法还包括:
由所述备用数据库节点从所述事务日志中检索与所述第一事务相关联的键-值对的键;
由所述备用数据库节点标识所述高速缓存中与所述键相关联的条目;以及
使用与所述键-值对的键相对应的值更新所述条目。
5.根据权利要求1至4中任一项所述的方法,其中所述提交包括将所述数据外部存储到所述分布式存储器中的所述事务日志中。
6.根据权利要求1所述的方法,其中所述多个数据库节点被配置为执行高可用性应用,其能够操作为使能所述备用数据库节点中的一个备用数据库节点成为新的活动数据库节点,并且其中所述方法还包括:
响应于所述备用数据库节点成为新的活动数据库节点:
由所述新的活动数据库节点将数据提交到所述分布式存储器以用于第二事务;以及
由所述新的活动数据库节点使得将提供所述第二事务的指示的元数据存储在所述事务日志中。
7.根据权利要求1至4和6中任一项所述的方法,还包括:
由所述分布式存储器维护将向所述事务日志中的多个事务提供指示的元数据的键与所述分布式存储器中提供所述指示的所述第一元数据所存储的物理位置相关联的映射。
8.根据权利要求5所述的方法,还包括:
由所述分布式存储器维护将向所述事务日志中的多个事务提供指示的元数据的键与所述分布式存储器中提供所述指示的所述第一元数据所存储的物理位置相关联的映射。
9.一种数据库系统,包括:
多个数据库节点,被配置为实现数据库;和
分布式存储器,其能够被所述多个数据库节点访问,并且被配置为存储所述数据库的数据;
元数据服务器,其被配置为维护所述多个数据库节点中的备用数据库节点能够访问并且能够用于标识已经被写入所述分布式存储器的元数据的目录;
其中所述多个数据库节点中的第一数据库节点当前为活动数据库节点,被配置为:
接收执行第一事务的请求,所述第一事务包括将数据提交到所述分布式存储器;
针对所述第一事务,将第一组数据存储在所述分布式存储器中;
将所述第一事务的第一记录存储在由所述分布式存储器维护的事务日志中,其中所述事务日志定义了关于所述数据库执行事务的排序;以及
使得更新所述目录以标识所述第一事务,并且
其中所述元数据服务器被配置为通知所述备用数据库节点所述目录已经被更新。
10.根据权利要求9所述的数据库系统,其中所述多个数据库节点中的第二数据库节点被配置为:
从所述分布式存储器中读取包括所述第一记录的所述事务日志;以及
基于读取了所述事务日志,更新由所述第二数据库节点维护的元数据,其中所述元数据指示所述数据库的当前状态。
11.根据权利要求10所述的数据库系统,其中所述第二数据库节点被配置为:
访问由所述元数据服务器维护的所述目录,以标识由所述第一数据库节点添加到所述事务日志中的记录;
从所述分布式存储器中读取所添加的记录;以及
基于所读取的记录更新所维护的元数据。
12.根据权利要求10所述的数据库系统,其中所述第二数据库节点被配置为:
接收执行第二事务的请求,所述第二事务包括写入第二组数据;
响应于所述请求:
将第二组数据存储在所述分布式存储器中;以及
将所述第二事务的第二记录存储在由所述分布式存储器维护的所述事务日志中。
13.根据权利要求9至12中任一项所述的数据库系统,其中所述数据库系统被配置为在给定时间仅选择所述多个数据库节点中的一个数据库节点作为所述数据库系统的活动数据库节点操作。
14.根据权利要求9至12中任一项所述的数据库系统,其中所述多个数据库节点被配置为实现高可用性集群,并且其中所述分布式存储器包括经由网络耦连到所述多个数据库节点的多个存储设备。
15.根据权利要求13所述的数据库系统,其中所述多个数据库节点被配置为实现高可用性集群,并且其中所述分布式存储器包括经由网络耦连到所述多个数据库节点的多个存储设备。
16.一种非暂时性计算机可读介质,其上存储有程序指令,所述程序指令能够由一个或更多个处理器执行以实现根据权利要求1至8中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/666,141 US11347774B2 (en) | 2017-08-01 | 2017-08-01 | High availability database through distributed store |
US15/666,141 | 2017-08-01 | ||
PCT/US2018/044787 WO2019028130A1 (en) | 2017-08-01 | 2018-08-01 | HIGH AVAILABILITY DATABASE ACROSS A DISTRIBUTED STORE |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110998557A CN110998557A (zh) | 2020-04-10 |
CN110998557B true CN110998557B (zh) | 2023-11-07 |
Family
ID=63209705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880050653.7A Active CN110998557B (zh) | 2017-08-01 | 2018-08-01 | 通过分布式存储器的高可用性数据库系统及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11347774B2 (zh) |
EP (1) | EP3662390B1 (zh) |
JP (1) | JP7263314B2 (zh) |
CN (1) | CN110998557B (zh) |
WO (1) | WO2019028130A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363641B (zh) * | 2017-01-26 | 2022-01-14 | 华为技术有限公司 | 一种主备机数据传递方法、控制节点以及数据库系统 |
CN110046199A (zh) * | 2019-04-24 | 2019-07-23 | 北京阿尔山金融科技有限公司 | 交易数据的同步方法、装置及电子设备 |
US10942852B1 (en) | 2019-09-12 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
CN111295649B (zh) * | 2019-09-12 | 2024-04-19 | 创新先进技术有限公司 | 日志结构存储系统 |
CN110750517B (zh) * | 2019-10-12 | 2022-06-10 | 浪潮电子信息产业股份有限公司 | 一种本地存储引擎系统的数据处理方法、装置以及设备 |
CN110851407A (zh) * | 2019-11-15 | 2020-02-28 | 南京邮电大学 | 一种数据分布式存储系统及方法 |
US11544232B2 (en) * | 2019-12-11 | 2023-01-03 | Western Digital Technologies, Inc. | Efficient transaction log and database processing |
JP7037595B2 (ja) * | 2020-03-30 | 2022-03-16 | 株式会社日立製作所 | データベース管理システム、及び、データベース管理方法 |
US11119872B1 (en) * | 2020-06-02 | 2021-09-14 | Hewlett Packard Enterprise Development Lp | Log management for a multi-node data processing system |
US11741050B2 (en) | 2021-01-29 | 2023-08-29 | Salesforce, Inc. | Cloud storage class-based variable cache availability |
US11622000B2 (en) | 2021-01-29 | 2023-04-04 | Salesforce, Inc. | Grey failure handling in distributed storage systems |
CN112905696B (zh) * | 2021-02-09 | 2021-11-19 | 掌阅科技股份有限公司 | 基于事务标识的多机房同步方法、计算设备及存储介质 |
CN113407123B (zh) * | 2021-07-13 | 2024-04-30 | 上海达梦数据库有限公司 | 一种分布式事务节点信息存储方法、装置、设备及介质 |
CN113886350A (zh) * | 2021-09-10 | 2022-01-04 | 阿里云计算有限公司 | 数据处理方法及系统 |
US11914580B2 (en) * | 2021-09-30 | 2024-02-27 | Salesforce, Inc. | Mechanisms for deploying database clusters |
CN113986925A (zh) * | 2021-10-28 | 2022-01-28 | 傲拓科技股份有限公司 | 分布式时序数据库及其存储方法 |
CN115757330A (zh) * | 2022-12-08 | 2023-03-07 | 丝路信息港云计算科技有限公司 | 一种分布式文件系统的高度可靠的元数据服务系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105190622A (zh) * | 2013-03-15 | 2015-12-23 | 亚马逊科技公司 | 用于分布式数据库系统的快速崩溃恢复 |
CN106165356A (zh) * | 2014-02-13 | 2016-11-23 | 洛克波特网络股份有限公司 | 在分布式直接互连网络中路由分组的方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649089A (en) | 1994-11-30 | 1997-07-15 | Motorola, Inc. | Method and apparatus for maintaining a redundant database system |
JP4286786B2 (ja) | 2002-12-18 | 2009-07-01 | 富士通株式会社 | 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法 |
US7734580B2 (en) | 2007-01-29 | 2010-06-08 | Oracle International Corporation | Readable physical storage replica and standby database system |
US8868504B2 (en) | 2007-03-07 | 2014-10-21 | Oracle International Corporation | Database system with active standby and nodes |
US7913050B2 (en) | 2007-06-26 | 2011-03-22 | Oracle International Corporation | Fencing using a hierarchical relationship |
US8145938B2 (en) | 2009-06-01 | 2012-03-27 | Novell, Inc. | Fencing management in clusters |
US8381017B2 (en) | 2010-05-20 | 2013-02-19 | International Business Machines Corporation | Automated node fencing integrated within a quorum service of a cluster infrastructure |
JP2012008934A (ja) | 2010-06-28 | 2012-01-12 | Kddi Corp | 分散ファイルシステム及び分散ファイルシステムにおける冗長化方法 |
AU2012261986B2 (en) | 2011-06-03 | 2016-02-04 | Apple Inc. | Cloud storage |
TWI476581B (zh) | 2012-12-28 | 2015-03-11 | Ibm | 主動式/使用中資訊設備叢集中提供高可用性的方法、裝置與電腦程式產品 |
US10747746B2 (en) * | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US20150213049A1 (en) * | 2014-01-30 | 2015-07-30 | Netapp, Inc. | Asynchronous backend global deduplication |
US9477519B2 (en) * | 2014-09-18 | 2016-10-25 | Robert D. Pedersen | Distributed activity control systems and methods |
US10235407B1 (en) * | 2015-08-21 | 2019-03-19 | Amazon Technologies, Inc. | Distributed storage system journal forking |
CN108509462B (zh) * | 2017-02-28 | 2021-01-29 | 华为技术有限公司 | 一种同步活动事务表的方法及装置 |
US10585873B2 (en) * | 2017-05-08 | 2020-03-10 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
US10884926B2 (en) * | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
-
2017
- 2017-08-01 US US15/666,141 patent/US11347774B2/en active Active
-
2018
- 2018-08-01 EP EP18755639.4A patent/EP3662390B1/en active Active
- 2018-08-01 CN CN201880050653.7A patent/CN110998557B/zh active Active
- 2018-08-01 JP JP2020505357A patent/JP7263314B2/ja active Active
- 2018-08-01 WO PCT/US2018/044787 patent/WO2019028130A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105190622A (zh) * | 2013-03-15 | 2015-12-23 | 亚马逊科技公司 | 用于分布式数据库系统的快速崩溃恢复 |
CN106165356A (zh) * | 2014-02-13 | 2016-11-23 | 洛克波特网络股份有限公司 | 在分布式直接互连网络中路由分组的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3662390A1 (en) | 2020-06-10 |
JP7263314B2 (ja) | 2023-04-24 |
EP3662390B1 (en) | 2022-04-06 |
WO2019028130A1 (en) | 2019-02-07 |
US11347774B2 (en) | 2022-05-31 |
US20190042638A1 (en) | 2019-02-07 |
CN110998557A (zh) | 2020-04-10 |
JP2020529673A (ja) | 2020-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998557B (zh) | 通过分布式存储器的高可用性数据库系统及方法 | |
US9720839B2 (en) | Systems and methods for supporting a plurality of load and store accesses of a cache | |
US9495294B2 (en) | Enhancing data processing performance by cache management of fingerprint index | |
CN110998562B (zh) | 在分布式集群系统中隔开节点 | |
US9405680B2 (en) | Communication-link-attached persistent memory system | |
US7120746B2 (en) | Technique for data transfer | |
US7743209B2 (en) | Storage system for virtualizing control memory | |
KR20170098981A (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
US20130290636A1 (en) | Managing memory | |
US8185691B2 (en) | Optimized cache coherency in a dual-controller storage array | |
US20150006478A1 (en) | Replicated database using one sided rdma | |
CN116194900A (zh) | 高速缓存技术 | |
US10642745B2 (en) | Key invalidation in cache systems | |
CN104978283A (zh) | 一种内存访问控制方法,及装置 | |
US11288238B2 (en) | Methods and systems for logging data transactions and managing hash tables | |
WO2005066789A2 (en) | Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic | |
US7089357B1 (en) | Locally buffered cache extensions having associated control parameters to determine use for cache allocation on subsequent requests | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database | |
CN108694209B (zh) | 基于对象的分布式索引方法和客户端 | |
US7130931B2 (en) | Method, system, and article of manufacture for selecting replication volumes | |
US10534751B1 (en) | Metadata space efficient snapshot operation in page storage | |
US20210263648A1 (en) | Method for managing performance of logical disk and storage array | |
US9304918B2 (en) | Computer system and cache control method |
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 | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |