CN114207602A - 使用概率数据结构减少请求 - Google Patents
使用概率数据结构减少请求 Download PDFInfo
- Publication number
- CN114207602A CN114207602A CN202180004842.2A CN202180004842A CN114207602A CN 114207602 A CN114207602 A CN 114207602A CN 202180004842 A CN202180004842 A CN 202180004842A CN 114207602 A CN114207602 A CN 114207602A
- Authority
- CN
- China
- Prior art keywords
- database
- probabilistic data
- node
- data structure
- data structures
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
-
- 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/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- 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/1865—Transactional file systems
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/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/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/908—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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/16—General purpose computing application
- G06F2212/163—Server or database system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了涉及提供和使用概率数据结构以至少减少数据库节点之间的请求的技术。在各种实施方案中,第一数据库节点来处理涉及将一组数据库记录写入至第一数据库节点的存储器中缓存的数据库事务。作为处理数据库事务的一部分,第一数据库节点可以在一组概率数据结构中插入与该组数据库记录对应的一组数据库键。第一数据库节点可以向第二数据库节点发送该组概率数据结构以使得第二数据库节点能够确定是否从第一数据库节点请求与数据库键相关联的数据库记录。
Description
背景技术
技术领域
公开文本一般涉及数据库系统,并且更具体地,涉及使用概率数据结构减少数据库节点之间的调用/请求。
相关技术的描述
现代数据库系统常规地实现如下管理系统,该管理系统使用户能够以可以有效访问和操纵的有组织的方式存储信息的集合。在一些情况下,这些管理系统维护具有多个级别的日志结构合并树(LSM树),每个级别将信息存储为键值对。LSM树通常包括两个高级组件:存储器中缓存和持久存储。在操作中,在稍后将它们刷新到持久存储之前,数据库系统最初将数据库记录写入存储器中缓存中。
附图说明
图1是示出根据一些实施方案的具有包括概率数据结构的数据库节点的系统的示例元素的框图。
图2A是示出根据一些实施方案的概率数据结构的示例元素的框图。
图2B是示出根据一些实施方案的概率数据结构的缓存行结构的示例元素的框图。
图3是示出根据一些实施方案的能够在缓存行结构中插入数据库键的事务引擎的示例元素的框图。
图4是示出根据一些实施方案的具有概率数据结构的数据库节点之间的交互的示例元素的框图。
图5是示出根据一些实施方案的处理长时间运行事务的事务引擎的示例元素的框图。
图6是示出根据一些实施方案的涉及生成和提供一组概率数据结构的示例方法的流程图。
图7是示出根据一些实施方案的涉及使用一组概率数据结构的示例方法的流程图。
图8是示出根据一些实施方案的涉及处理长时间运行事务的示例方法的流程图。
图9是示出根据一些实施方案的示例计算机系统的框图。
公开文本包括对“一个实施方案”或“实施方案”的引用。短语“在一个实施方案中”或“在实施方案中”的出现不一定指代相同的实施方案。特定特征、结构或特性可以以与公开文本一致的任何合适方式组合。
在公开文本中,不同的实体(其可以不同地称为“单元”、“电路”、其它组件等)可以被描述或要求为“配置”以执行一个或多个任务或操作。该公式——[实体]被配置为[执行一个或多个任务]——在本文中用于指代结构(即,物理的东西,诸如电子电路)。更具体地,该公式用于指示该结构被布置为在操作期间执行一个或多个任务。可以说一个结构被“配置为”执行一些任务,即使该结构当前没有被操作。“被配置为通过网络进行通信的网络接口”旨在涵盖例如具有在操作期间执行该功能的电路的集成电路,即使所讨论的集成电路当前没有被使用(例如,电源没有连接到它)。因此,被描述或记载为“配置为”执行一些任务的实体指代物理的东西,诸如设备、电路、存储可执行以实现任务的程序指令的存储器等。该短语在本文中不用于指代无形的东西.因此,“配置为”构造在本文中不用于指代诸如应用程序编程接口(API)的软件实体。
术语“配置为”并非旨在表示“可配置为”。例如,未编程的FPGA不会被视为“配置为”执行一些特定功能,尽管它可能“可配置为”执行该功能,并且可能“配置为”在编程后执行该功能。
如本文所用,术语“第一”、“第二”等用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非特别说明。例如,在具有八个处理核心的处理器中,术语“第一”和“第二”处理核心可用于指代八个处理核心中的任何两个。换句话说,例如,第一和第二处理核心不限于处理核心0和1。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除附加因素可能影响确定的可能性。也就是说,确定可以仅基于指定的因素或基于指定的因素以及其他未指定的因素。考虑短语“基于B确定A”。该短语指定B是用于确定A或影响A确定的因素。该短语不排除A的确定也可能基于一些其它因素,诸如C。该短语还旨在涵盖仅基于B确定A的实施方案。如本文所用,短语“基于”因此与短语“至少部分地基于”同义。
具体实施方式
在一些实现方式中,维护LSM树的数据库系统在将这些记录写入与LSM树相关联的持久存储之前将记录写入LSM树的存储器中缓存。在一些方法中,数据库系统包括负责将记录写入LSM树的单个数据库节点。在其它方法中,数据库系统包括多个数据库节点,该多个数据库节点将记录写入LSM树,同时还从LSM树中读取记录。这些数据库节点可能共享公共的持久存储,但每个都具有自己的存储器中缓存。然而,在该场景中,由数据库节点写入其存储器中缓存的记录对其它数据库节点不可见,直到这些记录被刷新到公共持久存储。本发明人已经认识到该布置导致某些低效率。考虑正在处理涉及访问特定记录的最新版本的事务的第一数据库节点。该记录可以存储在第二数据库节点的存储器中缓存中,并且因此对第一数据库节点不可见。结果,第一数据库节点必须向第二数据库节点发出请求,以便确定第二数据库节点是否具有该记录的最新版本。
在许多情况下,数据库节点的存储器中缓存的大小可能非常小(例如,2GB或10GB),并且因此在任何时间点只能存储有限数量的记录。结果,即使数据库节点生成了许多记录请求,这些请求中的许多(如果不是大多数)都不会导致记录被返回。因此,尽管请求的记录通常不存在于第二数据库节点的存储器中缓存中,但第一数据库节点仍然需要向第二数据库节点发出请求以查看该记录是否存在。本发明人已经认识到这减慢了数据库系统的整体操作,因为数据库节点花费大量时间向彼此发出记录请求,即使这些请求通常不会导致记录被返回。公开文本解决了由于在数据库节点之间针对通常不存在于其它数据库节点的记录发送太多请求而消耗太多资源的该技术问题。
公开文本描述了用于实现使数据库节点能够确定是否从另一个数据库节点请求数据库记录的概率数据结构的技术。如本文所用,术语“概率数据结构”是指存储指示特定项目不存在或可能存在于系统内的特定位置处的信息的数据结构。例如,概率数据结构可以存储指示特定数据库键的数据库记录不存在或可能存在于某个数据库节点的存储器中缓存中的信息。布隆过滤器、布谷鸟过滤器、与超日志相关的结构和冲浪尝试都是概率数据结构的示例。
在下面描述的各种实施方案中,系统包括多个数据库节点,该数据库节点能够在将那些数据库记录刷新到由那些数据库节点共享的持久存储之前将数据库记录写入它们自己的本地存储器中缓存。当将数据库记录写入存储器中缓存时,在各种实施方案中,数据库节点将数据库记录的数据库键插入概率数据结构中。如本文所用,短语“将数据库键插入概率数据结构中”广义上是指基于数据库键对概率数据结构中的信息进行修改。数据库键本身不必存储在概率数据结构中。例如,可以将一组散列函数应用于数据库键以导出一组散列值。这些散列值可用于设定概率数据结构中的位。
为了将数据库键插入概率数据结构中,在各种实施方案中,数据库节点应用一组散列函数来导出一组对应的散列值。散列值之一可用于选择概率数据结构内的一部分或“缓存行”。其余的散列值可用于设定缓存行内的位以表示数据库键。在操作期间,数据库节点可以将各种数据库键插入到一个或多个概率数据结构中。在一些实施方案中,数据库节点将数据库键插入概率数据结构中,直到阈值数量的键已插入概率数据结构中(该阈值可以对应于数据结构的一些最大大小;这可以是各种实施方案中的系统设计选择或配置设定)。数据库节点然后可以创建另一个概率数据结构并开始将数据库键插入其中。因此,在各种情况下,数据库节点可创建概率数据结构的堆栈,每个概率数据结构都与一组不同的数据库键相关联。
数据库节点可以将概率数据结构从堆栈提供给第二数据库节点。在一些实施方案中,数据库节点提供来自堆栈的概率数据结构作为对来自第二数据库节点的对与指定数据库键相关联的数据库记录的请求的响应的一部分。在一些实施方案中,数据库节点可以仅向该第二数据库节点提供自第二数据库节点上次接收概率数据结构以来创建或改变的那些概率数据结构。例如,当第二数据库节点最初与第一数据库节点通信时,第一数据库节点可以提供来自其堆栈的所有概率数据结构。之后,第一数据库节点可以将新的概率数据结构添加至堆栈。当第二数据库节点向第一数据库节点发送对数据库记录的请求时,第一数据库节点可以提供新的概率数据结构,但不提供来自堆栈的其它概率数据结构,作为对该请求的响应的一部分。
接收概率数据结构的数据库节点可以使用那些概率数据结构来确定是否从另一个数据库节点(例如,那些概率数据结构的所有者)请求数据库记录。在操作期间,数据库节点可以接收处理数据库事务的请求,该数据库事务涉及访问指定数据库键的数据库记录。然而,指定的数据库键可能落在由第二数据库节点管理的键空间内。这样,前一个数据库节点(第一数据库节点)可以检查与第二数据库节点相关联的概率数据结构以确定它是否应该从第二数据库节点请求数据库记录。为了检查概率数据结构,在一些实施方案中,第一数据库节点将由第二数据库节点用于将数据库键插入到该概率数据结构中的相同一组散列函数应用于指定的数据库键。如果对指定数据库键导出的散列值匹配概率数据结构中设定的位,则第一数据库节点可以确定在第二数据库节点处可能存在指定数据库键的数据库记录;否则,第一数据库节点确定在第二数据库节点处不存在该键的数据库记录。
这些技术可能优于现有方法,因为这些技术允许数据库节点以涉及减少在数据库节点之间发送的数据库记录请求的数量的更有效方式进行通信。在先前的方法中,如果该记录的数据库键落在另一个数据库节点的键空间内,则数据库节点将向另一个数据库节点发出对数据库记录的请求。通过使用公开文本中讨论的概率数据结构,数据库节点可以确定是否向另一个数据库节点发出对数据库记录的请求。如果概率数据结构不具有指示特定数据库键的信息集,则数据库节点知道该特定数据库键的数据库记录不存在于其它数据库节点处,并且因此不必向该其它数据库节点发出请求。
这些技术还可以提供附加优点。在各种情况下,数据库系统可具有多个处理器,该多个处理器与可能对应于概率数据结构的缓存行交互。当以非单缓存行方法将数据库键插入概率数据结构中时,该键的多个散列值可映射到不同的缓存行。更新概率数据结构的位可以通过原子比较和交换操作发生,该操作需要处理器获得缓存行的所有权,同时防止其它处理器更新缓存行。结果,当键散列值映射到多个缓存行时,处理器必须在并发系统中多次争夺这些缓存行的所有权。这可能导致更多的处理器停顿(等待缓存行的所有权)并降低将键插入概率数据结构中的性能。在单缓存行方法中,所有键散列值都映射到相同的硬件缓存行。这允许处理器仅寻求单个缓存行而不是多个缓存留置权的所有权。因此,处理器可以花费更少的时间来等待插入数据库键的能力。现在将参考图1讨论这些技术的示例性应用。
现在转向图1,示出了系统100的框图。系统100包括可以经由硬件或硬件和软件例程的组合来实现的一组组件。在所示实施方案中,系统100包括数据库110和一组数据库节点120A-C。如进一步说明的,数据库节点120A-C各自包括存储器中缓存130(其存储相应的数据库记录135A-C)和一组概率数据结构140。在一些实施方案中,系统100可以以不同于所示出的方式实现。例如,系统100可以包括更多或更少的数据库节点120。
在各种实施方案中,系统100实现允许该服务的用户开发、运行和管理应用程序的平台服务。作为示例,系统100可以是向由多租户系统托管的多个用户/租户提供各种功能的多租户系统。因此,系统100可以执行来自各种不同用户(例如,系统100的提供者和租户)的软件例程,以及向用户、数据库(例如,数据库110)和与系统100相关联的其它实体提供代码、网页和其它数据。如图所示,系统100包括数据库节点120A-C,该数据库节点120A-C与数据库110交互以存储和访问与系统100相关联的用户的数据。
在各种实施方案中,数据库110是以允许访问、存储和操纵该信息的方式组织的信息的集合。因此,数据库110可以包括允许数据库节点120对数据库110中的信息执行操作(例如,访问、存储等)的支持软件。如图所示,数据库110在数据库节点120A-C之间共享,使得由一个数据库节点120写入的数据库记录135可由其它数据库节点120访问。在一些实施方案中,数据库110由在网络(例如,存储连接网络(SAN))上连接在一起并配置为冗余存储信息以便防止数据丢失的单个或多个存储设备。这些存储设备可以持久地存储数据,并且因此数据库110可以用作持久存储。
在各种实施方案中,数据库110实现了具有多级数据库记录135的日志结构化合并树(LSM树)的一部分。如前所述,LSM树可以包括两个高级部分:存储器中部分和磁盘部分。LSM树的一个或多个级别可以包括写入存储器中缓存130的数据库记录135。LSM树的其余级别可以包括写入数据库110的数据库记录135。因此,存储器中缓存130A-C可以促进LSM树的存储器中部分,而数据库110促进该LSM树的磁盘部分。
在各种实施方案中,数据库节点120是能够提供诸如数据存储、数据检索和数据操纵的数据库服务的硬件、软件或其组合。这些数据库服务可以提供给系统100内的其它组件或系统100外部的组件。如图所示,数据库节点120B接收数据库事务请求105——该请求可能从试图访问一组数据库记录135的应用服务器(未示出)接收。作为示例,数据库事务请求105可以指定从一个或多个数据库表中选择一个或多个行的SQL SELECT命令。行的内容可以在数据库记录135中定义,并且因此数据库节点120可以返回与选择的一个或多个表行对应的一个或多个数据库记录135。在一些情况下,数据库事务请求105可以指示数据库节点120针对LSM树写入一个或多个数据库记录135。在各种实施方案中,在将这些数据库记录刷新到数据库110之前,数据库节点120最初将数据库记录135写入其存储器中缓存130。
在各种实施方案中,存储器中缓存130是将数据存储在数据库节点120的存储器(例如,随机存取存储器(RAM))中的缓冲器。HBaseTMMemstore可以是存储器中缓存130的示例。如所提到的,数据库节点120可以最初将数据库记录135(例如,以键值对的形式)写入其存储器中缓存130。在一些情况下,数据库表中的行的最新/最新颖版本可以在存储在存储器中缓存130中的数据库记录135中找到。然而,在各种实施方案中,写入数据库节点120的存储器中缓存130的数据库记录135对于其它数据库节点120是不可见的。也就是说,在没有询问的情况下,那些其它数据库节点120不知道什么信息存储在该数据库节点120的存储器中缓存130中。为了确定存储器中缓存130是否正在存储与特定键相关联的数据库记录135,在一些情况下,数据库节点120可以向存储器中缓存130的数据库节点120发出数据库记录请求122。此类数据库记录请求122可以包括特定键,并且如果存在对应于特定键的数据库记录,则数据库节点120可以返回数据库记录135。
在许多情况下,一个数据库节点120可以将数据库记录响应124返回到另一个数据库节点120,其中该响应不包括数据库记录135。这可能是因为在各种实施方案中,存储器中缓存130在大小上相对小,并且因此与特定键对应的数据库记录135在存储器中缓存130中的机会可能相对较低。因此,在各种实施方案中,数据库节点120使用概率数据结构140来减少它向提供那些特定概率数据结构140的另一个数据库节点120发出的数据库记录请求122的量。
在各种实施方案中,概率数据结构140是存储信息的数据结构,该信息指示数据库记录135存在于对应数据库键的存储器中缓存130中的概率。如所提到的,数据库节点120可以接收数据库事务请求105,该数据库事务请求105请求可能涉及将一个或多个数据库记录135写入其存储器中缓存130。在一些实施方案中,当将数据库记录135写入其存储器中缓存130时,数据库节点120将与数据库记录135对应的数据库键插入概率数据结构140中。为了将数据库键插入概率数据结构140中,在各种实施方案中,数据库节点120对数据库键执行一个或多个散列函数以导出一组散列值。这些散列值可用于选择概率数据结构140的一部分并设定该部分内的信息位。
接收概率数据结构140的数据库节点120可以对某个数据库键执行相同的一个或多个散列函数以确定是否已经针对该数据库键设定了适当的位。如果已经针对该数据库键设定了适当的位,则数据库节点120可以确定该数据库键的数据库记录135可能存在于已提供概率数据结构140的数据库节点120的存储器中缓存130处。如果没有针对该数据库键设定适当的位,则数据库节点120可以确定该数据库键的数据库记录135可能不存在于该其它数据库节点120的存储器中缓存130处。如果数据库记录135可能存在,则在各种实施方案中,数据库节点120向另一个数据库节点120发送对潜在的数据库记录135的数据库记录请求122。
现在转向图2A,示出了示例概率数据结构140的框图。在所示实施方案中,概率数据结构140包括缓存行结构210、键范围220、键值的数量230、活动事务计数240、最旧事务提交编号250、最新事务提交编号260、状态270和标识符值275。在一些实施方案中,概率数据结构140可以以不同于所示出的方式实现。作为示例,概率数据结构140可以包括标识符值。当一个数据库节点120清除概率数据结构140时,它可以将该概率数据结构140的标识符值提供给另一个数据库节点120,使得另一个数据库节点120可以清除该概率数据结构140的其自己的副本。
在各种实施方案中,缓存行结构210是能够存储信息的数据结构,该信息对于数据库键指示两个数据点之一:1)该数据库键的数据库记录未存储在与概率数据结构140相关联的存储器中缓存130处,或2)该数据库键的数据库记录可以存储在该存储器中缓存130处。在各种实施方案中,缓存行结构210包括多个缓存行,每个缓存行可以是可以基于插入缓存行结构210的数据库键设定的一系列位。基于在特定的缓存行中已经设定了哪些位,数据库节点120可以确定特定数据库键的数据库记录是否可以存储在另一个数据库节点120的存储器中缓存130处。关于图2B更详细地讨论缓存行结构210的示例。
在各种实施方案中,键范围220是定义已插入概率数据结构140中的数据库键的范围的一组数据值。数据库节点120可以使用键范围220来确定是否检查概率数据结构140来了解在另一个数据库节点120处是否可能存在对某个数据库键的数据库记录135。考虑其中数据库节点120B从数据库节点120A接收三个概率数据结构140的示例。数据库节点120B可能希望确定对于在由数据库节点120B处理的数据库事务中识别的特定数据库键,在存储器中缓存130A中是否存在数据库记录135。因此,数据库节点120B可以检查三个概率数据结构140中的每个概率数据结构的键范围220,以便确定特定数据库键是否落入键范围220内。如果键范围220不包括特定的数据库键,这可以允许数据库节点120B通过不检查概率数据结构140的缓存行结构210来节省处理资源和时间。在一些实施方案中,多个概率数据结构140可以具有重叠的键范围220。
在各种实施方案中,键值的数量230是指示已插入到概率数据结构140中的数据库键的数量的数据值。在一些情况下,键值230的数量可以近似于已插入的数据库键的数量。这可能是由于值230在没有任何同步的情况下递增,并且因此一些增量可能由于不同步而丢失。在各种实施方案中,概率数据结构140在已插入指定数量的数据库键之后被封顶。通过封顶可以插入的数据库键的数量,概率数据结构140的误报率(即概率数据结构140指示数据库记录135位于存储器中缓存130但该数据库记录实际上不存在的比率——因此,数据库记录135“可以”位于该存储器中缓存130)可以保持在目标速率(例如,1%),因为数据库键的插入可以递增地增加误报率。因此,键值230的数量可用于确定是否已插入指定数量的数据库键。在键值230的数量识别出匹配或超过指定数量的数据库键的值之后,数据库节点120可以防止插入附加数据库键并且可以生成数据库键插入的另一个概率数据结构140。
在各种实施方案中,活动事务计数240是指示在将至少一个数据库键插入概率数据结构140之后仍处于活动状态的事务的数量的数据值。例如,数据库节点120可以接收数据库事务请求105以执行数据库事务。作为处理该数据库事务的一部分,数据库节点120可以将数据库键插入概率数据结构140中。响应于插入数据库键,在各种实施方案中,数据库节点120递增活动事务计数240。继续该示例,数据库节点120可以接收另一个数据库事务请求105以执行第二数据库事务。作为处理第二数据库事务的一部分,数据库节点120可以将数据库键插入概率数据结构140中。响应于插入数据库键,数据库节点120可以递增活动事务计数240以指示已经将至少一个键插入概率数据结构140中的两个活动事务。响应于提交第一数据库事务,在各种实施方案中,数据库节点120然后递减活动事务计数240。当第二数据库事务提交时,数据库节点120可以再次递减活动事务计数240。在各种实施方案中,可以提交数据库事务,其中数据库节点120确认数据库事务已完成。作为提交事务的结果,与提交的事务相关联的数据库记录135可以经由记录请求122对其它数据库节点120可用。当数据库事务中止时,活动事务计数240也可以递减。
虽然活动事务计数240识别大于零的值,但在各种实施方案中,不能清除概率数据结构140。也就是说,只有在不存在与概率数据结构140相关联的活动数据库事务之后,清除引擎才可以回收概率数据结构140。
在各种实施方案中,最旧事务提交编号250是指示将至少一个数据库键插入概率数据结构140中的最旧提交事务(在时间上)的数据值。也就是说,当数据库节点120提交事务时,可以向事务分配事务提交编号,该事务提交编号可以基于何时提交事务。因此,比另一个事务更早提交的事务具有更小/更低的事务提交编号。在各种实施方案中,最旧事务提交编号250被数据库节点120用来确定是否检查概率数据结构140的数据库键。例如,如果数据库节点120正在处理具有小于最旧事务提交编号250的值的事务快照,则该数据库节点120可能不检查对应的概率数据结构140。
在各种实施方案中,最新事务提交编号260是指示将至少一个数据库键插入概率数据结构140的最新提交事务(在时间上)的数据值。第一数据库节点120可以使用最新事务提交编号260来确定将哪些概率数据结构140发送到第二数据库节点120。例如,当该第二数据库节点120向该第一数据库节点120发送对数据库记录的请求时,该请求可以识别事务提交编号。事务提交编号可以对应于第二数据库节点120先前从第一数据库节点120接收的概率数据结构140的最新的最新事务提交编号260。第一数据库节点120可以发送包括概率数据结构140的响应,该概率数据结构140具有大于在第二数据库节点120的请求中指定的事务提交编号的最新事务提交编号260。
在各种实施方案中,状态270是指示概率数据结构140在其生命周期中处于哪个阶段的数据值。在各种实施方案中,概率数据结构140的生命周期存在三个不同阶段:开放、关闭和未使用。概率数据结构140最初可以在其生命周期的“开放”阶段开始,并且因此具有“开放”状态270。当处于其生命周期的“开放”阶段时,概率数据结构140可用于由当前运行的数据库事务产生的数据库键插入。在各种实施方案中,在指定数量的数据库键已被插入概率数据结构140之后,其状态270被更新为“关闭”。当处于“关闭”阶段时,概率数据结构140可以继续被数据库节点120使用,但是不能再向其中插入数据库键。结果,当前运行的数据库事务可以继续插入到新的概率数据结构140中。
在各种实施方案中,标识符值275是从其它概率数据结构140中识别概率数据结构140的值。在各种情况下,标识符值275可以使数据库节点120能够刷新概率数据结构140的陈旧副本,因为概率数据结构140可以在其存在的过程中多次更新和共享。作为示例,在已将概率数据结构140提供给另一个数据库节点120之后,事务可能继续将键插入到概率数据结构140中。如果更新的概率数据结构140再次与另一个数据库节点120共享,则另一个数据库120可以使用标识符值275以便识别概率数据结构140的更旧版本,使得可以用更新版本替换它。在一些实施方案中,数据库节点120可以包括标识符值275作为数据库记录请求122的一部分,使得接收数据库节点120可以确定对应的概率数据结构140是否已经更新并且应该作为数据库记录响应124的一部分返回。
在一些实施方案中,在概率数据结构140的最新事务提交编号260超过刷新器事务提交编号(其可以识别刷新到数据库110的最新事务)之后,在对应的数据库节点120上执行的清除引擎开始退出概率数据结构140的过程。清除引擎可以将概率数据结构140转变为“未使用”状态。因此,可以更新状态270以反映概率数据结构140处于未使用状态。
现在转向图2B,示出了示例缓存行结构210的框图。在所示实施方案中,缓存行结构210包括缓存行280A-D,每个缓存行具有相应的缓存行部分285。在一些实施方案中,缓存行结构210可以以与所示不同的方式实现。虽然缓存行280A-D被描绘为未连接,但在一些实施方案中,缓存行280A-D是存储器的连续段的一部分,其中给定的缓存行280可以由偏移值识别并且可以跨越该段中设定数量的字节。
在各种实施方案中,缓存行280中的每个缓存行是可以设定为将数据库键插入概率数据结构140的一部分的位的集合。因此,缓存行部分285可以是位值。在各种实施方案中,缓存行280是硬件构造;然而在其它实施方案中,缓存行280可以软件实现。如图所示,每个缓存行280存在五个缓存行部分285(即,五个位),但是在其它实施方案中每个缓存行280的位数可以不同。在一些情况下,每个缓存行280的位数可以基于缓存行结构210的所需大小和所需的误报率。如关于图3更详细地讨论,可以执行初始散列函数以生成可用于选择缓存行280(例如,缓存行280A)的散列值,并且然后可以执行一组散列函数以生成可用于设定该缓存行280的位的散列值(例如,设定部分285A和285C的位)。设定的位数可以基于系统100的特性。例如,系统100可以提供允许从8个不同位置同时加载的指令。因此,可以针对给定的数据库键在缓存行280内设定8位,以便从该指令的特性中受益。
现在转向图3,示出了示例事务引擎310的框图。在所示实施方案中,事务引擎310包括散列函数315。如进一步描述的,事务引擎310与存储器中缓存130和缓存行结构210交互。在一些实施方案中,事务引擎310可以以不同于所示的方式实现。
在各种实施方案中,事务引擎310是可执行以处理数据库事务的一组软件例程,其可以包括将数据库记录135插入到存储器中缓存130中并且将对应的数据库键320插入到概率数据结构140的缓存行结构210中。如关于图4更详细讨论的,作为处理数据库事务的一部分,事务引擎310可以向其它数据库节点120处的其它事务引擎310发出数据库记录请求122,以便潜在地从其它存储器中缓存130接收数据库记录135。
如所描绘的,事务引擎310可以接收数据库事务请求105。在各种情况下,处理数据库事务请求105可以涉及将一个或多个数据库记录135写入存储器中缓存130。当数据库记录135被写入至存储器中缓存130中时,在各种实施方案中,事务引擎310将对应的数据库键320插入到缓存行结构210中。在一些实施方案中,事务引擎310可以执行将该事务的数据库键320批量插入到概率数据结构140中,然后发起事务提交——在一些情况下,批量插入是作为预提交阶段的一部分执行的,其中数据库节点120在最终提交事务之前执行一组动作。
为了将数据库键320插入缓存行结构210,事务引擎310可以对数据库键320执行一组散列函数315以导出一组散列值。在各种实施方案中,散列函数315是可执行以将任意大小的数据(例如,数据库键320)映射到固定大小值的函数。例如,散列函数315可以对应于在MurmurHash族中找到的散列函数。当将数据库键320插入缓存行结构210时,事务引擎310可以最初对数据库键320执行散列函数315以导出可用于选择缓存行280的散列值。如图所示,事务引擎310对数据库键320执行散列函数315A以导出散列值330A。散列值330A用于选择缓存行280C。结果,事务引擎310可以设定缓存行280C内的位。为了确定要设定哪些位,事务引擎310可以执行附加散列函数315以导出用于设定缓存行280中的位的附加散列值。如图所示,事务引擎310对数据库键320执行散列函数315B和315C以分别导出散列值330B和330C。散列值330B和330C用于设定缓存行280C内的位。
在一些实施方案中,可以将指示数据库键范围的信息插入到缓存行结构210中。事务引擎310可以对在数据库键范围中的数据库键之间共享的前缀部分执行上面讨论的过程。结果,可以将前缀部分插入到缓存行结构210中。数据库节点120进一步可以通过检查从另一个数据库节点120接收的概率数据结构140中的前缀部分的插入来确定是否从另一个数据库节点120请求与键范围相关联的数据库记录。
现在转向图4,示出了示例数据库节点120A和120B的框图。在所示实施方案中,数据库节点120A和120B包括存储器中缓存130、概率数据结构140A-C和事务引擎310。如图所示,概率数据结构140A和140B对于数据库节点120A是本地的,因为它们是由数据库节点120A生成的,而概率数据结构140C对于数据库节点120B是本地的,因为它是由数据库节点120B生成的。所示实施方案可以与所示不同地实现——例如,数据库节点120A和120B可以包括清除引擎。
如前所述,数据库节点120可以向系统100的租户(例如,组织)提供数据库服务(例如,数据存储)。租户的数据可以定义与该租户相关联的键空间。在一些实施方案中,可以将键空间分成多个键空间分区,每个键空间分区分配给相应的数据库节点120。因此,数据库节点120可以仅将落入其分配的键空间内的数据库记录写入其存储器中缓存130。结果,由数据库节点120产生的概率数据结构140可以对应于其分配的键空间。因此,作为示例,概率数据结构140A和140B对应于数据库节点120A的键空间,并且概率数据结构140C对应于数据库节点120B的键空间。
当数据库节点120希望访问数据库记录135时,它可以基于其对应的数据库键320来确定数据库记录135属于哪个键空间。如果该数据库记录135属于数据库节点120自己的键空间,则它可以检查它自己的存储器中缓存130中的数据库记录135,并且然后如果记录135不在它自己的存储器中缓存130中,则继续到数据库110。如果该数据库记录135属于另一个数据库节点120的键空间(例如,属于数据库节点120A),则前一个数据库节点120(例如,数据库节点120B)可以确定它是否具有可以检查指示数据库记录的数据库键320的信息的概率数据结构140。
最初,数据库节点120B可能不具有来自数据库节点120A的任何概率数据结构140。数据库节点120B因此可以发出识别数据库记录135的特定数据库键320的数据库记录请求122。在各种实施方案中,作为数据库记录查找的副作用,数据库节点120A可以将概率数据结构140返回到数据库节点120B作为数据库记录响应124的一部分。即使在数据库节点120A的存储器中缓存130处没有找到数据库记录135,也可以返回概率数据结构140。在一些实施方案中,数据库节点120B能够向数据库节点120A发出对概率数据结构140的概率数据结构特定请求。数据库节点120A最初可能仅生成概率数据结构140A,并且因此,可以将其作为数据库记录请求122的数据库记录响应124的一部分返回到数据库节点120B。
之后,数据库节点120B可能希望访问属于分配给数据库节点120A的键空间的另一数据库记录135。在一些实施方案中,数据库节点120B检查概率数据结构140A(其先前接收到的),确定该数据库记录的数据库键320是否落入概率数据结构140A的键范围220内,并且与该数据库记录135相关联的事务快照是否早于与概率数据结构140A相关联的最旧事务提交发生,这可以由最旧事务提交编号250来识别。在各种情况下,数据库节点120B可以检查一个或另一个或附加参数以确定是否应该检查概率数据结构140。
如果适用,数据库节点120B可以检查概率数据结构140A以便确定与特定数据库键320相关联的数据库记录135是否存在于数据库节点120A的存储器中缓存130处的可能性。如果存在机会,则数据库节点120B可以向数据库节点120A发送数据库记录请求122。在一些实施方案中,数据库记录请求122指定最新的事务提交编号260。数据库节点120A可以使用提交编号260来确定自从数据库节点120B最后发出数据库记录请求122以来是否已经创建了任何新的概率数据结构140。如果存在新的概率数据结构140(例如,数据库节点120A可能已经创建了概率数据结构140B),则那些概率数据结构140可以经由数据库记录响应124返回。
如所提到的,数据库节点120可以在将数据库记录135刷新到数据库110之前将数据库记录135初始写入其存储器中缓存130。数据库节点120可以将数据库记录135刷新到特定的事务提交编号或时期。在各种实施方案中,当将数据库记录135刷新到数据库110时,数据库节点120可以清除其最新事务提交编号260小于清除事务提交编号的概率数据结构140。例如,概率数据结构140A可能仅与事务“A”相关联。因此,当与事务A相关联的所有数据库记录135被刷新到数据库110时,数据库节点120A可以清除概率数据结构140A,使得概率数据结构140A不再提供给其它数据库节点120。在一些实施方案中,数据库节点120通知其它数据库节点120关于已清除的概率数据结构140,使得如果那些其它数据库节点120先前接收到那些概率数据结构140的副本,则它们不再使用那些概率数据结构140。在各种实施方案中,当数据库记录135被刷新到数据库110时,可以将清除事务提交编号的指示写入所有数据库节点120可访问的目录。因此,数据库节点120可以从目录中读取以确定不使用某些概率数据结构140,因为它们已被清除——清除数据库节点120不必直接与其它数据库节点120通信以让它们知道清除的概率数据结构140。数据库节点120可以从其存储中移除陈旧的概率数据结构140。
现在转向图5,示出了与示例概率数据结构140A-C交互的事务引擎310的框图。所示实施方案可以以与所示不同的方式实现——例如,可能存在比所示更多的概率数据结构140。
在一些实施方案中,与非长时间运行的事务相比,数据库节点120不同地处理长时间运行的事务。如所提到的,当数据库节点120最初将用于事务的数据库键320插入概率数据结构140中时,该数据库节点120可以通过递增概率数据结构140的活动事务计数240来向该概率数据结构140注册事务。虽然活动事务计数240不为零,但概率数据结构140可能不会从数据库节点120中清除。这可能导致长时间运行的事务防止概率数据结构140被清除并且数据库节点120用完分配的空间以创建新的概率数据结构140的问题。特别地,长时间运行的事务(例如,持续超过2小时的事务)可以写入在长时间运行的事务尚未提交时不能被清除的多个概率数据结构140。在一些情况下,可能存在多个长时间运行的事务,其例如阻止数以千计的概率数据结构140被清除数小时。因此,因为数据库节点120可能在一段时间内不能清除那些概率数据结构140,所以它可能没有足够的空间来分配新的概率数据结构140。因此,在一些实施方案中,与非长时间运行的事务相比,数据库节点120以不同方式处理长时间运行的事务。
在开始处理数据库事务时,数据库节点120可以最初将用于数据库事务的数据库键320插入概率数据结构140中。例如,如所描绘的,事务引擎310将数据库键320插入概率数据结构140A中。然而,如果数据库节点120确定数据库事务应该被分类为长时间运行的数据库事务,则数据库节点120可以暂停该数据库事务的数据库键插入,直到预提交阶段。为了确定数据库事务是否应该被分类为长时间运行的事务,数据库节点120可以使用各种标准。在各种实施方案中,如果数据库事务持续时间长于(或超过)指定的时间量,则该数据库事务可以被分类为长时间运行的事务。例如,如果数据库节点120已经处理数据库事务120秒,则数据库事务可以被分类为长时间运行的事务。在一些实施方案中,如果数据库事务已将键插入到指定数量的概率数据结构140中,则该数据库事务可以被分类为长时间运行的事务。作为示例,如果在处理数据库事务时,数据库节点120已经将数据库键320插入到10个不同的概率数据结构140中,则数据库事务可以被分类为长时间运行的事务。
一旦数据库节点120已经确定数据库事务是长时间运行的数据库事务,在各种实施方案中,数据库节点120从它已经触及的概率数据结构140中注销数据库事务。为了从给定的概率数据结构140注销数据库事务,数据库节点120可以递减该给定的概率数据结构140的活动事务计数240。这可以允许比等待长时间运行的数据库事务提交更快地清除给定的概率数据结构140。在确定数据库事务是长时间运行的事务之后,数据库节点120可以停止将数据库键320插入到用于事务的概率数据结构140中,直到数据库节点120已经针对该事务发起了预提交阶段。在各种实施方案中,事务由数据库节点120在将所有数据库记录135写入其用于该事务的存储器中缓存130之后提交——提交可以与其存储器中缓存130相关地作出。在一些实施方案中,不是停止用于长时间运行的数据库事务的键插入,数据库节点120可以开始将数据库键320写入单个概率数据结构140。数据库节点120可以允许概率数据结构140超过阈值数量的键,否则将被许可——也就是说,数据库节点120可以允许概率数据结构140溢出而不是创建新的概率数据结构140。
在各种实施方案中,在数据库节点120提交长时间运行的数据库事务之前,数据库节点120执行将与事务相关联的所有数据库键320批量插入到一组新的概率数据结构140中。然后,数据库节点120可以将新的一组概率数据结构140提供给另一个数据库节点120,作为对如先前所讨论的数据库事务请求105的响应的一部分。在一些实施方案中,数据库节点120可以恢复插入用于数据库事务的数据库键320,而不是重新开始插入用于该数据库事务的所有数据库键320。
现在转向图6,示出了方法600的流程图。方法600是通过第一数据库节点(例如,数据库节点120A)执行以便向第二数据库节点(例如,数据库节点120B)提供概率数据结构(例如,概率数据结构140)的方法的一个实施方案。方法600可以通过执行存储在非暂态计算机可读介质上的一组程序指令来执行。在一些实施方案中,方法600可以包括更多或更少的步骤。作为示例,方法600可以包括以下步骤:第一数据库节点将一组数据库记录(例如,数据库记录135)中的一个或多个从其存储器中缓存(例如,存储器中缓存130A)写入至在第一和第二数据库节点之间共享的持久存储(例如,数据库110)。第一数据库节点可以确定是否响应于将那些数据库记录写入持久存储而清除一个或多个概率数据结构。
方法600开始于步骤610,其中第一数据库节点来处理涉及将一组数据库记录写入至第一数据库节点的存储器中缓存的数据库事务。该处理可以包括在一组概率数据结构中插入与一组数据库记录对应的一组数据库键(例如,数据库键320)。在一些实施方案中,将给定的数据库键插入给定的概率数据结构包括将散列函数(例如,散列函数315)应用于给定的数据库键以导出与在给定的概率数据结构中包括的多个缓存行中特定的一个缓存行(例如,缓存行280)对应的散列值(例如,散列值330)。因此,第一数据库节点可以将给定的数据库键插入特定的缓存行。将给定的数据库键插入特定的缓存行可以包括将一组散列函数(例如,散列函数315)应用于给定的数据库键以导出一组散列值并且基于该组散列值设定特定的缓存行的一组位(例如,缓存行部分285的位)。
第一数据库节点可以将一组数据库键中的多个数据库键插入到该组概率数据结构中的第一概率数据结构中。在一些情况下,响应于第一概率数据结构包括定义阈值数量的数据库键(例如,20000个键),第一数据库节点可以将该组数据库键中的其余数据库键插入到该组概率数据结构中的第二不同的一个概率数据结构。在一些情况下,该组概率数据结构中的至少一个概率数据结构可以与来自多个不同事务的数据库键相关联。
在步骤620中,第一数据库节点向第二数据库节点发送该组概率数据结构以使得第二数据库节点能够确定是否从第一数据库节点请求与数据库键相关联的数据库记录。在将一组概率数据结构发送至第二数据库节点之后,第一数据库节点可以将一个或多个附加概率数据结构添加至一组概率数据结构。然后,第一数据库节点可以从第二数据库节点接收对与特定数据库键相关联的数据库记录的最新版本的数据库记录请求(例如,数据库记录请求122)。第一数据库节点可以在对数据库记录请求的响应(例如,数据库记录响应124)中包括一个或多个附加概率数据结构。
在一些实施方案中,给定的概率数据结构与指示对应于给定的概率数据结构的最新事务提交的元数据(例如,最新事务提交编号260)相关联。在一些情况下,在将一个或多个附加概率数据结构包括在响应中之前,第一数据库节点可以基于一个或多个附加概率数据结构中的每个附加概率数据结构与对应于比在数据库记录请求中指定的特定事务提交更晚的时间点的相应最终最新事务提交相关联来确定包括一个或多个附加概率数据结构。
在一些实施方案中,给定的概率数据结构与元数据(例如,活动事务计数240)相关联,该元数据指示已将数据库键插入给定的概率数据结构中的活动事务的数量。第一数据库节点可以基于活动事务的数量是否指示针对给定的概率数据结构存在活动事务来确定是否可以清除给定的概率数据结构。在一些情况下,该组概率数据结构中的至少两个概率数据结构可以各自包括作为处理数据库事务的一部分而插入的相应数据库键。这样,响应于提交与存储器中缓存相关的数据库事务,第一数据库节点可以针对至少两个概率数据结构中的每个概率数据结构递减与该概率数据结构相关联的活动事务的数量。
现在转向图7,示出了方法700的流程图。方法700是通过第一数据库节点(例如数据库节点120A)执行以便确定是否从第二数据库节点(例如数据库节点120B)请求数据库记录(例如数据库记录135)的方法的一个实施方案。方法700可以通过执行存储在非暂态计算机可读介质上的一组程序指令来执行。在一些实施方案中,方法700可以包括更多或更少的步骤。作为示例,方法700可以包括第一数据库节点向应用系统提供数据库记录(从第二数据库节点接收)作为处理从应用系统接收的事务请求(例如,数据库事务请求105)的一部分的步骤。
方法700开始于步骤710,其中第一数据库节点从第二数据库节点接收一组概率数据结构(例如,概率数据结构140),其可用于确定给定数据库记录是否未存储在第二数据库节点的存储器中缓存(例如存储器中缓存130B)内。在步骤720中,第一数据库节点接收请求(例如,数据库事务请求105)以处理涉及特定数据库键(例如,数据库键320)的数据库事务。
在步骤730中,第一数据库节点基于该组概率数据结构确定是否从第二数据库节点请求与特定数据库键相关联的数据库记录的最新版本。在一些实施方案中,给定的概率数据结构包括多个缓存行。这样,第一数据库节点可以将散列函数(例如,散列函数315)应用于特定的数据库键以导出散列值(例如,散列值330)。基于散列值,第一数据库节点可以选择给定的概率数据结构的多个缓存行之一。然后,第一数据库节点可以确定存储在缓存行中的信息是否指示特定数据库键。
响应于确定存储在缓存行中的信息不指示特定的数据库键,第一数据库节点可以从由第一和第二数据库节点共享的持久存储(例如,数据库110)请求数据库记录的最新版本。响应于确定存储在缓存行中的信息指示特定数据库键,第一数据库节点可以向第二数据库节点发送对数据库记录的最新版本的请求(例如,数据库记录请求122)。因此,第一数据库节点可以从第二数据库节点接收响应(例如,数据库记录响应124)。在一些情况下,对第二数据库节点的请求可以识别与一组概率数据结构相关联的最新事务提交。这样,响应可以包括一组附加概率数据结构,其中的每个都与在由请求识别的最新事务提交之后发生的事务提交相关联。
现在转向图8,示出了方法800的流程图。方法800是由数据库节点(例如,数据库节点120)执行以处理长时间运行的数据库事务的方法的一个实施方案。方法800可以通过执行存储在非暂态计算机可读介质上的一组程序指令来执行。在一些实施方案中,方法800可以包括更多或更少的步骤。作为示例,方法800可以包括数据库节点向另一个数据库节点发送一组概率数据结构(例如,概率数据结构140)以使另一个数据库节点能够确定是否从数据库节点请求与特定数据库键(例如,数据库键320)相关联的数据库记录(例如,数据库记录135)的步骤。
方法800开始于步骤810,其中数据库节点接收请求(例如,数据库事务请求105)以执行数据库事务,该数据库事务涉及将一组数据库记录(例如,数据库记录135)写入数据库节点的存储器中缓存(例如,存储器中缓存130)并且将一组对应的数据库键(例如,数据库键320)插入概率数据结构中。在步骤820中,数据库节点执行数据库事务。
在步骤822中,作为执行数据库事务的一部分,对于其中针对数据库事务插入至少一个数据库键的每个概率数据结构,数据库节点向该概率数据结构注册数据库事务。在各种情况下,执行注册以防止在注册数据库事务时删除概率数据结构。在一些实施方案中,概率数据结构中特定的一个概率数据结构包括元数据(例如,活动事务计数240),该元数据指定已将数据库键插入特定概率数据结构中的活动事务的数量。虽然活动事务的数量指示存在至少一个活动事务,但可以防止删除特定概率数据结构。在一些情况下,执行数据库事务包括将至少一个数据库键插入特定概率数据结构中。这样,数据库节点可以向特定概率数据结构注册数据库事务,包括更新元数据以递增活动事务的数量。
在步骤824中,作为执行数据库事务的一部分,数据库节点确定数据库事务的持续时间超过指定的时间量(例如,30秒)。在一些实施方案中,数据库节点确定指定数量(例如,10)的概率数据结构已被写入作为执行数据库事务的一部分。
在步骤826中,作为执行数据库事务的一部分,响应于该确定,数据库节点从先前为其注册了数据库事务的每个概率数据结构注销数据库事务。从特定概率数据结构注销数据库事务可以包括更新元数据以递减活动事务的数量。递减可能导致活动事务的数量为零。这样,在确定从概率数据结构注销数据库事务已经导致元数据被更新以反映不存在活动事务之后,数据库节点可以删除特定概率数据结构。
响应于该确定,数据库节点可以延迟将数据库事务的数据库键插入到概率数据结构中,直到数据库节点已经发起数据库事务的预提交阶段。在一些情况下,响应于发起数据库事务的预提交阶段,数据库节点可以重新开始将数据库事务的一组数据库键插入一组概率数据结构。在一些情况下,响应于发起数据库事务的预提交阶段,数据库节点可以恢复将数据库事务的该组数据库键插入一组概率数据结构。在提交数据库事务之前,数据库节点可以删除其中注销数据库事务的概率数据结构中的至少一个概率数据结构。在一些实施方案中,响应于该确定,数据库节点将该组数据库键的其余数据库键插入到单个概率数据结构中。
示例性计算机系统
现在转向图9,描绘了可以实现系统100、数据库110和/或数据库节点120的示例性计算机系统900的框图。计算机系统900包括处理器子系统980,该处理器子系统980经由互连960(例如,系统总线)耦合到系统存储器920和I/O接口940。I/O接口940耦合到一个或多个I/O设备950。计算机系统900可以是各种类型的设备中的任何一种,包括但不限于服务器系统、个人计算机系统、台式计算机、膝上型计算机或笔记本计算机、大型计算机系统、平板计算机、手持计算机、工作站、网络计算机、诸如移动电话、音乐播放器或个人数据助理(PDA)的消费设备。尽管为了方便而在图9中示出了单个计算机系统900,但是系统900也可以实现为一起操作的两个或更多个计算机系统。
处理器子系统980可以包括一个或多个处理器或处理单元。在计算机系统900的各种实施方案中,处理器子系统980的多个实例可以耦合到互连960。在各种实施方案中,处理器子系统980(或980内的每个处理器单元)可以包含缓存或其它形式的板载存储器。
系统存储器920可用于存储可由处理器子系统980执行以使系统900执行本文所述的各种操作的程序指令。系统存储器920可以使用不同的物理存储器介质来实现,诸如硬盘存储装置、软盘存储装置、可移动磁盘存储装置、闪存、随机存取存储器(RAM-SRAM、EDORAM、SDRAM、DDR SDRAM、RAMBUS RAM等)、只读存储器(PROM、EEPROM等)等。计算机系统900中的存储器不限于诸如存储器920的主存储器。相反,计算机系统900还可以包括其它形式的存储装置,诸如处理器子系统980中的高速缓冲存储器和I/O设备950上的辅助存储装置(例如,硬驱动器、存储阵列等)。在一些实施方案中,这些其它形式的存储装置也可以存储可由处理器子系统980执行的程序指令。在一些实施方案中,当被执行时实现数据库110、数据库节点120、存储器中缓存130和概率数据结构140的程序指令可以被包括/存储在系统存储器920内。
根据各种实施方案,I/O接口940可以是被配置为耦合到其它设备并与其它设备通信的各种类型的接口中的任何一种。在一个实施方案中,I/O接口940是从前端到一个或多个后端总线的桥芯片(例如,南桥)。I/O接口940可以经由一个或多个对应的总线或其它接口耦合到一个或多个I/O设备950。I/O设备950的示例包括存储设备(硬盘驱动器、光盘驱动器、可移动闪存驱动器、存储阵列、SAN或它们相关联的控制器)、网络接口设备(例如,到局域网或广域网)或其它设备(例如,图形、用户界面设备等)。在一个实施方案中,计算机系统900经由网络接口设备950(例如,被配置为通过WiFi、蓝牙、以太网等进行通信)耦合到网络。
本申请主题的实现方式包括但不限于以下实施例1至20。
1.一种方法,包括:
通过第一数据库节点来处理涉及将一组数据库记录写入至所述第一数据库节点的存储器中缓存的数据库事务,其中,所述处理包括将与所述一组数据库记录对应的一组数据库键插入一组概率数据结构;以及
通过所述第一数据库节点将所述一组概率数据结构发送至第二数据库节点,以使得所述第二数据库节点能够确定是否从所述第一数据库节点请求与数据库键相关联的数据库记录。
2.如实施例1所述的方法,其中,将所述一组数据库键中给定的一个数据库键插入在所述一组概率数据结构中给定的一个概率数据结构中包括:
通过所述第一数据库节点将散列函数应用于所述给定的数据库键以导出与在所述给定的概率数据结构中包括的多个缓存行中特定的一个缓存行对应的散列值;以及
通过所述第一数据库节点将所述给定的数据库键插入在所述给定的概率数据结构的所述特定的缓存行中。
3.如实施例2所述的方法,其中,将所述给定的数据库键插入在所述给定的概率数据结构的所述特定的缓存行中包括:
通过所述第一数据库节点将一组散列函数应用于所述给定的数据库键以导出一组散列值;以及
通过所述第一数据库节点基于所述一组散列值设定所述特定的缓存行的一组位。
4.如实施例1所述的方法,其中,插入所述一组数据库键包括:
通过所述第一数据库节点将所述一组数据库键中的数据库键插入在所述一组概率数据结构的第一概率数据结构中;和
响应于所述第一概率数据结构包括定义阈值数量的数据库键,所述第一数据库节点将所述一组数据库键中的其余数据库键插入在所述一组概率数据结构中的不同的第二概率数据结构中。
5.如实施例1所述的方法,其中,所述一组概率数据结构中给定的一个概率数据结构与元数据相关联,所述元数据指示已经将数据库键插入到所述给定的概率数据结构中的活动事务的数量,其中,所述方法还包括:
通过所述第一数据库节点基于所述活动事务的数量是否指示针对所述给定的概率数据结构存在活动事务来确定是否可以清除所述给定的概率数据结构。
6.如实施例5所述的方法,其中,所述一组概率数据结构中的至少两个概率数据结构各自包括作为处理所述数据库事务的一部分而插入的相应数据库键,以及其中,所述方法还包括:
响应于提交与所述存储器中缓存相关的所述数据库事务,所述第一数据库节点针对所述至少两个概率数据结构中的每个概率数据结构递减与该概率数据结构相关联的活动事务的数量。
7.如实施例1所述的方法,还包括:
在向所述第二数据库节点发送所述一组概率数据结构之后,所述第一数据库节点将一个或多个附加概率数据结构添加至所述一组概率数据结构;
通过所述第一数据库节点从所述第二数据库节点接收对与特定数据库键相关联的数据库记录的最新版本的数据库记录请求;以及
通过所述第一数据库节点响应于所述数据库记录请求,而包括所述一个或多个附加概率数据结构。
8.如实施例7所述的方法,其中,所述一组概率数据结构中给定的一个概率数据结构与元数据相关联,所述元数据指示与所述给定的概率数据结构对应的最新事务提交,其中,所述方法还包括:
在所述包括之前,所述第一数据库节点基于所述一个或多个附加概率数据结构中的每个附加概率数据结构与相应的最新事务提交相关联来确定包括所述一个或多个附加概率数据结构,所述最新事务对应于比所述数据库记录请求中指定的特定事务提交更晚的时间点。
9.如实施例1所述的方法,还包括:
通过所述第一数据库节点将所述一组数据库记录中的一个或多个数据库记录从所述存储器中缓存写入至在所述第一和第二数据库节点之间共享的持久存储;以及
响应于所述写入,所述第一数据库节点确定是否清除所述一组概率数据结构中给定的一个概率数据结构。
10.根据实施例1所述的方法,其中,所述一组概率数据结构中的至少一个概率数据结构与来自多个不同事务的数据库键相关联。
11.一种具有存储在其上的程序指令的非暂态计算机可读介质,所述程序指令能够使第一计算机系统执行操作,所述操作包括:
处理涉及将一组数据库记录写入至所述第一计算机系统的存储器中缓存的数据库事务,其中,所述处理包括将与所述一组数据库记录对应的一组数据库键插入一组概率数据结构;以及
向第二计算机系统发送所述一组概率数据结构,以使所述第二计算机系统能够确定是否从所述第一计算机系统请求与特定数据库键相关联的数据库记录。
12.根据实施例11所述的非暂态计算机可读介质,其中,将所述一组数据库键中给定的一个数据库键插入在所述一组概率数据结构中给定的一个概率数据结构中包括:
将散列函数应用于所述给定的数据库键以导出散列值;
基于所述散列值选择所述给定的概率数据结构的多个缓存行之一;以及
将所述给定的数据库键插入到所述选择的缓存行中。
13.根据实施例11所述的非暂态计算机可读介质,其中,将所述一组数据库键插入到所述一组概率数据结构中包括:
将所述一组数据库键中的多个数据库键插入到能够包括至少阈值数量的数据库键的所述一组概率数据结构中的第一概率数据结构中;以及
在所述第一概率数据结构达到所述阈值数量之后,将所述一组数据库键中的其它数据库键插入到所述一组概率数据结构中的第二概率数据结构中。
14.根据实施例11所述的非暂态计算机可读介质,其中,所述一组概率数据结构中特定的一个概率数据结构包括指定活动事务计数的元数据,所述元数据指示已将数据库键插入到所述特定概率数据结构中的活动事务的数量,其中,处理所述数据库事务涉及将至少一个数据库键插入在所述特定概率数据结构中,以及其中,所述操作还包括:
响应于提交所述数据库事务,递减所述特定概率数据结构的所述活动事务计数。
15.如实施例11所述的非暂态计算机可读介质,其中,所述操作还包括:
将所述一组数据库记录从所述第一计算机系统的存储器中缓存写入至在第一和第二计算机系统之间共享的持久存储中,以及
响应于将所述一组数据库记录写入持久存储,确定是否清除所述一组概率数据结构中的一个或多个概率数据结构。
16.一种方法,包括:
通过第一数据库节点从第二数据库节点接收可用于确定给定数据库记录是否未存储在第二数据库节点的存储器中缓存中的一组概率数据结构;
通过第一数据库节点接收处理涉及特定数据库键的数据库事务的请求;以及
通过第一数据库节点基于所述一组概率数据结构确定是否从第二数据库节点请求与特定数据库键相关联的数据库记录的最新版本。
17.根据实施例16所述的方法,其中,所述一组概率数据结构中给定的一个概率数据结构包括多个缓存行,以及其中,所述确定包括:
通过第一数据库节点将散列函数应用于特定数据库键以导出散列值;
基于散列值,第一数据库节点选择给定的概率数据结构的多个缓存行之一;以及
通过第一数据库节点确定存储在缓存行中的信息是否指示特定数据库键。
18.如实施例17所述的方法,还包括:
响应于确定存储在缓存行中的信息不指示特定数据库键,第一数据库节点从由第一和第二数据库节点共享的持久存储请求数据库记录的最新版本。
19.如实施例17所述的方法,还包括:
响应于确定存储在缓存行中的信息指示特定数据库键,第一数据库节点向第二数据库节点发送对数据库记录的最新版本的请求;以及
通过第一数据库节点从第二数据库节点接收响应。
20.根据实施例19所述的方法,其中,所述请求识别与所述一组概率数据结构相关联的最新事务提交,以及其中,所述响应包括一组附加概率数据结构,其中的每个概率数据结构都与发生在由请求识别的最新事务提交之后的最新事务提交相关联。
尽管上面已经描述了特定实施方案,但是这些实施方案并不旨在限制公开文本的范围,即使仅针对特定特征描述了单个实施方案。除非另有说明,否则公开文本中提供的特征示例旨在说明性而非限制性的。上面的描述旨在覆盖对受益于公开文本的本领域技术人员显而易见的此类替代、修改和等效物。
公开文本的范围包括本文公开的任何特征或特征的组合(明确地或隐含地)或其任何概括,无论其是否减轻了本文所解决的任何或所有问题。因此,在对任何此类特征组合进行本申请(或要求其优先权的申请)的过程中,可以提出新的权利要求。特别地,参考所附权利要求,来自从属权利要求的特征可以与独立权利要求的特征组合,并且来自相应独立权利要求的特征可以以任何适当的方式组合,而不仅仅是以所附权利要求中列举的特定组合。
Claims (15)
1.一种方法,包括:
通过第一数据库节点处理涉及将一组数据库记录写入至所述第一数据库节点的存储器中缓存的数据库事务,其中所述处理包括将与所述一组数据库记录对应的一组数据库键插入一组概率数据结构;和
通过所述第一数据库节点将所述一组概率数据结构发送至第二数据库节点,以使得所述第二数据库节点能够确定是否从所述第一数据库节点请求与数据库键相关联的数据库记录。
2.根据权利要求1所述的方法,其中将所述一组数据库键中给定的一个数据库键插入在所述一组概率数据结构中给定的一个概率数据结构中包括:
通过所述第一数据库节点将散列函数应用于所述给定的数据库键,以导出与在所述给定的概率数据结构中包括的多个缓存行中特定的一个缓存行对应的散列值;和
通过所述第一数据库节点将所述给定的数据库键插入在所述给定的概率数据结构的所述特定的缓存行中。
3.根据权利要求2所述的方法,其中将所述给定的数据库键插入在所述给定的概率数据结构的所述特定的缓存行中包括:
通过所述第一数据库节点将一组散列函数应用于所述给定的数据库键,以导出一组散列值;和
通过所述第一数据库节点基于所述一组散列值设定所述特定的缓存行的一组位。
4.根据权利要求1至3中任一项所述的方法,其中插入所述一组数据库键包括:
通过所述第一数据库节点将所述一组数据库键中的数据库键插入在所述一组概率数据结构的第一概率数据结构中;和
响应于所述第一概率数据结构包括定义阈值数量的数据库键,所述第一数据库节点将所述一组数据库键中的其余数据库键插入在所述一组概率数据结构中的不同的第二概率数据结构中。
5.根据权利要求1至4中任一项所述的方法,其中所述一组概率数据结构中给定的一个概率数据结构与元数据相关联,所述元数据指示已经将数据库键插入在所述给定的概率数据结构中的活动事务的数量,其中所述方法还包括:
通过所述第一数据库节点基于所述活动事务的数量是否指示针对所述给定的概率数据结构存在活动事务而确定是否可以清除所述给定的概率数据结构。
6.根据权利要求5所述的方法,其中所述一组概率数据结构中的至少两个概率数据结构各自包括作为处理所述数据库事务的一部分而插入的相应数据库键,并且其中所述方法还包括:
响应于提交与所述存储器中缓存相关的数据库事务,所述第一数据库节点针对所述至少两个概率数据结构中的每个概率数据结构递减与所述这个概率数据结构相关联的活动事务的数量。
7.根据权利要求1至6中任一项所述的方法,还包括:
在向所述第二数据库节点发送所述一组概率数据结构之后,所述第一数据库节点将一个或多个附加概率数据结构添加至所述一组概率数据结构;
通过所述第一数据库节点从所述第二数据库节点接收对与特定数据库键相关联的数据库记录的最新版本的数据库记录请求;和
通过所述第一数据库节点响应于所述数据库记录请求包括所述一个或多个附加概率数据结构。
8.根据权利要求7所述的方法,其中所述一组概率数据结构中给定的一个概率数据结构与元数据相关联,所述元数据指示与所述给定的概率数据结构对应的最新事务提交,其中所述方法还包括:
在所述包括之前,所述第一数据库节点基于所述一个或多个附加概率数据结构中的每个附加概率数据结构与相应的最新事务提交相关联而确定包括所述一个或多个附加概率数据结构,所述最新事务对应于比所述数据库记录请求中指定的特定事务提交更晚的时间点。
9.根据权利要求1至8中任一项所述的方法,还包括:
通过所述第一数据库节点将所述一组数据库记录中的一个或多个数据库记录从所述存储器中缓存写入至在所述第一和第二数据库节点之间共享的持久存储;和
响应于所述写入,所述第一数据库节点确定是否清除所述一组概率数据结构中给定的一个概率数据结构。
10.根据权利要求1至9中任一项所述的方法,其中所述一组概率数据结构中的至少一个概率数据结构与来自多个不同事务的数据库键相关联。
11.一种计算机系统,包括:
至少一个处理器;和
存储器,其上存储有程序指令,所述程序指令能够由所述至少一个处理器执行以执行权利要求1至10中任一项所述的方法。
12.一种计算机可读介质,其上存储有程序指令,所述程序指令能够使得第一计算机系统执行包括如下的操作:
处理涉及将一组数据库记录写入至所述第一计算机系统的存储器中缓存的数据库事务,其中所述处理包括将与所述一组数据库记录对应的一组数据库键插入一组概率数据结构;和
向第二计算机系统发送所述一组概率数据结构,以使得所述第二计算机系统能够确定是否从所述第一计算机系统请求与特定数据库键相关联的数据库记录。
13.根据权利要求12所述的计算机可读介质,其中将所述一组数据库键中给定的一个数据库键插入在所述一组概率数据结构中给定的一个概率数据结构中包括:
将散列函数应用于所述给定的数据库键以导出散列值;
基于所述散列值选择所述给定的概率数据结构的多个缓存行中的一个;和
将所述给定的数据库键插入在所述选择的缓存行中。
14.根据权利要求12或13所述的计算机可读介质,其中将所述一组数据库键插入在所述一组概率数据结构中包括:
将所述一组数据库键中的多个数据库键插入在能够包括至少阈值数量的数据库键的所述一组概率数据结构中的第一概率数据结构中;和
在所述第一概率数据结构达到所述阈值数量之后,将所述一组数据库键中的其它数据库键插入在所述一组概率数据结构中的第二概率数据结构中。
15.根据权利要求12至14中任一项所述的计算机可读介质,其中,所述一组概率数据结构中特定的一个概率数据结构包括指定活动事务计数的元数据,所述元数据指示已经将数据库键插入在所述特定概率数据结构中的活动事务的数量,其中处理所述数据库事务涉及将至少一个数据库键插入在所述特定概率数据结构中,并且其中所述操作还包括:
响应于提交所述数据库事务,递减所述特定概率数据结构的所述活动事务计数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/777,870 | 2020-01-30 | ||
US16/777,870 US11514015B2 (en) | 2020-01-30 | 2020-01-30 | Reducing requests using probabilistic data structures |
PCT/US2021/013623 WO2021154516A1 (en) | 2020-01-30 | 2021-01-15 | Reducing requests using probabilistic data structures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114207602A true CN114207602A (zh) | 2022-03-18 |
Family
ID=74495110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180004842.2A Pending CN114207602A (zh) | 2020-01-30 | 2021-01-15 | 使用概率数据结构减少请求 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11514015B2 (zh) |
EP (1) | EP3991057A1 (zh) |
JP (1) | JP7450735B2 (zh) |
CN (1) | CN114207602A (zh) |
WO (1) | WO2021154516A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737279B (zh) * | 2020-08-24 | 2020-12-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的业务处理方法、装置、设备及存储介质 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085895B2 (en) | 2003-09-05 | 2006-08-01 | International Business Machines Corporation | Apparatus, system, and method flushing data from a cache to secondary storage |
US20060041724A1 (en) * | 2004-08-17 | 2006-02-23 | Steely Simon C Jr | Locked cache line sharing |
US20080155229A1 (en) * | 2006-12-21 | 2008-06-26 | Kevin Scott Beyer | System and method for generating a cache-aware bloom filter |
US10055468B2 (en) * | 2007-04-30 | 2018-08-21 | Wolfram Research, Inc. | Access to data collections by a computational system |
US8352421B2 (en) | 2008-05-28 | 2013-01-08 | Red Hat, Inc. | Recording distributed transactions using probabalistic data structures |
US20130173853A1 (en) * | 2011-09-26 | 2013-07-04 | Nec Laboratories America, Inc. | Memory-efficient caching methods and systems |
US8990243B2 (en) | 2011-11-23 | 2015-03-24 | Red Hat, Inc. | Determining data location in a distributed data store |
US11429675B2 (en) | 2018-06-20 | 2022-08-30 | Mongodb, Inc. | Systems and methods for managing transactional operation |
US8972337B1 (en) | 2013-02-21 | 2015-03-03 | Amazon Technologies, Inc. | Efficient query processing in columnar databases using bloom filters |
US9659050B2 (en) | 2013-08-06 | 2017-05-23 | Sybase, Inc. | Delta store giving row-level versioning semantics to a non-row-level versioning underlying store |
US20150186160A1 (en) | 2014-01-02 | 2015-07-02 | Advanced Micro Devices, Inc. | Configuring processor policies based on predicted durations of active performance states |
US20150206087A1 (en) * | 2014-01-17 | 2015-07-23 | VSK Ventures, LLC | Synchronous Location-Based Matching of Merchant Offers with High Propensity Consumers |
US10303806B2 (en) | 2014-08-20 | 2019-05-28 | Sachin Sinha | Method and system for providing concurrent buffer pool and page cache |
US20170091756A1 (en) | 2015-07-14 | 2017-03-30 | Fmr Llc | Point-to-Point Transaction Guidance Apparatuses, Methods and Systems |
US10372706B2 (en) * | 2015-07-29 | 2019-08-06 | Oracle International Corporation | Tracking and maintaining expression statistics across database queries |
US10877956B2 (en) | 2015-11-24 | 2020-12-29 | Sap Se | Transactional cache invalidation for inter-node caching |
US10353895B2 (en) | 2015-11-24 | 2019-07-16 | Sap Se | Atomic visibility switch for transactional cache invalidation |
US11392644B2 (en) | 2017-01-09 | 2022-07-19 | President And Fellows Of Harvard College | Optimized navigable key-value store |
US11386065B2 (en) | 2017-01-31 | 2022-07-12 | Salesforce.Com, Inc. | Database concurrency control through hash-bucket latching |
US10872066B2 (en) | 2017-06-27 | 2020-12-22 | Salesforce.Com, Inc. | Systems and methods of database tenant migration |
US10592353B2 (en) | 2017-06-27 | 2020-03-17 | Salesforce.Com, Inc. | Systems and methods of restoring a dataset of a database for a point in time |
WO2019144100A1 (en) | 2018-01-22 | 2019-07-25 | President And Fellows Of Harvard College | Key-value stores with optimized merge policies and optimized lsm-tree structures |
US10691693B2 (en) | 2018-01-30 | 2020-06-23 | Salesforce.Com, Inc. | Cache for efficient record lookups in an LSM data structure |
-
2020
- 2020-01-30 US US16/777,870 patent/US11514015B2/en active Active
-
2021
- 2021-01-15 JP JP2022546342A patent/JP7450735B2/ja active Active
- 2021-01-15 EP EP21702836.4A patent/EP3991057A1/en active Pending
- 2021-01-15 CN CN202180004842.2A patent/CN114207602A/zh active Pending
- 2021-01-15 WO PCT/US2021/013623 patent/WO2021154516A1/en unknown
-
2022
- 2022-11-28 US US18/059,274 patent/US20230090835A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230090835A1 (en) | 2023-03-23 |
US20210240687A1 (en) | 2021-08-05 |
JP7450735B2 (ja) | 2024-03-15 |
EP3991057A1 (en) | 2022-05-04 |
JP2023511743A (ja) | 2023-03-22 |
WO2021154516A1 (en) | 2021-08-05 |
US11514015B2 (en) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US10564850B1 (en) | Managing known data patterns for deduplication | |
EP2478442B1 (en) | Caching data between a database server and a storage system | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
JP2021513176A (ja) | Lsmデータ構造内の効率的なレコードルックアップのためのキャッシュ | |
CN110998557A (zh) | 通过分布式存储器的高可用性数据库 | |
US8499004B2 (en) | File system with optimistic I/O operations on shared storage | |
CN114281762B (zh) | 一种日志存储加速方法、装置、设备及介质 | |
US20130290636A1 (en) | Managing memory | |
WO2016119597A1 (zh) | Oltp集群数据库中页面查询方法及数据处理节点 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
US20230090835A1 (en) | Reducing requests using probabilistic data structures | |
US8732404B2 (en) | Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
US10642745B2 (en) | Key invalidation in cache systems | |
US9824114B1 (en) | Multiple concurrent cursors for file repair | |
CN112867999B (zh) | 基于版本的表锁定 | |
US11288238B2 (en) | Methods and systems for logging data transactions and managing hash tables | |
CN115469810A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
US11526474B2 (en) | Reducing requests using probabilistic data structures | |
US20170318114A1 (en) | Methods for managing multi-level flash storage and devices thereof | |
US20240193186A1 (en) | Database layered filtering | |
CN118132598B (zh) | 基于多级缓存的数据库数据处理方法及设备 | |
CN114207599A (zh) | 三维概率数据结构 | |
CN117827102A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |