CN114328424A - 用于具有全局同步时间的多版本并发控制的高吞吐量算法 - Google Patents
用于具有全局同步时间的多版本并发控制的高吞吐量算法 Download PDFInfo
- Publication number
- CN114328424A CN114328424A CN202111304496.8A CN202111304496A CN114328424A CN 114328424 A CN114328424 A CN 114328424A CN 202111304496 A CN202111304496 A CN 202111304496A CN 114328424 A CN114328424 A CN 114328424A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- time
- client
- timestamp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- 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
-
- 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
-
- 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
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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
- G06F16/2329—Optimistic concurrency control using versioning
-
- 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/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
-
- 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/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- 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/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Other Liquid Machine Or Engine Such As Wave Power Use (AREA)
Abstract
本公开涉及用于具有全局同步时间的多版本并发控制的高吞吐量算法。在分布式系统中保留吞吐量,同时通过将提交等待时段推送到客户端提交路径和未来读取器来维护并发性。与服务器执行提交等待相反,服务器指派时间戳,其被用于确保因果关系被保留。当服务器执行将数据写入到分布式数据库的事务时,服务器获得用户级锁定,并且给事务指派等于当前时间加上与分布式系统中的时钟的不确定性的范围对应的间隔的时间戳。在指派时间戳之后,服务器释放用户级锁定。在执行写入数据的读取之前,任何客户端设备必须等待直到指派的时间戳已在过去为止。
Description
分案说明
本申请属于申请日为2017年9月26日的中国发明专利申请201710884380.3的分案申请。
技术领域
本申请涉及用于具有全局同步时间的多版本并发控制的高吞吐量算法。
背景技术
在数据库系统中,术语并发控制指代被用于确保即使在存在并发性的情况下数据库也一致地表现的算法。多版本并发控制算法存储给定数据片的多个版本(每次写入有一个版本)以便实现更大的并发性。提供绝对时间的全局概念的系统可以与分布式数据库中的多版本并发控制集成。结果的分布式数据库语义上等于单个机器数据库,因为可以跨整个数据库完成一致性读取。使用在数据库中的每个对象处读取与写入之间的局部同步连同提交等待来确保一致性读取,其中,写入需要及时延迟以确保适当的语义。该局部同步要求数据库内的昂贵的全局同步。
关于现有方案的问题在于,现有算法执行提交等待,同时将用户级锁定保持在服务器处。也就是说,在将对象写入在数据库中的同时,服务器执行提交等待,同时保持数据库用来保护对正写入的对象的访问权的锁定。这意味着对任何对象的写入的吞吐量限于至多(1/提交等待时间)。
发明内容
本公开的一个方面提供系统,该系统包括服务器,所述服务器适于与分布式计算环境中的其它服务器和客户端通信。所述服务器包括处理器,其中,所述处理器被配置成接收写入数据的请求,将数据写入到分布式计算环境中的存储器,并且在写入数据正被提交到存储器的同时,释放服务器上的锁定并且将提交等待时间强加(impose)在以下至少一项上:客户端库、其它服务器或客户端。所述提交等待时间是用于确保在事务(transaction)的时间戳之前客户端不能看到该事务的效果的机制。例如,客户端在看到该事务的效果之前等待一时间间隔(被称为提交等待时间)经过。在该方面中,各种客户端将得到对分布式计算环境的一致性读取并且能够相应地做出进一步的修改。
在其中提交等待被强加在客户端库和其它服务器二者上的示例中,在客户端库通知客户端中的一个写入数据被提交之前,提交等待由客户端库执行。当执行事务读取时,其它服务器执行提交等待。
在其中提交时间仅被强加在客户端上的其它示例中,处理器向客户端发送数据被写入的时间戳。该时间戳可能已被指派为写入数据的服务器处的本地时间,加上限制该系统中的所有时钟之间的差的时间量。该时间应该在未来,在已经提交的任何写入的时间之后。在将数据返回客户端之前,客户端中的任何一个客户端等待直到指派的时间戳已在过去为止。例如,当读取数据的客户端处的本地时钟反映比指派的时间戳更晚的当前时间时,指派的时间戳即已在过去。限制该系统中的所有时钟之间的差的时间量可以由服务器处的本地时钟维护为间隔ε。处理器还可以被配置成接收写入第二数据的第二请求,并且将数据写入到分布式计算环境中的存储器而不等待提交等待时间终止。
本公开的另一方面提供一种方法,该方法包括:在第一计算设备处从一个或多个客户端接收请求来将数据写入到分布式计算环境;在第一计算设备处获得写入锁定;通过第一计算设备将数据写入到分布式计算环境中的存储器;以及通过第一计算设备释放写入锁定而不等待提交等待时间终止,使得提交等待时间被强加在以下至少一项上:客户端库、其它服务器或客户端。
为了将提交等待移到客户端,处理器还被配置成将时间戳指派给写入数据,时间戳等于第一时间加上间隔,并且在指派时间戳之后,释放锁定。在读取数据之前,客户端中的任何一个客户端等待直到指派的时间戳已在过去为止。
附图说明
图1是图示根据本公开的各方面的示例系统的块图。
图2是图示根据本公开的各方面的数据库的分布的示意图。
图3是图示根据本公开的各方面的分布式数据库中的服务器当中的层次关系的块图。
图4是图示根据本公开的各方面的将提交等待时间移到系统中的其它设备的示例的块图。
图5是图示根据本公开的各方面的分布式数据库中的设备当中的事件的相对定时的示例的示图。
图6是图示根据本公开的各方面的将提交等待时间移到系统中的其它设备的另一示例的块图。
图7是图示根据本公开的各方面的分布式数据库中的设备当中的事件的相对定时的另一示例的示图。
图8是图示根据本公开的各方面的示例系统的另一块图。
图9是图示根据本公开的各方面的示例方法的流程图。
具体实施方式
概述
本公开涉及用于减少分布式系统中的设备必须等待写入事务被提交的时间段同时贯穿分布式系统仍然保留一致性的方法。该时间段(被称为提交等待时间)被移到保持用户级锁定的第二时间段之外。服务器端代码被解除提交等待时间的等待时段,并且相反,提交等待时间被强加在客户端库上。例如,记下与写入事务相关联的时间戳,并且释放用户级锁定,并且想要读取提交的写入事务的分布式数据库中的任何设备必须等待直到该时间戳被保证已在过去为止。
在第一示例中,提交等待不在执行写入事务的设备处发生,而是相反,提交等待在两个地点发生。在客户端库通知客户端其已提交写入之前,提交等待在客户端库中发生。提交等待还在服务器处发生,因为尝试读取写入数据的任何设备发现其在服务器处必须提交等待的时间。因此,提交等待从“写入方(writer)”被移到“读取方(reader)”。这不改变事务的可观察的提交次序。而且,它不改变数据相关事务的提交次序。
在第二示例中,提交等待被推送到客户端提交路径和未来读取方。例如,与服务器执行提交等待相反,服务器指派时间戳,其被用于确保因果关系被保留。例如,当服务器执行将数据写入到分布式数据库的事务时,服务器可以获得用户级锁定,并且给事务指派等于(当前时间+ε)的时间戳,其中,ε将是分布式系统中的时钟的不确定性的量度。例如,ε可以表示由系统中的所有时钟所报告的最晚时间与由系统中的所有时钟所报告的最早时间之间的差。在全局时钟的一些实施方式中,ε可以典型地例如小于3ms。在指派时间戳之后,服务器释放用户级锁定。所述数据库必须保证在指派的时间戳的时间之前,没有客户端设备读取该数据。例如,客户端库代码将强制执行该不变量。换句话说,在执行由服务器写入的数据的读取之前,客户端必须等待依赖于ε的时间段。
在以上第二示例中,提交等待跨所有客户端并行完成。因为服务器必须与客户端通信,所以使提交等待时间与服务器与客户端之间的通信的时间交叠减少总体等待时间。如果对于来自服务器的消息而言到达客户端花费很长时间,则客户端将必须提交等待更少的时间段。每个客户端可以具有不同的本地时间。因此,具有更晚的本地时间的客户端可能经历短提交等待时间,因为指派的时间戳将被更迅速地到达。相反地,具有更早的本地时间的客户端可能经历更长的提交等待时间。通过在提交等待时间期间释放用户级锁定的服务器,服务器处的吞吐量被增加。同时,分布式数据库中所维护的并发性和读取将跨所有客户端是准确并且一致的,从而与本地时钟时间中的差异无关地反映提交的数据。
示例系统
图1图示了包括分布式数据库的示例系统。多个服务器160、170、180可以例如通过网络150彼此通信。服务器160、170、180还可以与多个客户端设备(诸如客户端110、120)通信。服务器160-180可以控制一个或多个数据库中的数据的存储。例如,如所示,每个服务器160-180与数据中心162、172、182相关联。每个数据中心162、172、182可以包括用于存储数据的多个计算设备。虽然一些设备可以是其它设备的副本,但是一些设备可以因果地依赖于其它设备。例如,数据中心162中写入的数据位可以影响存储在数据中心172中的数据。分布式数据库可以实现诸如Paxos的协议来提供跨系统的一致。在一些当前系统中,跨数据中心162、172、182的一致性由服务器160、170、180维护,其在发布写入事务之前等待一段时间(例如,提交等待)经过。然而,在写入期间由服务器作出的该等待时段会减少吞吐量。因此,该等待时段可以替代地被强加在一个或多个其它设备上,或者在时间上被移至服务器的不同的动作。例如,等待时段可以被移到将数据写入到服务器的客户端的客户端库,并且其它服务器可能需要在执行读取事务之前在该服务器处执行提交等待。在其它示例中,提交等待被移到在寻求读取写入数据的客户端设备上运行的客户端库。
虽然仅示出几个服务器,但是应该理解的是,任何数目的服务器可以被包括在分布式数据库中。类似地,虽然每个服务器160、170、180被示出为与其自己的数据中心相关联,但是应该理解的是,在其它示例中,服务器可以与一个或多个更小的数据库相关联。例如,一个数据库可以包括多个服务器。在美国专利申请No.13/905,637中还描述了分布式系统的示例,其以整体内容通过引用并入本文。
客户端110、120中的每一个被示出为具有应用程序112、122和客户端库114、124,但是应该理解的是,还可以存在客户端设备的附加特征。客户端110、120中的任何一个可以通过经由网络150将数据发送到服务器160、170、180中的一个来将数据写入到分布式数据库。虽然仅示出几个客户端,但是应该理解的是,大量的客户端设备可以通过网络150与分布式数据库通信。
数据中心162、172、182可以被定位在距彼此相当大的距离处。例如,如结合图2进一步描述的,数据中心可以被定位在全世界各个国家内。每个数据中心162、172、182可以包括许多存储设备,诸如硬盘驱动器、随机存取存储器、磁盘、磁盘阵列、磁带驱动器或任何其它类型的存储设备。数据中心162、172、182可以实现许多架构和技术中的任何一个,包括但不限于直接附加存储(DAS)、网络附加存储(NAS)、存储区域网络(SAN)、光纤通道(FC)、以太网光纤通道(FCoE)、混合架构网络等。除存储设备之外,数据中心可以包括许多其它设备,诸如线缆、路由器等。进一步地,在一些示例中,数据中心162、172、182可以是虚拟化环境。
每个服务器具有本地时钟164、174、184。每个本地时钟164、174、184可以从原子时间主控器190导出其时间。原子时间主控器190可以是例如与分布式数据库中的一个或多个服务器通信的参考时钟。如结合图3在下面进一步描述的,原子时间主控器190可以从另一源(诸如GPS)导出其时间。
图2是被定位在地球上各个位置处的数据中心210、220、230、240、250、260和270的地理图示。根据一些示例,每个数据中心可以包括原子时间主控器。每个原子时间主控器可以被连接到接收器(诸如GPS接收器)用于接收时间信号。GPS接收器可以包括例如屋顶安装天线215、225、235、245、255、265和275,其可以被定位在数据中心210、220、230、240、250、260和270上面的屋顶上。主机服务器可以被容纳在定位在数据中心210、220、230、240、250、260和270中的服务器机架中。如此,导管可以被安装以将天线线缆从主机服务器路由到屋顶天线。跨数个接收器共享一个天线可以是可能的。这可以例如利用天线分离器实现。
图3图示了提供跨数据中心紧密同步全局时钟的时间平台300的示例。在该示例中,平台300被结构化为服务器的三级层次结构,每个服务器包括其自己的时钟,其中,子服务器基于其父的时钟对其时钟进行校准。应用程序在主机360、370、380上运行。
箭头从校准其时钟的服务器指向具有更好的时钟的众所周知的服务器,它们从该更好的时钟校准。例如,如所示,主机360基于原子主控器392对其时钟进行校准。原子主控器392基于GPS时间主控器302、304对其时钟进行校准。主机370基于原子主控器394和396对其时钟进行校准。原子主控器394基于GPS主控器304对其时钟进行校准。主机380基于原子主控器396对其时钟进行校准,所述原子主控器396基于GPS主控器306对其时钟进行校准。在一些示例中,子服务器可以基于例如地理位置、信号强度或任何其它标记确定哪些父服务器用于进行校准。在其它示例中,可以预定子/父配对。虽然图3示出了对原子主控器392、394、396校准的主机360、370、380,但是应该理解的是,在其它示例中,主机360、370、380可以附加地或替选地直接地对GPS时间主控器302、304、306校准。
在层次结构中的每级处,校准包括轮询服务器的父,并且和从该父接收到的一个或多个时间间隔相交,其中该一个或多个时间间隔被来自所涉及的主机的校准的网络延时所扩展。每个服务器可以具有相关联的值(ε),其表示在服务器的本地时钟上反映的时间与由数据库中的其它服务器的时钟反映的时间之间的最大时间差。每个服务器的ε值从其父的ε以及服务器到父网络往返时间(RTT)导出,其中对其父的ε有针对来自振荡器频率不确定性和有效校准间隔的积的不确定性的调节。因此,在一些示例中,每个服务器处的本地时钟可以维护不同的ε值。在其它示例中,ε可以是跨系统中的设备全局一致的。进一步地,在一些示例中,ε可以随时间变化,因为参数(诸如振荡器频率不确定性、有效校准间隔和RTT)随时间改变。
振荡器频率不确定性可以被建模为包括频率不稳定性(诸如振荡器在短时间标度期间漂移多少),以及振荡器老化(诸如振荡器的漂移在长时间标度期间改变多少)。有效校准间隔可以由两个值中的较大值确定:校准间隔(诸如服务器的校准之间的时间段),以及服务器可能必须与父断开多久。
关于服务器到父网络RTT,主机距其父越远,则带来更多的相位不确定性。该不确定性还可以被建模为两个分量:校准相位不确定性和校准频率不确定性。校准相位不确定性可以对应于振荡器的计算相位对齐中的不确定性的水平。校准频率不确定性可以对应于归因于校准时段的持续时间中的不确定性的频率不确定性的水平。
图4图示了其中提交等待时间被推送到客户端库和寻求读取写入数据的任何服务器的示例。在该示例中,客户端110执行事务(诸如将数据写入到分布式数据库)。特别地,客户端110写入对象O。写入请求从客户端110通过网络150被发送到服务器160,其将对象O提交给数据库。然而,服务器160、170、180中的每一个可以具有当前时间的不同表示。例如,时钟164可以与时钟174不同,时钟174可以与时钟184不同。如上文所讨论的,这些差可以基于例如父服务器和诸如漂移、振荡器频率不确定性、校准间隔等的因子。分布式数据库中的各设备当中的该不确定性范围由值ε表示。数据库中的每个时钟可以维护时间间隔ε,这表示不确定性范围。基于振荡器频率不确定性、校准相位不确定性等,时间间隔ε例如在结合图3如上文所描述的校准期间被确定。因此,为了维护各设备之间的一致性,发送写入请求的客户端110的客户端库114可以在访问写入对象O之前基于ε强制执行等待时间。而且,尝试读取对象O的任何服务器也等待。例如,如果服务器170已请求读取包括对象O的数据,则服务器170将需要执行提交等待,并且等待一时间段经过。该时间段对应于本地时钟的不确定性范围。
图5图示了通过将提交等待时间移到客户端库和想要读取更新的数据的服务器,动作如何并且何时由分布式数据库中的特定设备执行以维护数据库状态的一致性的示例。在该示例中,远程单个地点读改写(RMW)事务使计数器x递增。
如所示,客户端1发起事务,并且服务器获得读取锁定。在事务用于使计数器x递增并且已刚开始时,服务器读取x=0。服务器读取数据x在时间3312处被写入。可以使用各种单位(诸如一天的秒、毫秒等)中的任何一个表示读取时间和任何其它时间。服务器提交等待直到由其本地时钟反映的时间(“现在”)减去ε大于或等于3312。客户端1使计数器x递增并且请求x=1被写入到数据库。服务器升级到针对事务的写入锁定。在其它示例中,不是首先获得读取锁定并且升级到写入锁定,服务器可以通过获得写入锁定开始。服务器指派由其本地时钟反映的当前时间(“现在”)加上ε(时钟不确定性)的时间戳。在该示例中,结果的时间戳是4225。服务器提出数据x=1的提交,应用x=1,并且释放锁定。进而,客户端1的客户端库强制执行提交等待时间。客户端1将被通知当由客户端1的本地时钟反映的当前时间(“现在”)减去不确定性(ε)大于或等于由服务器指派的时间戳(4225)时,数据x=1被提交。
客户端2发起后续事务(事务2)以使计数器递增到x=2。服务器再次获得读取锁定,读取在时间4225处x=1,并且提交等待至少对应于ε的时间,例如,直到由服务器的本地时钟反映的时间(“现在”)减去ε大于或等于读取时间(4225)。客户端2然后使计数器递增到x=2。服务器升级到写入锁定,并且向事务2指派等于本地时钟的当前时间加上ε的时间戳,其此处总计5132。服务器提出事务2的提交,将x=2应用到数据库,并且释放写入锁定。客户端2通过其客户端库执行提交等待直到其本地时钟反映大于或等于5132的指派时间戳的时间为止,并且此后客户端2被通知事务2已提交。
以上示例中的每个事务1和事务2的延时是2RTT+max(2ε,RTT)。在高竞争下执行事务的吞吐量将由写入锁定保持时间限制,其是记录事务的时间加上提交等待=RTT+max(2ε,RTT)。结果的吞吐量限制将是1/(RTT+max(2ε,RTT))。已知在高竞争下运行的RMW事务可以获得针对适当的读取操作的写入模式锁定以便避免中止,因为尝试升级其锁定的多个读取方死锁。结果的吞吐量将然后是约1/(2RTT+max(2ε,RTT))。
在图5的示例中,提交等待在两个地点发生:在其通知客户端其已提交写入之前在客户端库中,并且当其正执行事务读取时在服务器处。取代使写入方(服务器)执行提交等待循环(其将逻辑地等于执行以下代码段while(now()+ε<=T){},其中,T是事务上的提交时间),该循环相反在两种地点执行:在向客户端指示事务已提交的客户端库中的任何点之前,在客户端库中通过写入方执行;并且在其已获得正读取的资料上的锁定之后,通过服务器处的任何读取执行。在该方面中,提交等待从写入方被移到因果相关的读取方。在其它示例中,通过具有提交等待的先前的每个读取产生类似结果。
将提交等待移至客户端处的离开路径导致事务的可观察的提交次序,该次序与设若该提交等待在服务器处被执行时是同样的。而且,将提交等待从写入方移到读取方不改变数据相关事务的提交次序。跨服务器移动提交等待也是可行的。提交等待确保指派给事务的时间戳T在其中所有锁定被释放的事件E_release之前。因此,指派的时间戳T在当锁定被获得时与当锁定被释放时之间的间隔内发生。无论提交等待被移到客户端处的离开路径还是被跨服务器移动,ε可以现在从不同的振荡器导出的事实是不相关的,因为在提交等待已被执行之后,时间戳T将已经过。将提交等待移到针对读取方的客户端库确保读取方仅在其时间戳已在过去之后才看到任何事务的效果。
图6图示了其中提交等待被移到客户端提交路径和未来读取方的示例。在该示例中,当客户端110将对象O写入到分布式数据库时,接收写入请求的服务器160将时间戳指派给写入事务。指派的时间戳等于由服务器的本地时钟164反映的当前时间加上ε。在指派时间戳之后,服务器160释放事务上的写入锁定。然而,尝试执行数据库的读取事务的任何客户端设备必须等待指派的时间戳经过。例如,如果客户端120想要执行读取事务,则客户端120将执行提交等待。一旦客户端120处的本地时钟反映大于或等于指派的时间戳的时间,客户端就将被通知成功的提交。
图7图示了当提交等待时间被移到客户端时动作如何并且何时由特定设备执行的示例。与图5的示例相比较,服务器不执行针对事务的读取的任何提交等待。相反,所有提交等待在客户端处发生。例如,与图5的示例相比较,图7的示例通过事务管线推送提交等待至更远。被推送到图5中的事务的读取的任何写入方的提交等待通过服务器处的读取被推送至更远,并且然后再次通过图7中的到客户端提交路径和到未来读取方的写入。从写入方被推送到图5的示例中的读取方的提交等待由客户端处的事务的自己的写入的提交等待包含在图7中,其必须在比读取的那些时间戳更晚的时间戳处。
如在图7中所示,客户端1发起事务,其可以再次使变量x递增,并且服务器获得针对事务的读取锁定并且读取数据。在事务用于使计数器x递增并且已刚开始时,服务器读取x=0。在该示例中,服务器读取在时间3312处x被写入。客户端1使计数器x递增并且请求x=1被写入到数据库。服务器升级到针对事务的写入锁定,并且指派由其本地时钟反映的当前时间(“now”)加上ε(提交等待时间)的时间戳。例如,时间戳可以等于max(now+ε,previous_timestamp++)。在该示例中,结果的时间戳是4225。服务器提出数据x=1的提交,应用x=1,并且释放锁定。进而,客户端1的客户端库强制执行提交等待时间。客户端1将被通知当由客户端1的本地时钟反映的当前时间(“现在”)减去不确定性时间间隔(ε)大于或等于由服务器(4225)指派的时间戳时,数据x=1被提交。
客户端2发起后续事务(事务2)以使计数器递增到x=2。服务器再次获得读取锁定,并且读取在时间4225处x=1。客户端2然后使计数器递增到x=2。服务器升级到写入锁定,并且向事务2指派等于本地时钟的当前时间加上ε的时间戳,其此处总计5132。服务器提出事务2的提交,将x=2应用到数据库,并且释放写入锁定。客户端2通过其客户端库执行提交等待直到其本地时钟反映大于或等于5132的指派的时间戳的时间为止,并且此后客户端2被通知事务2。
在一些示例中,服务器可以在客户端1被通知事务1已提交之前接收事务2。服务器可以对事务2起作用而不考虑客户端1的提交等待的执行。
取代执行提交等待,服务器指派时间戳并且确保数据依存性被适当地序列化。因为服务器不进行提交等待,所以服务器处的吞吐量不受ε影响。客户端进行提交等待,并且因此确保因果关系被保留。而且,因为提交等待跨所有客户端并行完成,所以每个客户端的吞吐量仅由ε的改变而非由ε的值影响。
虽然关于仅几个客户端和一个服务器描述了图7的示例,但是应该理解的是,所描述的特征可以被应用到多位点事务。例如,被定位在不同的地理区域处并且服务附加客户端的附加服务器可以类似地指派时间戳,并且将提交等待移到客户端。在这样的示例中,不应该存在提交等待,同时保持用户级锁定。
在一些示例中,时间戳的指派还可以被推送到客户端。这将导致RTT+max(2ε,2RTT)的延时。如果客户端获得写入锁定而不是读取锁定,诸如以避免高竞争下的中止,则吞吐量变为大约1/(3RTT),其是在没有提交等待的情况下小区的理论最大吞吐量。
图3是用于维护分布式数据库中的一致性同时维护高吞吐量的系统800的示图。如所示,系统800的示例可以包括耦合到网络850的许多服务器810和870。系统还可以包括能够通过网络850与服务器810和870通信的客户端860。
服务器810可以包含处理器820、存储器830和典型地存在于通用计算机中的其它部件。存储器830能够存储由处理器820可访问的信息,包括能够由处理器820执行的指令832。存储器还能够包括能够由处理器820检索、操纵或存储的数据834。存储器830可以是能够存储由处理器820可访问的信息的一种类型的非暂态计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光学存储装置、存储器卡、ROM、RAM、DVD、CD ROM、能写入存储器和只读存储器。处理器820能够是众所周知的处理器或其它不太知名的类型的处理器。替选地,处理器820能够是专用控制器(诸如ASIC)。
指令832可以是由处理器820直接地执行的指令集(诸如机器代码)或间接地执行的指令集(诸如脚本)。在该方面中,术语“指令”、“步骤”和“程序”能够在本文中可交换地使用。指令832能够以用于由处理器820直接处理的目标代码格式或者包括按需解译或者提前编译的独立源代码模块的脚本或集合的其它类型的计算机语言存储。在前述示例和在下面示例方法中更详细地解释指令的功能、方法和例程。
数据834能够根据指令832由处理器820检索、存储或修改。例如,虽然系统和方法不被特定数据结构限制,但是数据834能够被存储在计算机寄存器中、关系数据库中作为具有多个不同的字段和记录或XML文档的表。数据834还能够以计算机可读格式被格式化,诸如但不限于二进制值、ASCII或Unicode。而且,数据库834能够包括足以标识相关信息的信息,诸如数字、描述文本、专有代码、指针、对被存储在其它存储器中的数据的引用(包括其它网络位置)或通过函数被用于计算相关数据的信息。例如,数据834能够包括可以基于指令832以被用于描述时刻的时间格式(诸如协调世界时间(Coordinated Universal Time)、Unix纪元和不含糊的国际原子时间(International Atomic Time)纪元)编码的时间数据。
虽然图8功能上将处理器820和存储器830图示为在相同块内,但是处理器820和存储器830可以实际上包括可以或可以不存储在相同物理外壳内的多个处理器和存储器。例如,指令832和数据834中的一些能够被存储在可移除的CD ROM上并且其它能够被存储在只读计算机芯片内。指令和数据中的一些或全部能够被存储在物理上远离但是仍然由处理器820可访问的位置中。类似地,处理器820可以实际上包括处理器集合,其可以或可以不并行操作。
服务器810和870可以在网络850的一个节点处并且能够与网络850的其它节点直接地并且间接地通信。例如,服务器810和870能够包括网络服务器,其可能能够经由网络850与客户端设备860通信,使得其使用网络850来将信息传输给客户端应用。服务器810和870还可以包括许多计算机,例如,负载平衡服务器群,其出于接收、处理和传输数据到客户端设备的目的与网络850的不同的节点交换信息。在该实例中,客户端计算机将典型地仍然在与组成服务器810和870的计算机的网络850的不同的节点处。虽然在图8中仅描述几个服务器810、870,但是应该理解的是,典型系统能够包括各自在网络850的不同的节点处的大量的连接的服务器。
每个客户端860可以与服务器810和870类似地配置有处理器862、存储器863、指令864和数据867。每个客户端860可以是旨在由人使用的个人计算机,其具有通常在个人计算机中找到的所有内部部件,诸如中央处理单元(CPU)、CD ROM、硬盘驱动器和显示设备865(例如,具有屏幕的监视器、投影仪、触摸屏、小LCD屏幕、电视或另一设备(诸如能够可操作以显示由处理器862处理的信息的电气设备))、扬声器、调制解调器和/或网络接口设备、用户输入866(诸如鼠标、键盘、触摸屏或麦克风)和被用于将这些元件彼此连接的所有部件。而且,根据本文所描述的系统和方法的计算机可以包括能够处理指令并且将数据传输到人和其它计算机并从人和其它计算机传输数据的设备,包括通用计算机、PDA、平板电脑、移动电话、智能手表、缺少本地存储能力的网络计算机、电视的机顶盒和其它联网设备。
客户端860可以包括应用接口模块868。应用接口模块可以被用于访问由服务器(诸如服务器810和870)可用的服务。例如,应用接口模块可以包括子例程、数据结构、对象类和被用于允许服务器和客户端彼此通信的其它类型的软件组件。在一个方面中,应用接口模块868可以是结合本领域中已知的若干类型的操作系统可操作的软件模块。例如,客户端860可以被连接到结构化查询语言(SQL)数据库服务器,其可以结合用于保存并且检索信息数据的应用接口模块868操作。耦合到客户端860的存储器863可以存储由应用模块868访问的数据867。数据867还能够被存储在可移除的介质(诸如磁盘、磁带、SD卡或CD ROM)上,其能够被连接到客户端860。
服务器810和870以及客户端860可以能够直接和间接通信(诸如通过网络850)。例如,使用因特网插口,客户端860能够通过因特网协议组连接到在远程服务器810和870上操作的服务。服务器810和870可以建立监听套接字,其可以接受用于发送和接收信息的发起连接。网络850和中间节点可以包括各种配置和协议,包括因特网、万维网、内部网、虚拟专用网络、广域网、本地网络、使用专用于一个或多个公司的通信协议的私有网络、以太网、WiFi(例如,802.81、802.81b、g、n或其它这样的标准)和HTTP以及前述内容的各种组合。可以由能够将数据传输到其它计算机并从其它计算机传输数据的设备(诸如调制解调器(例如,拨号、线缆或光纤)和无线接口)促进这样的通信。
虽然图8将计算设备810和860示出为单独的块,其中的每一个包含其自己的处理器和存储器,但是本文所描述的操作可以包含单个计算设备或许多计算设备(例如,在“云”中)。例如,在本文中被描述为包含单个计算设备(例如,单个服务器中的单个中央处理单元(CPU))的各种操作可以包含多个计算设备(例如,负载平衡服务器群中的多个处理器)。类似地,不同的位置处的存储器部件可以存储指令832的不同部分并且共同地形成用于存储指令的介质。在一些示例中,设备860可以用作瘦客户端,其中,设备810执行不直接地涉及经由用户输入部件866和显示器865对用户接收并且提供信息的所有或几乎所有操作。可以由虚拟机执行如由计算设备执行的本文所描述的各种操作。通过示例,指令832可以特定于第一类型的服务器,但是可以由运行模拟第一类型的服务器的管理程序的第二类型的服务器执行相关操作。还可以由容器(例如,不依赖于绑定到特定类型的硬件的操作系统的计算环境)执行操作。
示例方法
图9图示了用于将提交等待从服务器移到其它设备以便不保持由服务器进一步处理的示例方法。应该理解的是,以下操作不必以在下面所描述的精确次序执行。相反,可以以不同的次序或同时地处理各个步骤。除非另外说明,否则步骤也可以被添加或者省略。
在块910中,服务器从客户端接收第一事务。第一事务包括将数据写入到分布式数据库的请求。例如,第一事务可以是RMW命令,或者任何其它类型的命令。
在块920中,服务器获得针对第一事务的锁定。锁定可以是写入锁定。然而,在其它示例中,诸如其中第一事务是RMW命令,服务器可以首先获得读取锁定并且然后升级到写入锁定。
在块930中,服务器将时间戳T指派给第一事务。时间戳T对应于当前时间(诸如当时间戳被指派时在服务器的本地时钟上反映的时间)加上ε。ε对应于数据库中的时间的不确定性的范围。例如,ε可以被计算为由数据库中的时钟反映的最晚时间与由数据库中的时钟反映的最早时间之间的差的一半。由于基于父服务器、针对每个设备的振荡器频率不确定性和/或其它因素对服务器的校准,每个设备可以具有其自己的ε值。例如,数据库中的第一服务器处的ε值可以与数据库中的第二服务器处的ε值不同。在一些示例中,每个设备可以存储使得设备能够迅速地计算其自己的ε值的信息。
在块940中,服务器提出待写入的数据的提交。例如,服务器将数据写入到分布式数据库。
在块950中,服务器释放针对第一事务的锁定。服务器未执行提交等待。相反,在块960中,提交等待被推送到读取方或客户端。
前述示例方法和系统是有利的,因为其提供服务器的增加的吞吐量,同时维护分布式数据库中的一致性。而且,在不要求更换现有系统中的所有硬件的情况下,可以以成本效益的方式实现这样的方法和系统。
除非另外说明,否则前述备选示例不是相互排斥的,而是可以以各种组合实现来实现独有优点。在能够利用上文所讨论的特征的这些和其它变型和组合而不脱离由权利要求定义的主题时,实施例的前述描述应该通过图示而不是通过由权利要求定义的主题的限制来理解。另外,在本文中所描述的示例的提供以及表述为“诸如”、“包括”等的分句不应该被解译为将权利要求的主题限于特定示例;相反,示例旨在图示许多可能的实施例中的仅一个。进一步地,不同的附图中的相同的附图标记能够标识相同或类似的元件。
Claims (18)
1.一种系统,包括:
服务器设备,所述服务器设备包括至少一个输入/输出以与分布式计算环境中的其它服务器和客户端通信,所述服务器设备包括:
一个或多个处理器,所述一个或多个处理器被配置成:
接收写入第一数据的请求;
将所述第一数据写入到所述分布式计算环境中的存储器;
在所述第一数据正被提交到所述存储器的同时,所述第一数据的效果在一时间间隔内对于客户端库、所述其他服务器或所述客户端中的至少一个是不可见的,而不阻止在所述时间间隔期间将第二数据写入所述存储器。
2.根据权利要求1所述的系统,其中,所述第一数据的所述效果在所述时间间隔期间对所述客户端库和所述其他服务器两者是不可见的。
3.根据权利要求2所述的系统,其中,所述客户端库在所述时间间隔之后通知所述客户端中的一个所述第一数据被提交。
4.根据权利要求2所述的系统,其中,所述其他服务器在所述时间间隔期间执行事务读取。
5.根据权利要求1所述的系统,其中,所述时间间隔被强加在所述客户端上,并且其中,所述一个或多个处理器还被配置为:
向所述第一数据指派时间戳,所述时间戳等于第一时间加上所述间隔;和
在指派所述时间戳之后,释放锁定。
6.根据权利要求5所述的系统,其中,在读取所述第一数据之前,所述客户端中的任何一个客户端必须等待直到所指派的所述时间戳已在过去为止。
7.根据权利要求6所述的系统,其中,当读取所述第一数据的所述客户端处的本地时钟反映比所指派的所述时间戳更晚的当前时间时,所指派的所述时间戳已在过去。
8.根据权利要求5所述的系统,其中,当所述服务器将所述时间戳指派给所述第一数据时,所述第一时间是由所述服务器处的本地时钟反映的当前时间。
9.根据权利要求8所述的系统,其中,所述间隔对应于由所述分布式系统中的所有时钟所报告的最晚时间与由所述分布式系统中的所有时钟所报告的最早时间之间的时间差。
10.根据权利要求9所述的系统,其中,所述间隔由所述服务器处的所述本地时钟维护。
11.一种方法,包括:
在第一计算设备处从一个或多个客户端接收将第一数据写入分布式计算环境的请求;
在所述第一计算设备处获得写入锁定;以及
由所述第一计算设备将所述第一数据写入到所述分布式计算环境中的存储器;
其中,在所述第一数据正被提交到所述存储器的同时,所述第一数据的效果在一时间间隔内对于客户端库、其他服务器或客户端中的至少一个是不可见的,而不阻止在所述时间间隔期间将第二数据写入所述存储器。
12.根据权利要求11所述的方法,其中,所述第一数据的所述效果在所述时间间隔期间对所述客户端库和所述其他服务器两者是不可见的。
13.根据权利要求12所述的方法,其中,所述客户端库在所述时间间隔之后通知所述客户端中的一个所述第一数据被提交。
14.根据权利要求12所述的方法,其中,所述其他服务器在所述时间间隔期间执行事务读取。
15.根据权利要求11所述的方法,其中,所述时间间隔被强加在所述客户端上,并且还包括:
向所述第一数据指派时间戳,所述时间戳等于第一时间加上所述间隔;
在指派所述时间戳之后,释放锁定。
16.根据权利要求15所述的方法,其中,在读取所述数据之前,所述客户端中的任何一个客户端必须等待直到所指派的所述时间戳已在过去为止。
17.根据权利要求16所述的方法,其中,当读取所述数据的所述客户端处的本地时钟反映比所指派的所述时间戳更晚的当前时间时,所指派的所述时间戳已在过去。
18.根据权利要求15所述的方法,其中,当所述服务器将所述时间戳指派给所述第一数据时,所述第一时间是由所述服务器处的本地时钟反映的当前时间,并且其中,所述间隔对应于由所述分布式系统中的所有时钟所报告的最晚时间与由所述分布式系统中的所有时钟所报告的最早时间之间的时间差。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/374,722 US10951706B2 (en) | 2016-12-09 | 2016-12-09 | High-throughput algorithm for multiversion concurrency control with globally synchronized time |
US15/374,722 | 2016-12-09 | ||
CN201710884380.3A CN108228698B (zh) | 2016-12-09 | 2017-09-26 | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710884380.3A Division CN108228698B (zh) | 2016-12-09 | 2017-09-26 | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328424A true CN114328424A (zh) | 2022-04-12 |
Family
ID=60083458
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710884380.3A Active CN108228698B (zh) | 2016-12-09 | 2017-09-26 | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 |
CN202111304496.8A Pending CN114328424A (zh) | 2016-12-09 | 2017-09-26 | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710884380.3A Active CN108228698B (zh) | 2016-12-09 | 2017-09-26 | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 |
Country Status (8)
Country | Link |
---|---|
US (3) | US10951706B2 (zh) |
EP (1) | EP3552116B1 (zh) |
CN (2) | CN108228698B (zh) |
DE (1) | DE102017121358A1 (zh) |
GB (2) | GB2594808B (zh) |
IE (2) | IE20230257A2 (zh) |
SG (1) | SG10201707669XA (zh) |
WO (1) | WO2018106316A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691484B2 (en) | 2017-05-15 | 2020-06-23 | Google Llc | Reducing commit wait in a distributed multiversion database by reading the clock earlier |
US10757181B1 (en) * | 2018-03-14 | 2020-08-25 | Palantir Technologies Inc. | Dynamic balancing of operations by selecting subsets of nodes |
US11061871B2 (en) * | 2019-03-15 | 2021-07-13 | Google Llc | Data placement for a distributed database |
CN109933632B (zh) * | 2019-04-04 | 2021-04-27 | 杭州数梦工场科技有限公司 | 一种数据库的数据迁移方法、装置及设备 |
CN110597838A (zh) * | 2019-09-20 | 2019-12-20 | 中国银行股份有限公司 | 一种基于时间的信息系统并发控制方法、设备以及系统 |
CN111459920B (zh) * | 2020-05-15 | 2021-01-15 | 北京谷数科技股份有限公司 | 基于虚拟全局时钟同步的多版本并发控制方法及系统 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63204437A (ja) | 1987-02-13 | 1988-08-24 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | ロック・システム |
US5212788A (en) | 1990-05-22 | 1993-05-18 | Digital Equipment Corporation | System and method for consistent timestamping in distributed computer databases |
US5715447A (en) | 1991-08-06 | 1998-02-03 | Fujitsu Limited | Method of and an apparatus for shortening a lock period of a shared buffer |
JP2000010810A (ja) | 1998-06-22 | 2000-01-14 | Toshiba Corp | トランザクション処理のコミット制御方法および同方法が適用される計算機システム |
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US6341285B1 (en) | 1999-06-28 | 2002-01-22 | Lucent Technologies Inc. | Serial protocol for transaction execution in main-memory database systems |
US7089244B2 (en) | 2000-11-15 | 2006-08-08 | North Dakota State University | Multiversion read-commit order concurrency control |
US6925515B2 (en) | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
US6721765B2 (en) | 2002-07-02 | 2004-04-13 | Sybase, Inc. | Database system with improved methods for asynchronous logging of transactions |
US7315926B2 (en) * | 2004-09-21 | 2008-01-01 | Emc Corporation | Lock management for concurrent access to a single file from multiple data mover computers |
CN101098514B (zh) * | 2006-06-27 | 2011-11-09 | 华为技术有限公司 | 一种集群客户端用户状态迁移方法及一种集群客户端 |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
CN101706802B (zh) * | 2009-11-24 | 2013-06-05 | 成都市华为赛门铁克科技有限公司 | 一种数据写入、修改及恢复的方法、装置及服务器 |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
US9420955B2 (en) | 2011-10-11 | 2016-08-23 | Boston Scientific Scimed, Inc. | Intravascular temperature monitoring system and method |
WO2013072451A2 (en) * | 2011-11-18 | 2013-05-23 | Universidad Politécnica de Madrid | System and method for highly scalable decentralized and low contention transactional processing x |
US9230000B1 (en) | 2012-06-04 | 2016-01-05 | Google Inc. | Pipelining Paxos state machines |
WO2013184712A2 (en) * | 2012-06-04 | 2013-12-12 | Google Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
US20140040208A1 (en) | 2012-07-31 | 2014-02-06 | Goetz Graefe | Early release of transaction locks based on tags |
US9632828B1 (en) * | 2012-09-24 | 2017-04-25 | Amazon Technologies, Inc. | Computing and tracking client staleness using transaction responses |
GB2507484A (en) * | 2012-10-30 | 2014-05-07 | Ibm | Limiting the number of concurrent requests in a database system |
CN103294548B (zh) * | 2013-05-13 | 2016-04-13 | 华中科技大学 | 一种基于分布式文件系统的io请求调度方法和系统 |
US9613122B2 (en) * | 2014-05-02 | 2017-04-04 | Facebook, Inc. | Providing eventual consistency for multi-shard transactions |
US9910733B2 (en) * | 2014-06-26 | 2018-03-06 | Sybase, Inc. | Transaction completion in a synchronous replication environment |
CN104317944B (zh) | 2014-10-31 | 2018-07-06 | 上海实方软件有限公司 | 一种基于公式的时间戳动态调整并发控制方法 |
US10509778B2 (en) * | 2016-05-25 | 2019-12-17 | Google Llc | Real-time transactionally consistent change notifications |
-
2016
- 2016-12-09 US US15/374,722 patent/US10951706B2/en active Active
-
2017
- 2017-09-14 DE DE102017121358.9A patent/DE102017121358A1/de not_active Withdrawn
- 2017-09-18 SG SG10201707669XA patent/SG10201707669XA/en unknown
- 2017-09-21 GB GB2108104.7A patent/GB2594808B/en active Active
- 2017-09-21 GB GB1715226.5A patent/GB2557704B/en active Active
- 2017-09-25 IE IE20230257A patent/IE20230257A2/en unknown
- 2017-09-25 IE IE20170198A patent/IE87419B1/en unknown
- 2017-09-26 CN CN201710884380.3A patent/CN108228698B/zh active Active
- 2017-09-26 EP EP17784105.3A patent/EP3552116B1/en active Active
- 2017-09-26 WO PCT/US2017/053450 patent/WO2018106316A1/en unknown
- 2017-09-26 CN CN202111304496.8A patent/CN114328424A/zh active Pending
-
2021
- 2021-03-02 US US17/189,646 patent/US11601501B2/en active Active
-
2023
- 2023-02-24 US US18/174,094 patent/US20230216921A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
SG10201707669XA (en) | 2018-07-30 |
US20210185126A1 (en) | 2021-06-17 |
US20180167460A1 (en) | 2018-06-14 |
EP3552116B1 (en) | 2022-01-26 |
IE87419B1 (en) | 2023-08-02 |
EP3552116A1 (en) | 2019-10-16 |
IE20170198A1 (en) | 2018-06-13 |
CN108228698B (zh) | 2021-11-16 |
GB2557704B (en) | 2021-07-21 |
US20230216921A1 (en) | 2023-07-06 |
IE20230257A2 (en) | 2023-11-22 |
WO2018106316A1 (en) | 2018-06-14 |
CN108228698A (zh) | 2018-06-29 |
GB2594808A (en) | 2021-11-10 |
GB201715226D0 (en) | 2017-11-08 |
GB2557704A (en) | 2018-06-27 |
DE102017121358A1 (de) | 2018-06-14 |
GB202108104D0 (en) | 2021-07-21 |
US10951706B2 (en) | 2021-03-16 |
US11601501B2 (en) | 2023-03-07 |
GB2594808B (en) | 2022-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228698B (zh) | 用于具有全局同步时间的多版本并发控制的高吞吐量算法 | |
CN110622151B (zh) | 通过较早地读取时钟来减少分布式多版本数据库中的提交等待 | |
US20220398227A1 (en) | Systems and Methods for Increasing Database Access Concurrency | |
US11789938B1 (en) | Ensuring globally consistent transactions | |
Mehdi et al. | I {Can’t} Believe {It’s} Not Causal! Scalable Causal Consistency with No Slowdown Cascades | |
US8150800B2 (en) | Advanced clock synchronization technique | |
US11474991B2 (en) | Including transactional commit timestamps in the primary keys of relational databases | |
US20150074070A1 (en) | System and method for reconciling transactional and non-transactional operations in key-value stores | |
CN115668141A (zh) | 使用时间戳对网络中的事务进行分布式处理 | |
US20230099664A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
Viotti et al. | Hybris: Robust hybrid cloud storage | |
US10445338B2 (en) | Method and system for replicating data in a cloud storage system | |
Mehdi | Scalability through asynchrony in transactional storage systems | |
KR101929948B1 (ko) | 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템 | |
Gessert et al. | Caching in Research and Industry | |
Camilleri et al. | D-Thespis: A Distributed Actor-Based Causally Consistent DBMS | |
CN112818059A (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 |