我正在浏览apache cassandra并处理样本数据插入,检索等。
文档非常有限。
我有兴趣知道
这将有助于我进一步深入。
提前谢谢。
答案 0 :(得分:29)
简短回答:不。
根据设计,Cassandra会将可用性和分区容差视为一致性1。基本上,在保持所有三种品质的同时,不可能获得可接受的延迟:必须牺牲一种品质。这称为CAP定理。
可以使用一致性级别在Cassandra中配置一致性,但是不存在任何回滚语义。即使第一次写入成功,也无法保证您能够回滚更改。
如果您不想在Cassandra上构建具有事务或锁的应用程序,您可能需要查看Zookeeper,它可用于提供分布式同步。
你可能已经猜到了这一点,但Cassandra没有外键或类似的东西。这必须手动处理。我对Hector并不熟悉,但是更高级别的客户可以半自动完成。
您是否可以使用Cassandra轻松替换RDBMS取决于您的具体用例。在您的用例中(基于您的问题),可能很难这样做。
答案 1 :(得分:6)
在版本2.x中,您可以在原始的batch中组合CQL语句。全部或全部语句都不会成功。您也可以阅读lightweight transactions。 更重要的是 - Cassandra有几个持久性管理器。您可以使用它们在客户端级别上执行外键行为。例如,Achilles和Kundera。
答案 2 :(得分:2)
如果Zookeeper能够处理具有Oracle质量的事务,那么它就完成了交易。在任何数据库之上实现关系和关系完整性都没有问题。外键只是另一个数据字段。 ACID / Transactions是关键问题。
答案 3 :(得分:0)
当然可以,但这完全取决于您的用例。如果您没有为您的用例选择正确的数据库,那么您需要自己担心很多事情。例如,在 rdbms 中,地理分布不提供您需要找到一种方法来做到这一点。在 cassandra 中,您在某些条件下缺乏一些酸性特性。您需要在应用程序端处理这些属性。
是的,但仅限于某些用例。您可以使用批处理属性。它支持回滚,但你缺乏隔离。我不确定 OSS Cassandra 中是否存在此属性。欲了解更多信息look
不明白你说的超级列是什么意思。如果您要求在另一个表列中查找 id,是的,您可以做到,为什么不呢。但是绝对不明白你说的超级列是什么意思。
总体上 Cassandra 不符合 ACID,但有一些功能可以帮助您在某些条件下符合 ACID,例如批处理、轻量级事务。