OceanBase如何保证写的原子性

简介: OceanBase如何保证写的原子性

  OceanBase如何保证写的原子性

  分布式数据库技术具体难在哪里呢?简单说,要想账头一分钱都不错,数据库要支持事务,事务拥有ACID原则,这四个字母分别代表:A原子性、C一致性、I隔离性、D持久性。

  原子性:表示事务中的多个操作要么全部完成,要么全部失败,不会出现中间状态,例如A转给B100块钱,A账户扣除100块的同时,B账户必须增加100块钱。这两件事必须像一个原子一样紧紧抱在一起,决不允许“A已经扣钱,B还没加钱”的事情发生。

  一致性:A转给B100块钱,转账完成的一瞬间,A瞬间再查询自己的最新余额,必须显示已经扣除100之后的金额,B必须瞬间查到已经加上100块之后的余额。所有的账目在任何一个时间切面必须完完全全对得上。

  隔离性:表示多个并发事务之间不互相影响,A转给B100块钱,不能对C有任何影响。

  持久性:表示事务一旦成功就不会丢失,A转给B100块钱,这笔转账一旦完成,就永远生效。

  其中一致性是目的,原子性隔离性和持久化是手段,只要做好ACID中的AID,C自然就能满足。

  由于数据散落在多台数据库服务器上,库作了拆分。分布式写最大的难度其实就在于保证ACID中的那个A——原子性。

  举个例子,假设A给B转100块钱,由于是“分布式数据库”,A用户的账户数据存在A机器上,B用户的账户数据存在B机器上。

  如果交易发生时,负责给A账户扣100块钱的A机器死机,没有扣成功,而负责给账户B加100块钱的B机器工作正常,加上了100——这就会造成支付宝损失100块。

  反之,如果负责给A账户扣100块钱的A机器正常,已经扣掉100,而负责给账户B加100块钱的B机器死机,100块没加上,那么用户就会损失100——最后支付宝还要赔偿用户100块。

  为了保证以上这两种尴尬的局面不发生,OceanBase 1.0 采用了整整一组技术,但最主要的是两个。

目录
相关文章
|
6月前
|
数据库 数据安全/隐私保护
TiDB分布式事务处理机制
【2月更文挑战第28天】TiDB作为开源的分布式HTAP数据库产品,其分布式事务处理机制是其核心功能之一。本章节将深入解析TiDB分布式事务处理机制的工作原理,包括其采用的分布式事务协议、事务的提交与回滚过程、以及如何处理并发事务等关键内容。通过了解TiDB的分布式事务处理机制,我们可以更好地理解其在分布式环境下如何确保数据一致性和事务正确性。
|
6月前
|
分布式数据库 数据库
数据同步并发控制与数据一致性
数据同步并发控制与数据一致性
87 3
|
Oracle 关系型数据库 MySQL
第四章:OceanBase集群技术架构(分布式事务、MVCC、事务隔离级别)
第四章:OceanBase集群技术架构(分布式事务、MVCC、事务隔离级别)
388 0
|
canal 缓存 NoSQL
面试官,如何保证缓存与数据库的数据一致性
面试官,如何保证缓存与数据库的数据一致性
|
3月前
|
存储 NoSQL 算法
Tair的发展问题之Tair 对于事务的并发控制该如何处理
Tair的发展问题之Tair 对于事务的并发控制该如何处理
|
6月前
|
存储 大数据 对象存储
ClickHouse 如何实现数据一致性
本文探讨了在 ClickHouse 中实现数据一致性的方法,主要关注 `ReplacingMergeTree` 引擎。该引擎允许更新已有数据,通过定期合并操作删除重复并保持最终一致性。然而,由于合并时间不可预测,单纯依赖此引擎无法确保实时一致性。为解决此问题,文章提出了四种策略:1)手动触发合并,但不建议频繁使用;2)使用 `FINAL` 查询,但在查询时合并数据,效率较低;3)通过标记和 `GroupBy` 查询实现一致性;4)在允许一定偏差的情况下,直接使用 `ReplacingMergeTree` 保持最终一致性。在实践中,推荐结合标记列和 `GroupBy` 以保证数据一致性。
237 0
|
6月前
|
消息中间件
[AIGC] 了解消息队列事务:保证数据一致性的关键
[AIGC] 了解消息队列事务:保证数据一致性的关键
100 1
|
关系型数据库 数据库
数据库如何保证事务的ACID特性?
数据库如何保证事务的ACID特性?
119 0
|
SQL 关系型数据库 MySQL
分布式数据库之事务隔离性
写在前面近两年分布式数据库技术加速发展,而由于金融行业技术生态的限制,周围很多同学对其并没有深入的了解,所以进行高性能、高可靠系统设计时往往缺少这一利器。Ivan希望以系列文章的方式与大家交流探讨,加深我们对分布式数据库的认识。
2365 0
|
数据库 双11
分布式事务如何解决?
分布式事务如何解决?