有没有NoSQL数据存储是ACID符合吗?
我将其发布为纯粹为了支持对话的答案 -Tim Mahy , nawroth , and CraigTP提出了可行的数据库。CouchDB由于使用将是我的首选Erlang,但还有其他人。
I'd say ACID并不矛盾或否定这个概念NoSQL...虽然似乎有一种趋势遵循以下观点:dove,我认为这些概念是不同的。
NoSQL从根本上讲,它是关于简单的键值(例如 Redis)或文档样式模式(在“文档”模型中收集的键值对,例如 MongoDB)作为经典 RDBMS 中显式模式的直接替代方案。它允许开发商处理things不对称,而传统发动机则强制执行刚性相同性跨数据模型。这之所以如此有趣是因为它提供了一种不同的方式来应对变化,对于更大的数据集,它提供了处理数据量和性能的有趣机会。
ACID提供了管理如何将更改应用到数据库的原则。它以一种非常简单的方式指出(我自己的版本):
- (A) 当您对数据库进行某些操作时,整个更改应该有效或失败
- (C) 数据库应该保持一致(这是一个相当广泛的主题)
- (I) 如果同时发生其他事情,他们不应该能够在更新中看到事情
- (D) 如果系统崩溃(硬件或软件),数据库需要能够自行恢复;如果它说已完成应用更新,则需要确定
当谈到这个想法时,谈话变得更加令人兴奋传播和约束。一些 RDBMS 引擎提供了强制约束(例如外键)的能力,这些约束可能具有传播元素(例如cascade)。简而言之,一个“事物”可能与数据库中的另一个“事物”有关系,如果您更改一个“事物”的属性,则可能需要更改另一个“事物”(更新、删除……很多选项)。NoSQL数据库(目前)主要关注高数据量和高流量,似乎正在解决在(从消费者角度)任意时间范围内发生的分布式更新的想法。这基本上是一种特殊形式复制通过管理交易- 所以我想说,如果传统的分布式数据库可以支持ACID,那么NoSQL数据库也可以。
一些供进一步阅读的资源:
- 维基百科关于 ACID 的文章
- 关于传播约束的维基百科
- 维基百科(是的,我喜欢这个网站,好吗?)关于数据库规范化
- CouchDB 上的 Apache 文档很好地概述了它如何应用 ACID
-
维基百科上集群计算
- 维基百科(再次...)关于数据库事务的内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)