CN106021277A - 一种基于状态的无锁分布式acid一致性实现方法 - Google Patents
一种基于状态的无锁分布式acid一致性实现方法 Download PDFInfo
- Publication number
- CN106021277A CN106021277A CN201610277709.5A CN201610277709A CN106021277A CN 106021277 A CN106021277 A CN 106021277A CN 201610277709 A CN201610277709 A CN 201610277709A CN 106021277 A CN106021277 A CN 106021277A
- Authority
- CN
- China
- Prior art keywords
- state
- write
- affairs
- transaction journal
- implementation method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及网络技术领域,特别是一种基于状态的无锁分布式ACID一致性实现方法,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;步骤S102:暂存写入意图;步骤S103:读取写入意图;步骤S104:提交事务;步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。采用上述方法后,本发明的一种基于状态的无锁分布式ACID事务实现方法在具备分布式数据库的高可用、高扩展的情况下,提供数据的高一致性。
Description
技术领域
本发明涉及网络技术领域,特别是一种基于状态的无锁分布式ACID一致性实现方法。
背景技术
ACID是RDBMS的理论基石;
A原子(Atomiclty)事务原子性,指对一个事务要么完全提交要么完全回滚,保证提交成功的给数据库的和外部反应的一致。或者提交不成功,完全回滚,数据库完全没反应于外部;
C事务一致性(Consistency),一个事务执行前和执行后在数据库必须保证一致状态。
I隔离性(ioslation)事务独立,封闭,隔离性强度;数据库为了防止出现数据库读取不一致,可设置不同等级的事务的隔离性;
D持久性(Durabilty)数据永存,在事务完成以后,数据持久的保存在数据库之中,并不会被回滚。
在CAP理论下,大部分NOSQL数据库会牺牲ACID事务特性,同时会在C、A之间做选择;一般情况下,数据一致性均选取最终一致性。但是对于CAP有一个误解,那就是可能创建一个具有ACID事务能力的分布式数据库。
发明内容
本发明需要解决的技术问题提供一种在分布式环境下基于状态的无锁分布式ACID事务实现方法。
为解决上述的技术问题,本发明一种基于状态的无锁分布式ACID事务实现方法,包括以下步骤,
步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;
步骤S102:暂存写入意图;
步骤S103:读取写入意图;
步骤S104:提交事务;
步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。
进一步的,所述步骤S101中,所述事务记录包括事务UUID和事务的当前状态,所述事务的当前状态包括初始状态PENDING、终止状态ABORT或COMMIT,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMIT对应“ON”。
更进一步的,所述步骤S103为在读取时检查事务开关的状态;如果开关状态为为“OFF”,则返回该键的原值;如果开关状态为“ON”,则返回暂存值。
进一步的,所述步骤S102中写过程中准备多个数据库变更,将一个事务中的变更对应一个名为写入意图的结构。
更进一步的,所述步骤S102中一个值作为一个事务的一部分写入到一个键,生成一个写入意图;写入意图结构中包括知识事务记录存储位置的键。
采用上述方法后,本发明的一种基于状态的无锁分布式ACID事务实现方法在具备分布式数据库的高可用、高扩展的情况下,提供数据的高一致性。
附图说明
下面将结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明基于状态的无锁分布式ACID事务实现方法的流程图。
图2为本发明数据写入的流程图。
图3为本发明数据读取的流程图。
具体实施方式
如图1所示,本发明的一种基于状态的无锁分布式ACID一致性实现方法,包括以下步骤,
步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;当客户端请求写入数据时,写入进程会创建一个事务记录。事务记录包括事务UUID、事务的当前状态(PENDING为初始状态,ABORT或COMMIT为终止状态)。其中事务记录或事物开关,需按照顺序进行读/写操作,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMIT对应“ON”。
步骤S102:暂存写入意图,写进程会准备好多个数据库变更,但并不会覆盖任何现有值。为了暂存一个事务中的变更,本专利描述的方法使用了一个名为写入意图的结构。任何时候,一个值作为一个事务的一部分写入到一个键,它都会生成一个写入意图。写入意图结构中还包含指示事务记录存储位置的键。同时,就是任何键都有且仅有一个写入意图。
步骤S103:读取写入意图;如图3所示,对于任何有暂存值的键,在读取时都必须检查事务开关的状态。如果开关状态为“OFF”,则返回该键的原值;如果开关状态为“ON”,则返回暂存值。具体步骤如下:
(1)、如果现有写入意图对应的事务记录仍然处于PENDING状态,则将其置为ABORT状态;
(2)、清除现有的写入意图;
(3)、如果之前的事务已经COMMIT,那么清除操作会将暂存值升级为普通值; 否者,返回该键的原值。
步骤S104:提交事务,如图3所示,当写进程准备好事务中的所有变更后,它会打开开关(即将事务记录更新成COMMIT,开关状态置为“ON”)。事务生成的所有写入意图都会立即生效;之后发生的任何读取操作在看到事务已经提交后都会返回写入意图中的暂存值。另外,将事务记录的状态置为ABORT可以终止事务,之后发生的读取操作将忽略这个事务生成的写入意图。
步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。在事务完成后,系统会尽快清除暂存值。如果事务成功,那么暂存值会取代原值;如果失败,那么暂存值会被丢弃。总之,如果一个键没有写入意图,,那么读取操作就无需过滤,也就可以以适当的分布式方式完成。
虽然以上描述了本发明的具体实施方式,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离发明的原理和实质,本发明的保护范围仅由所附权利要求书限定。
Claims (5)
1.一种基于状态的无锁分布式ACID一致性实现方法,其特征在于,包括以下步骤,
步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;
步骤S102:暂存写入意图;
步骤S103:读取写入意图;
步骤S104:提交事务;
步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。
2.按照权利要求1所述的一种基于状态的无锁分布式ACID一致性实现方法,其特征在于:所述步骤S101中,所述事务记录包括事务UUID和事务的当前状态,所述事务的当前状态包括初始状态PENDING、终止状态ABORT或COMMIT,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMIT对应“ON”。
3.按照权利要求2所述的一种基于状态的无锁分布式ACID一致性实现方法,其特征在于:所述步骤S103为在读取时检查事务开关的状态;如果开关状态为为“OFF”,则返回该键的原值;如果开关状态为“ON”,则返回暂存值。
4.按照权利要求1所述的一种基于状态的无锁分布式ACID一致性实现方法,其特征在于:所述步骤S102中写过程中准备多个数据库变更,将一个事务中的变更对应一个名为写入意图的结构。
5.按照权利要求4所述的一种基于状态的无锁分布式ACID一致性实现方法,其特征在于:所述步骤S102中一个值作为一个事务的一部分写入到一个键,生成一个写入意图;写入意图结构中包括知识事务记录存储位置的键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610277709.5A CN106021277A (zh) | 2016-04-27 | 2016-04-27 | 一种基于状态的无锁分布式acid一致性实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610277709.5A CN106021277A (zh) | 2016-04-27 | 2016-04-27 | 一种基于状态的无锁分布式acid一致性实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106021277A true CN106021277A (zh) | 2016-10-12 |
Family
ID=57081557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610277709.5A Pending CN106021277A (zh) | 2016-04-27 | 2016-04-27 | 一种基于状态的无锁分布式acid一致性实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106021277A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491766A (zh) * | 2018-10-10 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 一种事务消息的投递方法、装置、系统及消息服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理系统 |
CN105005535A (zh) * | 2015-07-22 | 2015-10-28 | 清华大学 | 一种分布式闪存事务处理方法 |
-
2016
- 2016-04-27 CN CN201610277709.5A patent/CN106021277A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理系统 |
CN105005535A (zh) * | 2015-07-22 | 2015-10-28 | 清华大学 | 一种分布式闪存事务处理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491766A (zh) * | 2018-10-10 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 一种事务消息的投递方法、装置、系统及消息服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077382B (zh) | 在多租户应用服务器环境中进行事务恢复的系统和方法 | |
EP3117348B1 (en) | Systems and methods to optimize multi-version support in indexes | |
JP6553822B2 (ja) | 分散システムにおける範囲の分割および移動 | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US10860539B2 (en) | De-duplication-based remote replication method, and apparatus | |
US20170060703A1 (en) | Recovery processing for database in persistent system | |
EP1770512A2 (en) | Method and system for updating software | |
US7233947B2 (en) | Timestamping in databases | |
CN105574187B (zh) | 一种异构数据库复制事务一致性保障方法及系统 | |
CN104021145B (zh) | 一种混合业务并发访问的方法和装置 | |
US10191851B2 (en) | Method for distributed transaction processing in flash memory | |
CN104166605B (zh) | 基于增量数据文件的数据备份方法及系统 | |
CN104793988A (zh) | 跨数据库分布式事务的实现方法和装置 | |
CN114925084B (zh) | 分布式事务处理方法、系统、设备及可读存储介质 | |
CN104854582B (zh) | 存储高效、更新优化的事务型全文索引视图维护的方法和系统 | |
CN105159991B (zh) | 一种保持数据一致性的方法、装置、系统和应用服务器 | |
CN105426469A (zh) | 一种数据库集群元数据管理方法及系统 | |
CN105912384A (zh) | 流程引擎事务处理方法及装置 | |
CN105027067A (zh) | 用于存储系统中的基于对象的事务的方法和系统 | |
US9207966B2 (en) | Method and system for providing a high-availability application | |
WO2016032548A1 (en) | Providing transactional support to a data storage system | |
CN106021277A (zh) | 一种基于状态的无锁分布式acid一致性实现方法 | |
CN106959989A (zh) | 主备数据库的同步方法及装置 | |
CN103761156B (zh) | 一种针对文件系统的在线修复方法 | |
CN109446258A (zh) | 一种分布式数据存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161012 |
|
RJ01 | Rejection of invention patent application after publication |