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是关键问题。
- 听听Cassandra数据存储区的变化?
- 无法让Cassandra在Basic Applcation中工作
- 使用DataStax客户端将参数传递给Cassandra CQL查询
- 使用Datastax Cassandra驱动程序时重用PreparedStatement?
- 使用DataStax Java驱动程序1.0.4使用CQL连接到Cassandra时出现exception
- 通过ByteBuffer和CQL 3将Java对象序列化为Cassandra 1.2
- Cassandra的IN关系对查询有害吗?
- 使用Hector在Cassandra中查询CompositeType列
- Cassandra Sample Trigger Code获取插入值