【问题标题】:How does RavenDB achieves consistency, availability, and partition tolerance?RavenDB 如何实现一致性、可用性和分区容错?
【发布时间】:2012-04-30 06:14:57
【问题描述】:

根据CAP theorem,分布式计算机系统不可能同时提供consistencyavailability和分区容错。

阅读RavenDB 看起来这个数据库同时支持 ACID 事务和分片。 RavenDB 如何做到这一点?

【问题讨论】:

    标签: ravendb cap


    【解决方案1】:

    CouchDB 在同一条船上:它们是“ACID”(从单个节点查看时),但不是一致的(从 CAP 查看时)。数据库术语可能会令人困惑。

    附:您链接到的“可用性”不是 CAP 中的 A。 CAP 中的 A 代表“所有能够接受查询的节点”。例如,在分区期间,PAXOS 只会回答多数分区中的查询,而少数分区会拒绝回答查询。

    但从可用性的角度来看,它的可用性比系统停机要好。如果系统需要一致性,那么这是您可以实现的最高可用性。

    【讨论】:

      【解决方案2】:

      提前澄清:
      默认情况下,RavenDB 会话中对.SaveChanges() 的调用之间的所有写入都是全有或无。如果一个操作由于某种原因失败,那么当前会话/自上次保存以来的所有更改都将被丢弃。此功能与打开的乐观并发相结合,非常强大。如果您需要更长的事务,则还支持 System.Transaction,并且可以按预期工作。

      关于分片:
      true 不支持分片设置中的分布式事务。但是,由于参考文档在良好的分片策略中的局部性,您可以在每个存储上进行事务性写入。它们的工作原理就像根本没有任何碎片一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 1970-01-01
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        相关资源
        最近更新 更多