Cassandra – 交易支持

我正在通过apache cassandra并处理样本数据插入,检索等。

文档非常有限。

我有兴趣知道

  • 我们可以完全用cassandra替换像mysql / oracle这样的关系数据库吗?
  • cassandra支持回滚/提交吗?
  • cassandra客户端(thrift / hector)是否支持获取相关对象(我们在另一个超级列族中保存一个超级列的密钥的对象)?

这将有助于我进一步前进。

先谢谢你。

简答:没有。

根据设计,Cassandra重视可用性和分区容差而不是一致性1 。 基本上,在保持所有三种品质的同时,不可能获得可接受的延迟:必须牺牲一种品质。 这称为CAP定理。

可以使用一致性级别在Cassandra中配置一致性,但是不存在任何回滚语义。 即使第一次写入成功,也无法保证您能够回滚更改。

如果您不想在Cassandra上构建具有事务或锁的应用程序,您可能需要查看Zookeeper,它可用于提供分布式同步。

你可能已经猜到了这一点,但Cassandra没有外键或类似的东西。 这必须手动处理。 我对Hector并不熟悉,但是更高级别的客户端可以半自动完成。

是否可以使用Cassandra轻松替换RDBMS取决于您的具体用例。 在您的用例中(基于您的问题),可能很难这样做。

在版本2.x中,您可以在原始的已记录批处理中组合CQL语句。 报告的全部或全部都没有成功。 您还可以阅读轻量级交易 。 更重要的是 – Cassandra有几个持久性管理者。 您可以使用它们在客户端级别上执行外键行为。 例如, 阿基里斯和昆德拉 。

如果Zookeeper能够处理具有Oracle质量的事务,那么它就完成了交易。 在任何数据库之上实现关系和关系完整性都没有问题。 外键只是另一个数据字段。 ACID / Transactions是关键问题。