我正在通过apache cassandra并处理样本数据插入,检索等.
文档非常有限.
我有兴趣知道
我们可以完全用cassandra替换像mysql/oracle这样的关系数据库吗?
cassandra支持回滚/提交吗?
cassandra客户端(thrift/hector)是否支持获取相关对象(我们在另一个超级列族中保存一个超级列的键的对象)?
这将有助于我进一步前进.
先感谢您.
简答:不.
根据设计,Cassandra重视可用性和分区容差而不是一致性1.基本上,在保持所有三种品质的同时,不可能获得可接受的延迟:必须牺牲一种品质.这称为CAP定理.
可以使用一致性级别在Cassandra中配置一致性,但是不存在任何回滚语义.即使第一次写入成功,也无法保证您能够回滚更改.
如果您不想在Cassandra上构建具有事务或锁的应用程序,您可能需要查看Zookeeper,它可用于提供分布式同步.
你可能已经猜到了这一点,但Cassandra没有外键或类似的东西.这必须手动处理.我对Hector并不熟悉,但是更高级别的客户端可以半自动完成.
是否可以使用Cassandra轻松替换RDBMS取决于您的具体用例.在您的用例中(基于您的问题),可能很难这样做.
在版本2.x中,您可以在原始的已记录批处理中组合CQL语句.全部或全部语句都不会成功.您还可以阅读轻量级交易.更重要的是 - Cassandra有几个持久性管理器.您可以使用它们在客户端级别上执行外键行为.例如,阿基里斯和昆德拉.