事务:概念与特性解析
1. 数据库事务发展背景
2000年代后期,非关系型(NoSQL)数据库开始流行。它们旨在通过提供新的数据模型选择,以及默认包含复制和分区功能,来改进传统的关系型数据库。然而,事务成为了这一变革的主要牺牲品,新一代数据库要么完全摒弃事务,要么重新定义事务,使其保证力度远不如以往。
当时,围绕分布式数据库出现了一种流行观点,认为事务与可扩展性相悖,大型系统为了保持良好性能和高可用性必须放弃事务。但另一方面,数据库厂商有时又将事务保证视为处理“重要应用”和“有价值数据”的必要条件。实际上,这两种观点都过于极端。事务和其他技术设计选择一样,有其优势和局限性。为了理解这些权衡,我们需要深入了解事务在正常操作和各种极端情况下能提供的保证。
2. ACID的含义
事务提供的安全保证通常用著名的缩写ACID来描述,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这一概念由Theo Härder和Andreas Reuter在1983年提出,旨在为数据库中的容错机制建立精确的术语。
但在实践中,不同数据库对ACID的实现并不相同。例如,隔离性的含义就存在很多歧义。如今,当一个系统声称“符合ACID标准”时,很难确切知道它能提供哪些保证,ACID在很大程度上已成为一个营销术语。
不符合ACID标准的系统有时被称为BASE,即基本可用(Basically Available)、软状态(Soft state)和最终一致性(Eventual consistency)。这比ACID的定义更加模糊,其唯一合理的定义似乎就是“非ACID”,几乎可
超级会员免费看
订阅专栏 解锁全文
169万+

被折叠的 条评论
为什么被折叠?



