Cassandra 和许多其他类似系统不提供事务支持。相反,它们提供最终的一致性,这意味着系统的写入者最终将处于一致状态。有没有关于如何使用交易可以模拟的东西来模拟的例子?
我知道在某些情况下,我们需要最终的一致性。例如,我们可以很容易地容忍社交网络中的朋友列表并不总是最新的等等。但是在酒店预订或汇款等系统的情况下我们应该怎么做?谷歌应用引擎有实体组,我们可以在提供最终一致性的系统中以某种方式模拟它们吗?
是否有任何文章可以在哪里找到类似架构的示例?
Cassandra 和许多其他类似系统不提供事务支持。相反,它们提供最终的一致性,这意味着系统的写入者最终将处于一致状态。有没有关于如何使用交易可以模拟的东西来模拟的例子?
我知道在某些情况下,我们需要最终的一致性。例如,我们可以很容易地容忍社交网络中的朋友列表并不总是最新的等等。但是在酒店预订或汇款等系统的情况下我们应该怎么做?谷歌应用引擎有实体组,我们可以在提供最终一致性的系统中以某种方式模拟它们吗?
是否有任何文章可以在哪里找到类似架构的示例?
您可以在没有事务的情况下具有分布式一致性(对于单个操作),但不能具有原子性(对于操作组)。尽管 Cassandra 中的“一致性”的使用比一般的ACID数据库更具体一些。
Cassandra 支持可调一致性级别 (CL) - 您可以为每次读取和写入指定一致性级别。请参阅http://wiki.apache.org/cassandra/API。
这些级别的范围从CL.ANY
(最初从/向单个节点读取或写入)到CL.ALL
(以牺牲可用性为代价为您提供完全一致性)。
但是,它并没有为您提供将操作分组为原子事务的方法,因此它们全部成功或全部失败(尽管我认为同一行上的多个操作是原子的,但不是独立的)。
也可以看看: