Cassandra 中的 BATCH 语句和 SQL 中的事务之间有什么异同?



Cassandra Batch 语句的目标是在单个原子操作中将一个分区上的语句组合在一起(所有语句一起通过或失败(。

这与 SQL 事务的工作方式非常相似。

对我来说,主要区别在于,对于SQL事务,您可以在其末尾获得ACID一致性保证,而Cassandra Batch语句不一定会得到这种保证。

我的问题是:Cassandra 中的 BATCH 语句和 SQL 中的事务之间有什么异同?

> Cassandra 只支持分区级别的原子性和隔离性

Cassandra 不使用带有回滚或锁定机制的 RDBMS ACID 事务,而是提供具有最终/可调一致性的原子、隔离和持久事务,让用户决定他们希望每个事务的一致性有多强或最终。

作为一个非关系数据库,Cassandra 不支持连接或外键,因此不提供 ACID 意义上的一致性

阅读更多 : http://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlTransactionsDiffer.html

答案已经在你的问题中:一个分区

这意味着,C*的批处理不像RDBMS中的事务那样是维护一致性和原子性的通用工具。不可能在具有 C* 批处理的节点之间保持严格的原子性和一致性,因此在业务用例集中,有许多"事务"可能是/应该是原子的,但你不能使用 C* 批处理来确保,因为包含的数据这些"事务"被拆分在多个节点上。

最新更新