CN108885622A - 多主同步复制优化的系统和方法 - Google Patents
多主同步复制优化的系统和方法 Download PDFInfo
- Publication number
- CN108885622A CN108885622A CN201680083963.XA CN201680083963A CN108885622A CN 108885622 A CN108885622 A CN 108885622A CN 201680083963 A CN201680083963 A CN 201680083963A CN 108885622 A CN108885622 A CN 108885622A
- Authority
- CN
- China
- Prior art keywords
- record
- row
- inquiry
- received
- conflict
- 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
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/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- 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
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种多主同步复制优化的系统和方法。在本发明的一种实现方式中,在插入期间选择系统中的一个设备作为插入引导器。插入引导器为传入的查询分配一系列行(row_id)。如果查询插入的记录超出了范围,它将被回退。在提交期间,row_id范围和新记录将被发送至其他主机,以进行冲突检查。通过该实现方式,由于采用了乐观并发的复制,本发明中系统的可扩展性和吞吐量得以提高。
Description
技术领域
此处所述的本发明,通常,涉及将数据存储在数据库或分布式计算系统中,更具体地,涉及多主同步复制优化的系统和方法。
背景技术
数据库是以结构化的方式存储数据的电子归档系统。数据库中主要的存储结构是一个表。数据库可以包含多个表,每个表可以保存特定类型的信息。数据库表在水平行和垂直列中存储和组织数据。行通常对应于表示表中各个记录的真实世界实体或关系。列可以表示这些实体或关系的特定属性,例如“名称”、“地址”或“电话号码”。例如,公司X可以具有包含“客户”表的数据库,其中,在该表中列出了名称、地址及其客户的电话号码。每行可以代表单个客户,列可以表示每个客户的姓名、地址和电话号码。
数据库复制是确保数据副本在不同机器上以提供高可用性的过程。数据库复制通常是从一台计算机或服务器中的数据库到另一台计算机的数据库的电子复制数据,使得所有用户共享相同级别的信息。
如现有技术中众所周知的,复制可以是物理的(日志传输的)或逻辑的(命令传输的)。它也可以是同步的,其中,应用程序等待时间包括发起者节点的改变以及副本中安全提交的时间;或者,它可以是异步的,其中,当数据在发起者节点中安全提交后,应用程序立即获得响应。副本通常是只读的。此外,主-主复制是一种部署情景,其中,两个节点都可以接受写查询。此外,可以理解的是,发起者节点始终是单个节点。然而,可以存在多个复制节点。
通常,通过将该改变应用到发起者节点上接收的查询,将这些改变发送至副本,等待这些改变在副本节点上提交,传统上可用的技术得以工作,然后提交发起者节点中的改变。然而,多主同步复制的主要挑战在于针对从副本节点接收的事务以及当前节点中发生的事务的冲突消解。冲突消解是处理不同类型冲突的方法,即更新冲突(两个事务同时更新同一行)、唯一性约束冲突(两个事务试图更新/插入表中的相同唯一键)、删除冲突(一个事务删除一个行以及另一事务更新/删除同一行)。对于主-主复制,在更新节点(发起者节点除外)期间,在记录上获得锁,以检查是否存在冲突。这些锁保持直到事务提交或回退。这种锁定降低了整个系统的可扩展性和吞吐量。
发明内容
提供了本发明内容,以引入与多主同步复制优化的系统和方法相关的概念,在下面的详细描述中对此进行进一步描述。本发明内容并非旨在标识所要求保护的主题的基本特征,也不旨在用于确定或限制所要求保护的主题的范围。
本发明的主要目的在于通过提供一种用于优化多主同步复制的系统和方法来解决上述技术问题。
本发明的另一目的在于在多主同步复制的情况下,提高系统的可扩展性和吞吐量。本发明将应用级别的流控制器的可用性考虑在内,其基于应用逻辑将不同范围的查询路由到不同的主机。
本发明的另一目的在于提供一种系统和方法,其采用乐观并发的复制,以实现改进的系统的可扩展性和吞吐量。
在一种实现方式中,公开了一种多主复制系统。该系统包括至少一个第一主设备和第一复制站点上的第一数据库,以及至少一个第二主设备和第二复制站点上的第二数据库。具有第一复制站点上的第一数据库的第一主设备用于:接收至少一个查询;对至少一行进行分配,以插入所接收的查询中的至少一个记录,其中,基于行标识(row_id)对该行进行分配;确定待插入的记录是否超过分配的行;如果超过,则回退该插入;或者,在提交期间将row_id以及所接收的查询中的记录发送至第二主设备,以进行冲突检查。具有第二复制站点上的第二数据库的第二主设备用于:接收row_id以及查询中的记录;基于第二数据库中至少一行接收的row_id,进行冲突检查;如果检测到冲突,则提交失败,并显示错误;或者,如果待插入的记录未超过分配的行并且未检测到冲突,则该记录将同时应用于第一数据库和第二数据库。
在一种实现方式中,公开了一种多主复制系统。该系统包括具有第一复制站点上的第一数据库的至少一个第一主设备,用于:接收至少一个查询;对至少一行进行分配,以插入所接收的查询中的至少一个记录,其中,基于row_id对该行进行分配;判断待插入的记录是否超过分配的行;如果超过,则回退该插入;或者,将row_id以及所接收的查询中的记录发送至至少一个第二主设备和第二复制站点上的第二数据库,以进行冲突检查。
在一种实现方式中,公开了一种多主复制系统。该系统包括具有第二复制站点上的第二数据库的至少一个第二主设备,用于:从至少一个第一主设备接收行的至少一个row_id以及查询中的记录;基于第二数据库中至少一行接收的row_id,进行冲突检查,其中,如果检测到冲突,则提交失败,并显示错误;或者,如果未检测到冲突,则该记录将同时应用于驻留在第一主设备的第一数据库和第二数据库。
在一种实现方式中,公开了一种多主复制方法。该方法包括:
●接收至少一个查询;
●对至少一行进行分配,以插入所接收的查询中的至少一个记录,其中,基于row_id对该行进行分配;
●判断待插入的记录是否超过分配的行;
●如果超过,则回退该插入;或者
●将row_id以及所接收的查询中的记录发送至至少一个设备,以进行冲突检查。
与现有技术(如果有的话)相反,本发明不使用悲观的方法,可以乐观地更新复制的记录。在本发明中,在实际操作中没有获得锁。实际的冲突检查在主方提交时发生。因此,即使发起者节点中的查询成功,它可能会在提交期间失败。
此外,在本发明中,在插入期间选择其中一个主机作为插入引导器。插入引导器将为传入的查询分配一系列row_id。如果查询插入的记录超出了范围,它将被回退。在提交期间,row_id范围和新记录将被发送至其他副本,以进行冲突检查。本发明适用于更新查询,其中,row_id可以发生改变,以用于插入不同的副本。
上面关于第一种实现方式提到的各种选项和优选实施方式也适用于其它实现方式。
附图说明
该详细描述是参考附图描述的。在附图中,参考编号最左边的数字表示所述参考编号在该附图中首次出现。所有附图使用相同数字指代相同特征的组件。
图1示出了根据本发明实施例的多主复制系统;
图2示出了根据本发明实施例的数据库复制的框图;
图3示出了根据本发明实施例的多主复制方法。
应当理解,附图的目的在于对本发明的概念进行阐述,因此未必是按比例绘制的。
具体实施方式
现将参考附图对说明性实施例进行更详细的描述,其中,示出了示例性实施例。然而,本公开可以有许多种不同的实施形式,而不应仅限于这里所阐述的示例性实施例。相反,提供这些示例性实施例,使得本公开是彻底和完整的,并向本领域的技术人员充分地传达本公开的范围。在描述中,可以省略众所周知的特征及技术的细节,以避免对所呈现的实施例进行不必要地模糊。
这里所使用的术语仅用于描述特定实施例,而非旨在限制本申请。除非上下文清楚说明,否则这里所用的单数形式“一”和“所述”包括其复数形式。此外,使用术语“一”等不表示对数量的限制,而是表示存在至少一个引用项。应进一步了解,本说明书中所用的术语“包括”用于说明存在所述特征、区域、整数、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其他特征、区域、整数、步骤、操作、元件、部件和/或它们的组合。
下文描述中,为了解释而陈述许多具体细节,以对本发明各实施例进行通彻理解。然而在实际应用中,显然可以不包括本发明的这些特定细节。在其他情况下,众所周知的结构和装置以框图形式示出,以避免对本发明进行不必要地模糊。
虽然描述了用于多主同步复制优化的系统和方法的方面,但是本发明可以在任一数量的不同计算系统、环境和/或配置中得以实现,在以下示例性的系统、装置和方法的情景中对所述实施例进行描述。
在一种实现方式中,本发明不使用悲观的方法,可以乐观地更新复制的记录。在实际操作中,本发明未使用任何锁,即没有获得锁。实际冲突检查在复制方提交时发生。因此,即使发起者节点中的查询成功,它可能会在提交期间失败。
本发明也适用于查询更新,而row_id可以发生改变,以进行不同主机的插入。在插入过程中,可以选择其中一个主机作为插入引导器。插入引导器可以为传入的查询分配一系列row_id。如果查询插入的记录超出了范围,它将被回退。在提交期间,行id范围和新记录将被发送至其他副本,以进行冲突检查。
在一种实现方式中,与现有的复制操作相比,在本发明中,当为复制发送一个日志时,其包含具有更新数据的记录的row_id。该row_id可以被视为来自表格的第0条记录的记录的物理偏移量。每次接收到row_id的日志时,将该row_id标记为是脏的,并开始更新行id对应的记录。该更新可以是原子操作,不需要任何锁。
在一种实现方式中,与节点更新期间的现有操作相比,在本发明中,在节点的更新操作期间,将特定记录的row_id标记为是脏的。这可以是原子操作。如果由于副本更新而将row_id标记为是脏的,则该阶段的当前更新操作可能会失败。如果当前节点中的记录更新成功,则将冲突消解移到提交时间。
在一种实现方式中,与提交期间的现有操作相比,在本发明中,在提交每个事务期间,将消息发送至所有副本。基于副本发送的日志的row_id以及当前正在进行的事务的row_id,每个副本对该冲突进行检查。如果存在冲突,它们会向发起者节点返回错误,事务失败。如果不存在冲突,发起者节点及副本节点并发地对该记录进行应用。由于副本中可能没有更多的冲突,因此用户可能必须等待,直到该记录在发起者节点中得以应用。
现参考图1,示出了根据本主题实施例的多主复制系统。在一种实现方式中,系统100包括存储复制数据并彼此进行通信耦合的多个主设备。现参考图1,公开了多主复制的系统100。该系统100包括至少一个第一主设备102和第一复制站点上的第一数据库104,以及至少一个第二主设备106和第二复制站点上的第二数据库108。虽然鉴于本发明在第一主设备102和/或第二主设备106上得以实现,对本主题进行了阐述,但是可以理解的是,第一主设备102和/或第二主设备106也可以在诸如笔记本电脑、台式计算机、笔记本、工作站、大型计算机、服务器、网络服务器等各种计算系统中得以实现。应当理解,驻留在第一主设备102和/或第二主设备106上的多个用户或应用程序可以对第一主设备102和/或第二主设备106进行访问。第一主设备102和/或第二主设备106的示例可以包括但不限于便携式计算机(计算机系统)、个人数字助理、手持设备、传感器、路由器、网关以及工作站。第一主设备102和/或第二主设备106彼此进行通信耦合,或与其他设备或节点或装置进行通信耦合,以形成一个网络(未示出)。
在一种实现方式中,所述网络(未示出)可以是无线网络、有线网络或其组合。可以将所述网络实现为诸如GSM、CDMA、LTE、UMTS、内联网、局域网(local area network,简称LAN)、广域网(wide area network,简称WAN)、互联网等不同类型的网络之一。所述网络可以是专用网络或共享网络。共享网络表示的是使用诸如超文本传输协议(HypertextTransfer Protocol,简称HTTP)、传输控制协议/因特网协议(Transmission ControlProtocol/Internet Protocol,简称TCP/IP)、无线应用协议(Wireless ApplicationProtocol,简称WAP)等各种协议的不同类型网络的关联,以进行相互通信。此外,所述网络可以包括各种网络设备,包括路由器、网桥、服务器、计算设备、存储设备等。
根据本主题实施例所示的第一主设备102和/或第二主设备106可以包括处理器(未示出)、接口(未示出)以及存储器(未示出)。可以将处理器实现为一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令控制信号的任一设备。在其他功能中,至少一个处理器用于获取并执行存储器中存储的计算机可读指令或模块。
接口(I/O接口)可以包括各种软件和硬件接口,例如Web接口、图形用户界面等。I/O接口可以允许第一主设备102和/或第二主设备106直接与用户进行交互。此外,I/O接口可以使第一主设备102和/或第二主设备106能够与其他设备或节点以及诸如Web服务器和外部数据服务器(未示出)等的计算设备进行通信。I/O接口可以促进各种网络和协议类型中的多种通信,包括诸如GSM、CDMA、LAN、电缆等的有线网络以及诸如WLAN、蜂窝或卫星等的无线网络。I/O接口可以包括一个或多个端口,其用于将多个设备彼此连接或将其连接到另一个服务器。I/O接口可以通过为接口提供的屏幕,提供用户与第一主设备102和/或第二主设备106之间的交互。
存储器可以包括本领域已知的任一计算机可读介质,例如包括诸如静态随机存取存储器(static random access memory,简称SRAM)和动态随机存取存储器(dynamicrandom access memory,简称DRAM)等的易失性存储器和/或诸如只读存储器(read onlymemory,简称ROM)、可擦除可编程ROM、闪存、硬盘、光盘和磁带等的非易失性随机存取存储器(non-volatile random access memory,简称NVRAM)。存储器可以包括用于执行各种功能的多个指令或模块或应用。存储器包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
在一种实现方式中,公开了一种多主复制系统100。该系统100包括至少一个第一主设备102和第一复制站点上的第一数据库104,以及至少一个第二主设备106和第二复制站点上的第二数据库108。具有第一复制站点上的第一数据库104的第一主设备102用于:接收至少一个查询;对至少一行进行分配,以插入所接收的查询中的至少一个记录,其中,基于row_id对该行进行分配;判断待插入的记录是否超过分配的行;如果超过,则回退该插入;或者,在提交期间将row_id以及所接收的查询中的记录发送至第二主设备,以进行冲突检查。具有第二复制站点上的第二数据库108的第二主设备106用于:接收row_id以及查询中的记录;基于第二数据库中至少一行接收的row_id,进行冲突检查。如果检测到冲突,则提交失败,并显示错误;或者,如果未检测到冲突,则该记录将同时应用于第一数据库和第二数据库。
在一种实现方式中,公开了多主复制系统100。该系统100包括具有第一复制站点上的第一数据库104的至少一个第一主设备102,用于:接收至少一个查询;对至少一行进行分配,以插入所接收的查询中的至少一个记录,其中,基于row_id对该行进行分配;判断待插入的记录是否超过分配的行;如果超过,则回退该插入;或者,将row_id以及所接收的查询中的记录发送至至少一个第二主设备和第二复制站点上的第二数据库,以进行冲突检查。
在一种实现方式中,公开了多主复制系统100。该系统100包括具有第二复制站点上的第二数据库108的至少一个第二主设备106,用于:从至少一个第一主设备接收行的至少一个row_id以及查询中的记录;基于第二数据库中至少一行接收的row_id,进行冲突检查,其中,如果检测到冲突,则提交失败,并显示错误;或者,如果未检测到冲突,则该记录将同时应用于驻留在第一主设备的第一数据库和第二数据库。
在一种实现方式中,每次接收到row_id的日志时,将该row_id标记为是脏的,并开始更新下一个记录。该更新可以是原子操作,不需要任何锁。
在一种实现方式中,在节点的更新操作期间,将特定记录的row_id标记为是脏的。如果由于副本更新而将row_id标记为是脏的,则该阶段的当前更新操作可能会失败。如果当前节点中的记录更新成功,则将冲突消解移到提交时间。
在一种实现方式中,在更新该行中的下一个记录时,移动至少一个冲突消解,以进行提交。
现参考图2,示出了根据本主题实施例的数据库复制的框图。将应用程序中的两个更新查询(A、B)考虑在内。接收到这些查询时,即使它们更新同一个表t1,应用程序流控制器也可以认识到这些查询正在更新不同的范围,并将查询A发送至Master1,将查询B发送至Master2。接收到查询(A1)时,Master1创建一个空写集,在本地更新表(A2),填充该写集并尝试提交(A3)。在提交期间,它将包含更新记录的row_id的写集发送至其他主机(在这种情况下,为Master2)。从Master1接收到消息时,Master2检查Master2上本地存储中的记录是否存在冲突,并将冲突消解结果作为A5发送至发起者节点(Master1)。如果不存在冲突,则在发送A5之前,在Master2中将该行提交。基于冲突检查的结果,Master1继续运行,并将记录(A6)提交。针对其他更新(B)进行类似的操作,其中,Master2为发起者节点,而Master1为副本。
图3示出了根据本主题实施例的多主复制方法。可以在计算机可执行指令的一般情景中对该方法进行描述。通常,计算机可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块、功能等。该方法还可以在分布式计算环境中得以实施,其中,功能由通过通信网络连接的远程处理设备执行。在分布式计算环境中,计算机可执行指令可以位于本地和远程计算机存储介质中,包括存储器存储设备。
对该方法进行描述的顺序并非旨在构成限制,可以以任何顺序对任一数量的所述方法块进行组合,以实现该方法或替代方法。另外,在不脱离本文所描述的主题的保护范围的情况下,可以将各个块从该方法中删除。此外,该方法可以以任一合适的硬件、软件、固件或其组合得以实现。然而,为了便于说明,在下面描述的实施例中,可以认为该方法是在上述系统100中得以实现的。
在一种实现方式中,公开了多主复制方法。
在块302中,本发明接收至少一个查询,其指示了数据库的特定行中的插入/更新记录。
在块304中,本发明发起/启动所接收的查询的事务。
在块306中,鉴于待更新记录的最大数量,将空写集分配给事务。
在块308中,本发明判断待更新的记录是否存在冲突。
在一种实现方式中,每次需要更新行时,将row_id标记为是脏的,并开始更新下一个记录。该更新可以是原子操作,不需要任何锁。
在一种实现方式中,在节点的更新操作期间,将特定记录的row_id标记为是脏的。这也可以为原子操作。如果由于副本更新而将row_id标记为是脏的,则该阶段的当前更新操作可能会失败。如果当前节点中的记录更新成功,则将冲突消解移到提交时间。
在块310中,基于308中的结果,将事务回退或将信息发送至其他副本。
在块312中,如果从其他副本检测到冲突,则提交失败,并显示错误;或者,如果未检测到冲突,则提交记录。
在一种实现方式中,该方法为基于行(row_id)的多主复制。
除上述内容外,本发明还包括以下优点:
√由于采用了乐观并发的复制,本发明提高了系统的可扩展性和吞吐量。
√本发明提供了基于行id的多主复制。
本领域技术人员可以理解用于实现本发明的任何已知或新的算法。然而,应当注意的事,不管使用任何已知的或新的算法,本发明提供一种在备份操作期间用于实现上述益处和技术改进的方法。
本领域普通技术人员能够认识到,结合本说明书所公开的实施例中所描述的示例,可通过电子硬件或计算机软件与电子硬件的组合来实施单元和算法步骤。功能是由硬件还是由软件执行取决于技术方案的特定应用和设计约束条件。本领域技术人员可使用不同方法实现每个特定应用的所描述功能,但是不应认为该实现超出本发明的范围。
本领域技术人员可清楚地理解,出于方便和简单描述的目的,对于前述系统、装置和单元的详细工作过程,可参考前述方法实施例中的对应过程,本文中不再描述细节。
在本应用中提供若干实施例中,应理解,所公开的系统、装置和方法可通过其它方式实现。例如,所描述的装置实施例仅仅是示例性的。例如,单元划分仅仅是逻辑功能划分且在实际实现中可以是其它划分。例如,可将多个单元或部件合并或集成到另一系统中,或可忽略或不执行部分特征。另外,可通过一些接口实现所显示或论述的互相耦合或直接耦合或通信连接。装置或单元之间的直接耦合或通信连接可通过电子、机械或其它形式实现。
当这些功能以软件功能单元的形式实现以及作为单独产品销售或使用时它们可存储在计算机可读存储介质中。基于这种理解本发明的技术方案基本上或构成现有技术的部分或技术方案的部分可通过软件产品的形式实现。计算机软件产品存储在存储介质中并包括若干指令,用于指示计算机设备(其可为为个人计算机、服务器或网络设备)执行本发明实施例中所描述的方法的所有或部分步骤。上述存储介质包括:可以存储程序代码的任何媒体,例如USB盘、可移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁盘或光学光盘。
尽管已经以特定于结构特征和/或方法的语言对多主同步复制优化的系统和方法的实现进行了描述,但是应当理解的是,所附权利要求不必限于所述特定特征或方法。相反,将特定特征和方法作为多主同步复制优化的系统和方法的实现示例进行公开。
Claims (17)
1.一种多主复制系统,其特征在于,所述系统包括:
至少一个第一主设备和位于第一复制站点的第一数据库;
至少一个第二主设备和位于第二复制站点的第二数据库;其中,
具有位于第一复制站点的所述第一数据库的所述第一主设备用于:
接收至少一个查询;
分配至少一行用于插入所述接收的查询中的至少一个记录,其中,基于行标识对所述行进行分配;
确定待插入的所述记录是否超过所述分配的行;
如果超过,则回退所述插入;或者
在提交期间,将所述行标识以及所述接收的查询中的所述记录发送至所述第二主设备,以进行冲突检查;其中,
具有位于所述第二复制站点的所述第二数据库的所述第二主设备用于:
接收所述行标识以及所述查询中的所述记录;
基于所述第二数据库中的至少一行接收的所述行标识,进行冲突检查,其中,
如果检测到所述冲突,则所述提交失败,并显示错误;或者
如果未检测到所述冲突,则所述记录将同时应用于所述第一数据库和所述第二数据库。
2.根据权利要求1所述的系统,其特征在于,在接收到所述行,以插入所述接收到的查询中的所述记录时,所述第一主设备和/或所述第二主设备用于:
将所述行标记为是脏的;
如果将所述行标记为是脏的,更新所述查询中接收的所述下一个记录。
3.根据权利要求2所述的系统,其特征在于,还用于:
基于所述行标识对所述行进行检测,以更新所述下一个记录;
检查是否将所述行标记为是脏的,其中,至少一个复制更新将所述行标记为是脏的,如果将所述行标记为是脏的,则下一个记录更新失败,或者,如果未将所述行标记为是脏的,则更新所述行中的所述下一个记录。
4.根据权利要求3所述的系统,其特征在于,一旦更新所述行中的所述下一个记录,则移动至少一个冲突消解,以进行提交。
5.一种多主复制系统,其特征在于,所述系统包括:
具有位于第一复制站点的第一数据库的至少一个第一主设备,用于:
接收至少一个查询;
分配至少一行以插入所述接收的查询中的至少一个记录,其中,基于行标识对所述行进行分配;
判断待插入的所述记录是否超过所述分配的行;
如果超过,则回退所述插入;或者
在提交期间,将所述行标识以及所述接收的查询中的所述记录发送至至少一个第二主设备和第二复制站点上的第二数据库,以进行冲突检查。
6.一种多主复制系统,其特征在于,所述系统包括:
具有位于第二复制站点的第二数据库的至少一个第二主设备,用于:
从至少一个第一主设备接收行的至少一个行标识以及所述查询中的记录;
基于所述第二数据库中的至少一行接收的所述行标识,进行冲突检查,其中,
如果检测到所述冲突,则所述提交失败,并显示错误;或者
如果未检测到所述冲突,则所述记录将同时应用于驻留在所述第一主设备的第一数据库和所述第二数据库。
7.根据权利要求5或6所述的系统,其特征在于,在接收到所述行,以插入所述接收到的查询中的所述记录时,所述第一主设备和/或所述第二主设备用于:
将所述行标记为是脏的;
如果将所述行标记为是脏的,更新所述查询中接收的所述下一个记录。
8.根据权利要求7所述的系统,其特征在于,所述更新还包括:
基于所述行标识对所述行进行检测,以更新所述下一个记录;
检查是否将所述行标记为是脏的,其中,至少一个复制更新将所述行标记为是脏的,如果将所述行标记为是脏的,则下一个记录更新失败,或者,如果未将所述行标记为是脏的,则更新所述行中的所述下一个记录。
9.根据权利要求8所述的系统,其特征在于,一旦更新所述行中的所述下一个记录,则移动至少一个冲突消解,以进行提交。
10.一种多主复制方法,其特征在于,所述方法包括:
接收至少一个查询;
分配至少一行以插入所述接收的查询中的至少一个记录,其中,基于行标识对所述行进行分配;
判断待插入的所述记录是否超过所述分配的行;
如果超过,则回退所述插入;或者
将所述行标识以及所述接收的查询中的所述记录发送至至少一个设备,以进行冲突检查。
11.根据权利要求10所述的方法,其特征在于,所述方法为基于行(标识)的多主复制。
12.根据权利要求10所述的方法,其特征在于,在接收到所述行,以插入所述接收到的查询中的所述记录时,所述方法还包括:
将所述行标记为是脏的;
如果将所述行标记为是脏的,更新所述查询中接收的所述下一个记录。
13.根据权利要求12所述的方法,其特征在于,更新所述下一个记录还包括:
对所述行进行检测,以更新所述下一个记录;
检查是否将所述行标记为是脏的,其中,至少一个复制更新将所述行标记为是脏的,如果将所述行标记为是脏的,则下一个记录更新失败,或者,如果未将所述行标记为是脏的,则更新所述行中的所述下一个记录。
14.根据权利要求13所述的方法,其特征在于,一旦更新所述行中的所述下一个记录,则移动至少一个冲突消解,以进行提交。
15.根据权利要求10和14所述的方法,其特征在于,所述提交还包括:
将至少一个消息发送至所述其他设备,其中,所述消息包括至少一行(标识);
所述其他设备基于所述消息的所述行标识进行冲突检查,其中,所述消息与所述其他设备的至少一行(标识)进行通信,其中,
如果检测到所述冲突,则所述提交失败,并显示错误;或者
如果未检测到所述冲突,则提交所述记录。
16.一种设备,其特征在于,包括与存储器耦合且用于执行所述存储器中呈现的多个模块的处理器,其中,执行所述模块的所述处理器用于:
接收至少一个查询,以将至少一个记录插入数据库中;
为所述查询中接收的所述记录分配至少一个空写集;
针对所述接收的记录,确定冲突;
基于所述确定的冲突,回退或提交所述记录。
17.一种方法,其特征在于,包括:
接收至少一个查询,以将至少一个记录插入数据库中;
为所述查询中接收的所述记录分配至少一个空写集;
针对所述接收的记录,确定冲突;
基于所述确定的冲突,回退或提交所述记录。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ININ201641012171 | 2016-04-06 | ||
IN201641012171 | 2016-04-06 | ||
PCT/CN2016/106420 WO2017173828A1 (en) | 2016-04-06 | 2016-11-18 | System and method for multi-master synchronous replication optimization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108885622A true CN108885622A (zh) | 2018-11-23 |
Family
ID=60088268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680083963.XA Pending CN108885622A (zh) | 2016-04-06 | 2016-11-18 | 多主同步复制优化的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170308562A1 (zh) |
EP (1) | EP3248118A4 (zh) |
CN (1) | CN108885622A (zh) |
WO (1) | WO2017173828A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10970270B2 (en) | 2018-05-07 | 2021-04-06 | Microsoft Technology Licensing, Llc | Unified data organization for multi-model distributed databases |
CN110059135B (zh) * | 2019-04-12 | 2024-05-17 | 创新先进技术有限公司 | 一种数据同步方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182319A1 (en) * | 2002-03-25 | 2003-09-25 | Michael Morrison | Method and system for detecting conflicts in replicated data in a database network |
CN101080714A (zh) * | 2004-12-16 | 2007-11-28 | 甲骨文国际公司 | 用于由数据库服务器执行文件操作的基础结构 |
US20080098042A1 (en) * | 2006-01-19 | 2008-04-24 | Huawei Technologies Co., Ltd. | Method for data synchronization and apparatus thereof |
US20110173619A1 (en) * | 2005-10-11 | 2011-07-14 | Eric Ian Fish | Apparatus and method for optimized application of batched data to a database |
CN102236700A (zh) * | 2010-05-04 | 2011-11-09 | 微软公司 | 分布式文件系统复制环境中的乐观锁定 |
CN102708166A (zh) * | 2012-04-26 | 2012-10-03 | 北京星网锐捷网络技术有限公司 | 数据复制方法、数据恢复方法及装置 |
CN104598610A (zh) * | 2015-01-29 | 2015-05-06 | 无锡江南计算技术研究所 | 一种分步式数据库数据分发上传同步方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505228B1 (en) * | 1998-07-22 | 2003-01-07 | Cisco Technology, Inc. | Dynamic determination of execution sequence |
US8688634B2 (en) * | 2004-02-27 | 2014-04-01 | International Business Machines Corporation | Asynchronous peer-to-peer data replication |
US8250030B2 (en) * | 2005-09-21 | 2012-08-21 | Infoblox Inc. | Provisional authority in a distributed database |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
US9026493B1 (en) * | 2011-02-28 | 2015-05-05 | Google Inc. | Multi-master RDBMS improvements for distributed computing environment |
CN102193989B (zh) * | 2011-03-25 | 2015-07-08 | 北京世纪互联宽带数据中心有限公司 | 基于图形数据库的联机事务处理系统及数据插入方法 |
US9965359B2 (en) * | 2014-11-25 | 2018-05-08 | Sap Se | Log forwarding to avoid deadlocks during parallel log replay in asynchronous table replication |
-
2016
- 2016-11-18 EP EP16804983.1A patent/EP3248118A4/en active Pending
- 2016-11-18 CN CN201680083963.XA patent/CN108885622A/zh active Pending
- 2016-11-18 WO PCT/CN2016/106420 patent/WO2017173828A1/en active Application Filing
-
2017
- 2017-07-11 US US15/646,840 patent/US20170308562A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182319A1 (en) * | 2002-03-25 | 2003-09-25 | Michael Morrison | Method and system for detecting conflicts in replicated data in a database network |
CN101080714A (zh) * | 2004-12-16 | 2007-11-28 | 甲骨文国际公司 | 用于由数据库服务器执行文件操作的基础结构 |
US20110173619A1 (en) * | 2005-10-11 | 2011-07-14 | Eric Ian Fish | Apparatus and method for optimized application of batched data to a database |
US20080098042A1 (en) * | 2006-01-19 | 2008-04-24 | Huawei Technologies Co., Ltd. | Method for data synchronization and apparatus thereof |
CN102236700A (zh) * | 2010-05-04 | 2011-11-09 | 微软公司 | 分布式文件系统复制环境中的乐观锁定 |
CN102708166A (zh) * | 2012-04-26 | 2012-10-03 | 北京星网锐捷网络技术有限公司 | 数据复制方法、数据恢复方法及装置 |
CN104598610A (zh) * | 2015-01-29 | 2015-05-06 | 无锡江南计算技术研究所 | 一种分步式数据库数据分发上传同步方法 |
Non-Patent Citations (1)
Title |
---|
NEIL CONWAY等: "A Proposal for a Multi-Master Synchronous Replication System", 《HTTP://WWW.NEILCONWAY.ORG/DOCS/SLONY2_REPORT.PDF》 * |
Also Published As
Publication number | Publication date |
---|---|
US20170308562A1 (en) | 2017-10-26 |
EP3248118A4 (en) | 2018-03-28 |
EP3248118A1 (en) | 2017-11-29 |
WO2017173828A1 (en) | 2017-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437795B2 (en) | Upgrading systems with changing constraints | |
KR101099199B1 (ko) | 데이터베이스 복구 중의 스냅샷 질의를 위한 시스템 및 방법 | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
US8856068B2 (en) | Replicating modifications of a directory | |
US20090012932A1 (en) | Method and System For Data Storage And Management | |
EP1788493A1 (en) | Detecting changes in data | |
US8285677B2 (en) | Method and apparatus for propagating tables while preserving cyclic foreign key relationships | |
US20080215586A1 (en) | Simulating Multi-User Activity While Maintaining Original Linear Request Order for Asynchronous Transactional Events | |
EP2011045A1 (en) | Concurrency control within an enterprise resource planning system | |
WO2016118429A1 (en) | System for efficient processing of transaction requests related to an account in a database | |
CN107077491B (zh) | 联机模式和数据变换 | |
CN111258976A (zh) | 分布式锁实现方法、系统、设备及存储介质 | |
US20200151196A1 (en) | Monotonic transactions in a multi-master database with loosely coupled nodes | |
CN106164870A (zh) | 对分布式共享存储器应用的存储器损坏检测支持 | |
CN110402429B (zh) | 复制用于管理基于云的资源的存储表以抵挡存储账户中断 | |
US9998544B2 (en) | Synchronization testing of active clustered servers | |
JP6975153B2 (ja) | データ格納サービス処理方法及び装置 | |
CN109753244A (zh) | 一种Redis集群的应用方法 | |
WO2019162830A1 (en) | Chronologically ordered out-of-place update key-value storage system | |
CN108885622A (zh) | 多主同步复制优化的系统和方法 | |
US20210182162A1 (en) | System and method of cloning a multi-tiered application | |
Paris | Voting with bystanders | |
CN116821232A (zh) | 一种数据同步方法及相关装置 | |
US7487187B2 (en) | Method and apparatus for two stage transaction handling | |
CN113094367A (zh) | 数据处理方法、装置和服务器 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |