卡桑德拉 - 交易支持

2022-09-01 06:04:36

我正在通过apache cassandra并致力于示例数据插入,检索等。

文档非常有限。

我有兴趣了解

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

这将帮助我进一步前进。

提前感谢您。


答案 1

简短的回答:不。

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

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

如果你想在Cassandra之上构建带有事务或锁的应用程序,你可能想看看Zookeeper,它可以用来提供分布式同步。

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

您是否可以使用Cassandra轻松替换RDBMS取决于您的特定用例。在您的用例中(根据您的问题),可能很难做到这一点。


答案 2

在版本 2.x 中,可以将 CQL 语句合并到原子的已记录批处理中。要么全部成功,要么不成功。您还可以阅读有关轻量级事务的信息。不仅如此 - Cassandra有几个持久性经理。您可以使用它们在客户端级别实现外键行为。例如,阿喀琉斯昆德拉


推荐