CN111886590A - 多进程环境中的索引管理 - Google Patents
多进程环境中的索引管理 Download PDFInfo
- Publication number
- CN111886590A CN111886590A CN201980019313.2A CN201980019313A CN111886590A CN 111886590 A CN111886590 A CN 111886590A CN 201980019313 A CN201980019313 A CN 201980019313A CN 111886590 A CN111886590 A CN 111886590A
- Authority
- CN
- China
- Prior art keywords
- index
- log
- state
- entry
- processes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 171
- 230000008569 process Effects 0.000 claims abstract description 140
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/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/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling 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
-
- 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/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
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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
用于管理由多个进程共享的索引的系统和方法。一种方法包括利用一个进程来读取处于第一状态下的索引,以及保持由所述进程对处于第一状态下的索引执行的操作的日志。所述日志中所包含的每个操作包括创建操作或删除操作。所述方法还包括:响应于预定事件,应用所述多个进程中的一个进程的日志以更新所述索引。应用所述日志包括:针对所述日志中所包含的指定包含在处于所述第二状态下的索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目,以及忽略所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作。
Description
技术领域
在本文中所描述的实施例涉及管理由多个进程共享的索引。
发明内容
软件进程访问被存储在存储介质中的数据,诸如文件系统中的文件。为了快速并且有效率地访问该数据,可以创建将独有的关键字映射至所存储的数据的全局索引。例如,在存在跨多个当前运行的进程的工作分割的系统中,常常创建索引来查找被分割的数据集。例如,在进程管理所存储的数据的系统中,可以创建全局索引,以保持什么数据在该系统上可用,从而实现对数据的恰当路由和一致管理。
对这样的索引进行管理的一项挑战在于:如何在多个进程以最低延迟和锁定影响来访问全局索引的情况下保持全局索引,同时保持该全局索引的原子性、一致性、隔离性和持久性(ACID)保证。相应地,在本文中所描述的实施例使用多进程日志记录索引解决了该技术问题以及其他技术问题。
例如,一个实施例提供了一种用于管理由多个进程共享的索引的系统。所述系统包括被配置为执行所述多个进程的至少一个电子处理器。所述至少一个电子处理器被配置为针对所述多个进程中的每个进程保持将由所述多个进程中的每个进程对处于第一状态下的索引执行的操作的日志。所述索引中的每个条目包括关键字和关联值,并且针对所述多个进程中的一个进程的日志中所包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字。所述至少一个电子处理器还被配置为:响应于预定事件而应用所述多个进程中的一个进程的日志,以更新所述索引。应用所述日志包括:(a)利用所述多个进程中的一个进程来读取处于第二状态下的索引,(b)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个删除操作从所述索引中删除现有条目,(c)针对所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个创建操作向所述索引添加新条目,(d)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目,以及(e)忽略所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个删除操作。
另一实施例提供了一种用于管理由至少一个电子处理器执行的多个进程所共享的索引的方法。所述方法包括:利用所述至少一个电子处理器针对所述多个进程中的一个进程来读取处于第一状态下的索引,其中,所述索引中的每个条目包括关键字和关联值;以及利用所述至少一个电子处理器保持将由所述多个进程中的一个进程对处于第一状态下的索引执行的操作的日志。所述日志中所包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字。所述方法还包括:利用所述至少一个电子处理器响应于预定事件而应用所述多个进程中的一个进程的日志,以更新所述索引。应用所述日志包括:(a)利用所述多个进程中的一个进程来读取处于第二状态下的索引,(b)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个删除操作从所述索引中删除现有条目,(c)针对所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个创建操作向所述索引添加新条目,(d)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目,以及(e)忽略所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个删除操作。
又一实施例提供了一种存储有指令的非瞬态计算机可读介质,所述指令能由至少一个电子处理器运行以执行一组功能。所述一组功能包括:利用多个进程中的一个进程来读取处于第一状态下的索引,其中,所述索引中的每个条目包括关键字和关联值,并且所述索引在所述多个进程之间共享。所述一组功能还包括:利用所述多个进程中的一个进程来保持将由所述多个进程中的一个进程对处于第一状态下的索引执行的操作的日志,其中,所述日志中是包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字;以及响应于预定事件而应用所述多个进程中的一个进程的日志,以更新所述索引。应用所述日志包括:(a)利用所述多个进程中的一个进程来读取处于第二状态下的索引,(b)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个删除操作从所述索引中删除现有条目,(c)针对所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个创建操作向所述索引添加新条目,(d)针对所述日志中所包括的指定包含在处于第二状态下的索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目,以及(e)忽略所述日志中所包括的指定未包含在处于第二状态下的索引的条目中的关键字的每个删除操作。
附图说明
图1示意性图示了根据一个实施例的包括多个当前运行的进程的系统。
图2是图示了根据一个实施例的用于管理由图1的系统的多个进程共享的索引的方法的流程图。
图3图示了根据一个实施例的多个进程使用图2的方法访问索引的示例。
具体实施方式
在下文的描述和附图中描述和例示了一个或多个实施例。这些实施例并不限于在本文中所提供的具体细节,而是可以按照各种方式对这些实施例进行修改。此外,可能存在本文中未描述的其他实施例。同样地,在本文中被描述为由一个部件执行的功能可以按照分布式方式由多个部件来执行。类似地,由多个部件执行的功能可以被合并并且由单个部件来执行。类似地,被描述为执行特定功能的部件也可以执行在本文中未描述的额外功能。例如,按照特定方式“配置”的设备或结构可以是至少按照该方式来配置的,但是也可以是按照未列举出的方式来配置的。此外,在本文中所描述的一些实施例可以包括被配置为通过运行被存储在非瞬态计算机可读介质上的指令来执行所描述的功能的一个或多个电子处理器。类似地,在本文中所描述的实施例可以被实施为存储指令的非瞬态计算机可读介质,所述指令能由一个或多个电子处理器运行,以执行所描述的功能。如在本申请中所使用的,“非瞬态计算机可读介质”包括所有计算机可读介质,但是不包含瞬态传播信号。相应地,非瞬态计算机可读介质可以包括例如:硬盘、CD-ROM、光学存储设备、磁存储设备、ROM(只读存储器)、RAM(随机存取存储器)、寄存器存储器、处理器高速缓存或者其任意组合。
此外,在本文中所采用的措辞和术语是出于描述的目的,而不应当被认为构成限制。例如,本文中对“包括”、“包含”、“含有”、“具有”以及其变型的使用意在涵盖列举于其后的项目及其等价方案以及额外项目。术语“连接”和“耦接”是从广义上使用的,并且涵盖直接或间接地连接和耦接两者。此外,“连接”和“耦接”并不局限于物理和机械连接或耦接,而是能够包括电连接或耦接,不管其是直接的还是间接的。另外,可以使用有线连接、无线连接或者其组合来执行电子通信和通知,并且可以直接地或者通过一个或多个中间设备经由各种类型的网络、通信信道和连接来传输电子通信和通知。此外,诸如第一和第二、顶部和底部等的关系术语在本文当中可以唯独用于将一个实体或动作与另一实体或动作区分开,而不必要求或暗示在这样的实体或动作之间有任何实际的这样的关系或顺序。
如上文所描述的,可以生成索引,以管理在多个进程中对所存储的数据的访问。例如,客户端设备可以经由云服务来访问数据,并且可以将所访问数据的本地副本存储到所述客户端设备上。由所述客户端设备运行的多个进程可能需要访问所述本地副本,并且可能每者都通过全局索引来访问所述数据。尽管全局索引提供了对本地存储数据的快速访问,但是必须对全局索引的访问和操纵进行管理,以防止冲突和延迟。
一般而言,这些问题是通过跨所有进程锁定对全局索引的所有访问或者在发生冲突时重新尝试事务而解决的。由于增加的输入/输出使用和处理使用的原因,这两种解决方案都存在性能方面的问题。由于事务的意外重试以及与这样的重试相关联的业务逻辑的原因,这些解决方案也能够导致错误。
相应地,在本文中所描述的系统和方法提供了一种多进程日志记录索引,其中,每个进程都保存相对于全局索引执行的活动的日志。周期性地,将所述日志应用于全局索引。因此,多进程日志记录索引解决了跨对所述全局索引的访问的冲突,并且支持非原地(not-in-place)索引,这是固态存储器(驱动器或盘)(SSD)友好的。
例如,图1示意性图示了包括多个当前运行的进程的系统100。如在图1中所图示的,系统100包括客户端设备102。客户端设备102是计算设备,诸如,例如台式计算机、膝上型电脑、平板电脑、智能电话、智能可穿戴物或智能电视等。
客户端设备102包括输入-输出接口105、电子处理器110和存储器115。输入-输出接口105、电子处理器110和存储器115无线地、通过有线通信信道或总线、或者通过这些方式的组合进行通信。应当理解,客户端设备102可以按照各种配置包括除了在图1所图示的那些部件之外的额外部件。例如,在一些实施例中,客户端设备102包括多个电子处理器、多个存储模块、多个输入-输出接口105等。
输入-输出接口105允许客户端设备102与通信网络、外围设备等通信。例如,输入-输出接口105可以包括以太网端口、通用串行总线(USB)端口以及其他通信端口。电子处理器110可以是微处理器、专用集成电路(ASIC)等。电子处理器110一般被配置为运行软件指令,以执行包括在本文中所描述的功能在内的一组功能。存储器115包括非瞬态计算机可读介质并且存储包括能由电子处理器110运行的指令在内的数据。例如,如在图1中所图示的,存储器115存储操作系统120。操作系统120由电子处理器110运行,以管理客户端设备102的资源,包括管理对本地存储的数据的访问,所述数据包括被存储在存储器115以及客户端设备102的其他存储模块中的数据。
例如,如上文所描述的,操作系统120可以被配置为生成针对被存储在存储器115、客户端设备102的其他存储模块或者其组合中的数据(例如,分割的数据集)的索引。如在图1中所图示的,索引125可以存储针对所存储数据的独有的关键字(指针)、关于所存储的数据的元数据等。在一些实施例中,索引125中的每个条目为主关键字。同样地,在创建多个索引的实施例中,可以将每个索引串行化成文件系统中的单独的文件。该分离允许对每个索引的独立的操作,而不影响其他索引。
相应地,如上文所描述的,索引125允许各进程(由电子处理器110执行的)快速地找到数据,诸如存储在客户端设备102上的分割的数据集。例如,除了操作系统120之外,客户端设备102可以存储能由电子处理器110运行的一个或多个软件应用程序(在本文中又被称为应用程序)。应用程序127可以包括生产力应用程序(诸如文字处理应用、幻灯片演示应用程序等)、游戏应用程序、媒体应用程序或者浏览器应用程序等。由电子处理器110运行的这些应用程序127的每个实例为一个进程,并且电子处理器110支持当前运行的进程,其中,各进程可以包括系统应用程序127的多个实例、不同应用程序127的实例或者其组合。
还是如上文所描述的,必须对索引125进行管理,以在限制延迟的同时确保数据完整性。图2是图示了根据一个实施例的用于在客户端设备102上的多个当前正在运行的进程之间对索引125进行管理的方法200的流程图。方法200被描述为由正在客户端设备102上运行的进程(由电子处理器110执行)来执行。然而,应当理解,方法200或者其部分可以由超过一个进程、操作系统120或者其组合来执行。例如,在一些实施例中,方法200是由操作系统120将其作为文件输入/输出(IO)堆栈的部分来执行的。
如在图2中所图示的,方法200包括利用多个进程中的一个进程来读取处于第一状态下的索引125(在框205处)。如上文所描述的,索引125中的每个条目包括关键字和关联值。读取索引125的进程存储索引125的副本,所述进程使用该副本来访问数据。所述进程还保存由该进程对索引125从第一状态(最后一次读取)开始执行的操作(变化)的日志(在框210处)。由进程相对于索引125执行的操作限于读取操作、创建操作和删除操作。不允许任何更新操作。相应地,在日志中将对索引125的任何更新能表示为删除操作(以删除要更新的现有条目)和随后的创建操作(以利用更新条目来添加新条目)。存储在该日志中的每个删除操作指定针对索引条目的关键字,并且存储在所述日志中的每个创建操作指定针对索引条目的关键字以及针对该条目的关联值。
响应于预定事件,所述进程将所述日志应用于索引125,以更新索引125(在框215处)。所述预定事件可以是预定频率,例如,每100毫秒。应当理解,可以使用变化的频率对索引125应用日志,从而对数据完整性和资源使用两者进行管理。备选地或另外地,所述预定事件可以是由进程所做的操作,诸如进程的关闭或终止。
由于从该进程最后一次读取索引125开始索引125可能已经发生了变化,因而当向所述索引应用所述日志时,所述进程可能经历冲突。例如,如在图2中所图示的,向索引应用日志包括读取索引125的当前状态(第二状态)(在框220处)以及顺次地(时间方面)向索引的当前状态应用日志记录的操作。具体地,当日志包括针对存在于索引125的当前状态中的条目的删除操作时(所述删除操作指定包含在索引125的当前状态中的关键字),所述进程从索引125的当前状态中删除该现有条目(在框225处)。类似地,当日志包括针对不存在于索引125的当前状态中的条目的创建操作时(所述创建操作指定索引125的当前状态中不包括的关键字),所述进程如日志所指定的向索引125添加新条目(在框230处)。
然而,当日志包括针对已经存在于索引125的当前状态中的新条目的创建操作时(所述创建操作指定存在于索引125的当前状态中的关键字),所述进程如所述日志所指定的从索引125中删除该现有条目并且向索引125添加新条目(在框235处)。同样地,当所述日志包括针对不存在于索引125的当前状态中的条目的删除操作时(所述删除操作指定不存在于索引125的当前状态中的关键字),所述进程忽略被包含在所述日志中的删除操作。
在一些实施例中,当更新索引时,不需要对索引进行原地更改。因此,可以使用对索引的完全重写(其倾向于更具有SSD友好性并且具有自然原子性)或者原地改变(其倾向于对旋转介质更友好)来实施对索引的更新。同样地,对特定索引的数据感兴趣的每个进程都可能对该索引的变化感兴趣。相应地,在一些实施例中,可以使用操作系统事件来指示对索引做出的改变。侦听这样的事件的任何进程能够重新加载(重新读取)该索引,并且在必要的情况下相应地更新其状态。
图3图示了使用方法200来管理使用索引305的多个进程300(包括进程A、进程B和进程C)的示例。如在图3中所图示的,索引305包括至少一个条目,并且每个条目包括关键字(例如,独有的数字标识符)和关联值(例如,文本串、指针或数值等)。如在图3中所图示的,在第一状态305a中,索引305包括第一条目(1,a)和第二条目(2,b)。在第二状态305b中,索引305包括第二条目(2,b)和第三条目(3,c)。在第三状态305c中,索引305包括第二条目(2,b)和第四条目(3,d)。在第四状态305c中,索引305包括第二条目(2,b)和第四条目(3,d)。
如上文所描述的,对索引305感兴趣的多进程环境中的每个进程读取索引305的当前状态,并且使用索引305的所读取的版本来访问所需的数据。同样地,随着每个进程改变索引305,所述进程保存作为创建操作、删除操作或者其组合的这样的改变的日志。如上文所描述的,不是直接将改变应用于索引305,而是日志允许进程跟踪该进程将对索引305所做的改变,这允许其他进程更自由地读取和访问索引305。换言之,通过使用日志,进程不对索引305做原地改变,而是响应于预定事件而将日志应用于索引305,所述预定事件能够被配置为在数据完整性与资源使用之间进行平衡。相应地,每个日志是索引305的Δ(delta),直到所述日志被应用为止。
例如,图3图示了与进程A相关联的日志310,其跟踪进程A从索引305的第一状态(由进程A执行的对索引305的最后一次读取)起对索引305的改变。日志310包括指定关键字“1”的删除操作以及指定关键字“3”和关联值“c”的创建操作。如在图3中所图示的,被添加到日志的每个删除操作指定针对索引305中的条目的关键字,并且被添加到日志的每个创建操作指定针对索引305中的条目的关键字和关联值。如上文所提到的,不允许更新操作。因而,在日志中将进程对索引305执行的任何更新跟踪为删除操作和创建操作。
在发生预定事件时,进程A向索引305的当前状态应用日志310,以提交由进程A对索引305所做的改变。具体地,进程A读取索引305的当前状态(第二状态),并且顺次地向索引305的当前状态应用包含在日志310中的每个操作。因此,进程A删除索引305的当前状态中的具有关键字“1”的现有条目,并且向索引305的当前状态添加具有关键字“3”和关联值“c”的新条目。在一些实施例中,在对索引305的当前状态应用所述日志之后,进程A开始新的日志以跟踪对索引305的新的当前状态的操作。
如在图3中所图示的,进程B还保持日志315,日志315包括指定关键字“3”和关联值“d”的创建操作。当进程B向索引305的当前状态应用日志315时,索引305已经从进程B读取索引305开始发生了改变(基于进程A所做的改变),因此存在冲突。例如,日志315包括指定关键字“3”和关联值“d”的创建操作,但是索引305的当前状态(第三状态)已经包括了具有关键字“3”的条目。因而,当对索引305的当前状态应用该创建操作时,进程B从索引305中删除具有关键字“3”的现有条目,并且如由日志315所指定的将具有关键字“3”和关联值“d”的新条目添加至索引305。
类似地,当进程C尝试向索引305的当前状态(第四状态)应用日志320时,索引305的当前状态不再包括具有关键字“4”的条目。因此,进程C忽略了日志320中包含的指定关键字“4”的删除操作(转化成无操作(NOP))。
相应地,不仅每进程日志允许各进程跟踪对索引125的更新而不是必须等待对索引的访问才能施加改变,而且通过使操作局限于删除操作和创建操作并且应用上述冲突逻辑,多个进程能够有效率地并且准确地使用索引。
在多进程环境中,对索引125的访问(以读取、写入或者这两者)可以限于每次一个进程。相应地,只要进程正在对索引125进行读取或写入,那么可以对所有其他进程锁定索引125。然而,为了进一步降低获取对索引125的访问的延迟,操作系统120可以利用读写锁定语义将只读操作与读写操作分开,以提供对索引125的操作的视图串行化及相关联的一致结果。
例如,可以将操作系统120配置为生成针对索引125的一个或多个互斥锁(mutex)。互斥锁(又被称为互相排斥对象)是控制进程对数据的访问的对象,诸如限制每次仅能由不超过一个进程来访问数据。相应地,互斥锁通过每次仅允许一个进程访问数据来保持数据的完整性。因此,进程不能够访问正在被另一进程改变或使用的数据,直到该另一进程完成为止,这保持了数据完整性。
在一些实施例中,操作系统120生成针对索引125的读互斥锁和写互斥锁,以出于读取目的而提供由两个或更多个进程对索引125的同时访问(以限制读取操作的忙等待),同时强制施行针对写操作的可靠等待。例如,所述读互斥锁出于读取目的而控制对索引的访问,并且所述写互斥锁出于写入目的而控制对索引的访问。在一些实施例中,任何数量的进程都可以通过读互斥锁同时地访问索引125。例如,当一个进程想要访问索引125时,所述读互斥锁可以使指示当前正在读取该数据的进程的数量的计数器加一,并且一旦该进程已经完成对该数据的读取就使该计数器减一,以跟踪当前正在读取该索引的进程的数量。所述写互斥锁可以使用该计数器来确定何时应当允许对索引125的写入。换言之,当一个进程仍然在经由读互斥锁来读取索引125时,所述写互斥锁可以防止任何其他进程对索引125进行写入。
所述写互斥锁允许进程写(或改变)索引125。例如,当进程需要改变与索引125中包含的关键字相关联的数据时,诸如需要应用日志时,所述进程经由写互斥锁来访问索引125,并且相应地更新索引125。在该进程对索引125进行写入的同时,另一进程被剥夺向索引125进行写入的权力。相应地,一个进程在另一索引正在对索引125进行读或写时尝试对索引125写入则可能经历延迟。然而,如上文指出的,通过使用互斥锁将只读请求与读写请求分开来缩短访问索引125的总体延迟。
因此,在本文中所描述的实施例提供了用于管理在多个进程之间共享的索引的方法和系统,其管理方式为针对每个进程日志记录关于现有索引的Δ,直到该日志被应用为止。使用描述对索引的改变的日志允许将冲突范围缩小至对索引的实际修改(与一般的写或读冲突相比)。应当理解,在本文中所描述的方法和系统并不限于单个计算设备上的多进程环境,而是可以被用于管理由在多个计算设备上执行的多个进程使用的索引,这些计算设备包括(例如)在云计算环境等当中操作的计算设备。类似地,可以在进程级、线程级或者其组合上使用在本文中所描述的方法和系统。
一些实施例的各种特征和优点将在下述权利要求中阐明。
Claims (15)
1.一种用于管理由多个进程共享的索引的系统,所述系统包括:
至少一个电子处理器,其被配置为执行所述多个进程,其中,所述至少一个电子处理器被配置为:
针对所述多个进程中的每个进程,保持将由所述多个进程中的每个进程对处于第一状态下的所述索引执行的操作的日志,所述索引中的每个条目包括关键字和关联值,并且针对所述多个进程的一个进程的日志中所包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字;
响应于预定事件而应用所述多个进程中的所述一个进程的所述日志以更新所述索引,其中,应用所述日志包括:
利用所述多个进程中的所述一个进程来读取处于第二状态下的所述索引,
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作从所述索引中删除现有条目,
针对所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作向所述索引添加新条目,
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目,以及
忽略所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作。
2.根据权利要求1所述的系统,其中,所述至少一个电子处理器被配置为:通过将对所述索引的任何更新操作表示为删除操作和随后的创建操作,而保持针对所述多个进程中的每个进程的操作的所述日志。
3.根据权利要求1所述的系统,其中,所述至少一个电子处理器被配置为:经由互斥锁来读取处于所述第一状态下的所述索引。
4.根据权利要求1所述的系统,其中,所述至少一个电子处理器被配置为经由读互斥锁来读取处于所述第一状态下的所述索引,并且被配置为经由与所述读互斥锁分开的写互斥锁来读取处于所述第二状态下的所述索引。
5.一种管理由至少一个电子处理器执行的多个进程所共享的索引的方法,所述方法包括:
利用所述至少一个电子处理器针对所述多个进程中的一个进程来读取处于第一状态下的所述索引,所述索引中的每个条目包括关键字和关联值;
利用所述至少一个电子处理器来保持将由所述多个进程中的所述一个进程对处于所述第一状态下的所述索引执行的操作的日志,所述日志中所包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字;以及
响应于预定事件而利用所述至少一个电子处理器应用所述多个进程中的所述一个进程的所述日志以更新所述索引,其中,应用所述日志包括:
利用所述多个进程中的所述一个进程来读取处于第二状态下的所述索引;
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作从所述索引中删除现有条目;
针对所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作向所述索引添加新条目;
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目;以及
忽略所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作。
6.根据权利要求5所述的方法,其中,响应于所述预定事件而应用所述日志以更新所述索引包括:响应于所述多个进程中的所述一个进程的终止而应用所述日志以更新所述索引。
7.根据权利要求5所述的方法,其中,读取处于所述第一状态下的所述索引包括:在所述多个进程中的第二个进程读取处于所述第一状态下的所述索引的同时读取所述索引。
8.根据权利要求5所述的方法,还包括响应于应用所述日志以更新处于所述第二状态下的所述索引而生成事件,所述事件通知侦听进程重新加载更新后的所述索引。
9.一种存储指令的介质,所述指令能由至少一个电子处理器运行以执行一组功能,所述一组功能包括:
利用多个进程中的一个进程来读取处于第一状态的索引,所述索引中的每个条目包括关键字和关联值,并且所述索引在所述多个进程之间被共享;
利用所述多个进程中的所述一个进程来保持将由所述多个进程中的所述一个进程对处于所述第一状态下的所述索引执行的操作的日志,所述日志中所包含的每个操作包括创建操作或删除操作,并且每个操作指定关键字;以及
响应于预定事件而应用所述多个进程中的所述一个进程的所述日志以更新所述索引,其中,应用所述日志包括:
利用所述多个进程中的所述一个进程来读取处于第二状态下的所述索引;
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作从所述索引中删除现有条目;
针对所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作向所述索引添加新条目;
针对所述日志中所包含的指定包含在处于所述第二状态下的所述索引的条目中的关键字的每个创建操作从所述索引中删除现有条目并且向所述索引添加新条目;以及
忽略所述日志中所包含的指定未包含在处于所述第二状态下的所述索引的条目中的关键字的每个删除操作。
10.根据权利要求9所述的计算机可读介质,其中,保持操作的所述日志包括:将对所述索引的任何更新操作表示为删除操作和随后的创建操作。
11.根据权利要求9所述的计算机可读介质,其中,响应于所述预定事件而应用所述日志以更新所述索引包括:按照预定频率应用所述日志以更新所述索引。
12.根据权利要求9所述的计算机可读介质,其中,响应于所述预定事件而应用所述日志以更新所述索引包括:响应于所述多个进程中的所述一个进程的终止而应用所述日志以更新所述索引。
13.根据权利要求9所述的计算机可读介质,其中,读取处于所述第一状态下的所述索引包括:在利用所述多个进程中的第二个进程读取处于所述第一状态下的所述索引的同时读取所述索引。
14.根据权利要求9所述的计算机可读介质,其中,读取处于所述第一状态下的所述索引包括:经由互斥锁来读取处于所述第一状态下的所述索引。
15.根据权利要求9所述的计算机可读介质,其中,读取处于所述第一状态下的所述索引包括经由读互斥锁来读取处于所述第一状态下的所述索引,并且其中,读取处于第二状态下的所述索引包括经由与所述读互斥锁分开的写互斥锁来读取处于所述第二状态下的所述索引。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/923,193 US10776344B2 (en) | 2018-03-16 | 2018-03-16 | Index management in a multi-process environment |
US15/923,193 | 2018-03-16 | ||
PCT/US2019/021510 WO2019177914A1 (en) | 2018-03-16 | 2019-03-09 | Index management in a multi-process environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111886590A true CN111886590A (zh) | 2020-11-03 |
Family
ID=65995839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980019313.2A Pending CN111886590A (zh) | 2018-03-16 | 2019-03-09 | 多进程环境中的索引管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10776344B2 (zh) |
EP (1) | EP3765972A1 (zh) |
CN (1) | CN111886590A (zh) |
WO (1) | WO2019177914A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341285B1 (en) * | 1999-06-28 | 2002-01-22 | Lucent Technologies Inc. | Serial protocol for transaction execution in main-memory database systems |
US20050038810A1 (en) * | 1997-02-28 | 2005-02-17 | Brodersen Robert A. | Partially replicated distributed database with multiple levels of remote clients |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796999A (en) | 1994-04-15 | 1998-08-18 | International Business Machines Corporation | Method and system for selectable consistency level maintenance in a resilent database system |
-
2018
- 2018-03-16 US US15/923,193 patent/US10776344B2/en active Active
-
2019
- 2019-03-09 EP EP19714900.8A patent/EP3765972A1/en active Pending
- 2019-03-09 CN CN201980019313.2A patent/CN111886590A/zh active Pending
- 2019-03-09 WO PCT/US2019/021510 patent/WO2019177914A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038810A1 (en) * | 1997-02-28 | 2005-02-17 | Brodersen Robert A. | Partially replicated distributed database with multiple levels of remote clients |
US6341285B1 (en) * | 1999-06-28 | 2002-01-22 | Lucent Technologies Inc. | Serial protocol for transaction execution in main-memory database systems |
Also Published As
Publication number | Publication date |
---|---|
US10776344B2 (en) | 2020-09-15 |
US20190286728A1 (en) | 2019-09-19 |
EP3765972A1 (en) | 2021-01-20 |
WO2019177914A1 (en) | 2019-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018001135A1 (zh) | 处理数据库事务的方法、客户端和服务器 | |
US8161128B2 (en) | Sharing of data across disjoint clusters | |
US20140279871A1 (en) | System and method for providing near real time data synchronization | |
KR20140038991A (ko) | 가장 최근에 사용된 문서 목록들의 자동 동기화 | |
US10007548B2 (en) | Transaction system | |
US11327905B2 (en) | Intents and locks with intent | |
US9971822B1 (en) | Replicated state management using journal-based registers | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
US9183065B1 (en) | Providing access to an application programming interface through a named pipe | |
US10262024B1 (en) | Providing consistent access to data objects transcending storage limitations in a non-relational data store | |
US9390111B2 (en) | Database insert with deferred materialization | |
CN109213691B (zh) | 用于缓存管理的方法和设备 | |
US11853284B2 (en) | In-place updates with concurrent reads in a decomposed state | |
US20120185516A1 (en) | Computer data file merging based on file metadata | |
US9442860B2 (en) | Providing record level sharing (RLS) to individual catalogs | |
US9824114B1 (en) | Multiple concurrent cursors for file repair | |
CN111459882B (zh) | 分布式文件系统的命名空间事务处理方法和装置 | |
US20220261489A1 (en) | Capability management method and computer device | |
US20110191549A1 (en) | Data Array Manipulation | |
CN111886590A (zh) | 多进程环境中的索引管理 | |
US20180089086A1 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
US11403261B2 (en) | Isolation of concurrent read and write transactions on the same file | |
CN111143232A (zh) | 用于存储元数据的方法、设备和计算机程序产品 | |
CN115422188A (zh) | 表结构在线变更方法及装置、电子设备和存储介质 | |
AU2021390717B2 (en) | Batch job performance improvement in active-active architecture |
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 |