我正在学习apache cassandra,并致力于样本数据的插入、检索等.

文档非常有限.

我有兴趣知道

  • 我们能用Cassandra完全取代像mysql/oracle这样的关系数据库吗?
  • cassandra支持回滚/提交吗?
  • Cassandra客户端(Thrift/Hector)是否支持获取关联对象(将一个超列的键保存在另一个超列系列中的对象)?

这将对我进一步的工作有很大帮助.

提前谢谢您.

推荐答案

简短的回答是:没有.

通过设计,Cassandra更看重可用性和分区容错,而不是一致性1.基本上,在保持所有这三个特性的同时获得可接受的延迟是不可能的:必须牺牲其中一个.这就是所谓的CAP定理.

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

如果您希望在Cassandra之上构建具有事务或锁应用程序,则可能需要查看ZooKeeper,它可用于提供分布式同步.

你可能已经猜到了,但卡桑德拉没有外键或类似的东西.这必须手动处理.我对赫克托不太熟悉,但更高级别的客户可以半自动完成这项工作.

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

Database相关问答推荐

删除Postgres中的JSONB列并在不停机的情况下回收空间

Rust 全局存储数据库连接

如何在没有sqlmock的情况下模拟db ping

使用 prisma ORM 在我的迁移中手动添加触发器

这到底是做什么的 Class.forName("com.mysql.jdbc.Driver").newInstance();

如何使用错误消息中指定的 tbspaceid tableid 在 DB2 中查找表和列

如何在 SQL Server 中将索引从一个表复制到另一个表

为什么 COUNT() 只显示一行表格?

Sql更新查询

SQLite 如果列存在

如何禁用 Django 查询缓存?

如何将视图的所有权限授予任意用户

SQL-Server:还原数据库时,SQL 命令行中的 NOUNLOAD 和 STATS 是什么意思?

如何在大型数据库中使用 typeahead.js

如何在数据库中搜索和替换字符串的所有实例?

数据库 - 设计 Events事件表

PostgreSQL 哈希索引

如何使用 localdb 在 Code First 中查看数据库图

如何使用反射调用扫描可变参数函数

列的 SQL Server 2008 千位分隔符