你能从 ACID 中删除一致性吗?

Mar*_*tin 3 acid

CJDate 在他的“数据库系统简介”一书中写了一个关于 ACID 原则的章节,称为“丢弃 ACID”。在这一章中,他称正确性(一致性)“本质上毫无意义”,而其他原则至多是“必要条件”。

这本书是 2004 年的,我在互联网上的任何地方都将 ACID 原则视为 RDBMS 应用程序编程的指导方针。这是否意味着 Date 对 ACID 的想法不被接受?或者从理论的角度来看,ACID 不像在阅读有关数据库编程的互联网文档时那样强制性?

我希望我的问题有意义并且在正确的论坛中。

Ulr*_*bor 8

本书内容

作者从非常理论的角度分析了ACID的概念。

关键部分可能是本章最后一段的第一句:

总的来说,我们得出的结论是,从实用的角度来看,交易概念比从理论的角度更重要。

另一个重要部分是他介绍了“多重赋值”运算符(第 487 页),他将其用作解决实际 DBMS 通过支持事务解决的一些问题的解决方案。此操作似乎不适用于MySQLOracleMSSQL。(使一个查询更新多个表成为可能。)

他的说法是:如果我们有这个多重赋值运算符,就不需要延迟检查约束,应该立即应用,而不是在事务结束时应用。后一个导致ACID的C无用,因为数据库总是一致的(如果 C 代表一致性)或者它的正确性是不可执行的(如果 C 代表正确性)。

关于我的安慰,他声称这应该意味着所有事务都应该完全不知道其他事务可能正在运行。这很可能是不可行的。他进一步表示,大多数 DBMS 都提供“隔离级别”设置,这在其基础上破坏了这一概念。

d urability他写道只能适用于最外部事务,如果嵌套事务的支持。

根据他的说法,只需要一个tomicity,因为需要交易。如果多重赋值运算符可用作原子,则不需要原子事务。

带走什么

这是关于 ACID 概念的一个非常基本的讨论。在不判断他的批评是否正确的情况下,DBMS 是一个活生生的景观,它基于事务。

CJ Date 本人写道,“我们现在对这项研究所基于的一些假设有了更好的理解”。这意味着它是基本方面之一,在生活 DBMS 中不能轻易改变。删除事务并引入原子多重赋值运算符,没有企业会想要更新它的架构,因为这是很多变化。

因此,您已经阅读了一个理论章节,其中介绍了如何从概念上改进 DBMS 的属性,并从根本上消除一些问题。但仅仅因为某些东西可能更好,它不会立即用于实践。

你基本上已经到达了一个纯粹的理论观点和现实世界之间的边界,在现实世界中,不仅仅是理论,还有一个必须环绕的现有世界。