我正在使用 apache cassandra 并处理示例数据插入、检索等工作。
文档非常有限。
我有兴趣了解
- 我们可以用 cassandra 完全替换 mysql/oracle 之类的关系数据库吗?
- cassandra 是否支持回滚/提交?
- cassandra 客户端(thrift/hector)是否支持获取关联对象(我们将一个 super 列的键保存在另一个 super 列族中的对象)?
这对我继续前进有很大帮助。
提前谢谢你。
最佳答案
简短回答:不。
根据设计,Cassandra 重视可用性和分区容错性而不是一致性 1 .基本上,在保持所有三个品质的同时获得可接受的延迟是不可能的:必须牺牲一个品质。这称为 CAP 定理。
在 Cassandra 中可以使用一致性级别配置一致性的数量,但不存在任何回滚语义。即使第一次写入成功,也无法保证您能够回滚更改。
如果你想在 Cassandra 上构建带有事务或锁的应用程序,你可能想看看 Zookeeper,它可以用来提供分布式同步。
您可能已经猜到了,但 Cassandra 没有外键或类似的东西。这必须手动处理。我对 Hector 不是很熟悉,但是更高级别的客户端可以半自动地做到这一点。
您是否可以使用 Cassandra 轻松替换 RDBMS 取决于您的特定用例。在您的用例中(根据您的问题),这样做可能很难。
关于java - Cassandra - 事务支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2976932/