最近有很多与 Cassandra 相关的讨论。
Twitter、Digg、Facebook 等大型网站都在使用它。
什么时候需要使用Cassandra:
- 需要使用Cassandra时
- 不需要使用Cassandra时
- 使用关系型数据库替代Cassandra时
最近有很多与 Cassandra 相关的讨论。
Twitter、Digg、Facebook 等大型网站都在使用它。
什么时候需要使用Cassandra:
让我们来看一些真实世界的案例:
http://planetcassandra.org/apache-cassandra-use-cases/
他们详细阐述了为什么没有选择MySql,原因是数据库同步太慢。
(还由于2段提交、FK、PK)
Cassandra基于Amazon Dynamo论文
特点:
稳定性
高可用性
备份表现良好
读写比HBase(Java中的BigTable克隆)更好。
wiki http://en.wikipedia.org/wiki/Apache_Cassandra
他们的结论是:
We looked at HBase, Dynamo, Mongo and Cassandra.
Cassandra was simply the best storage solution for the majority of our data.
截至2018年,
如果您需要后向支持,我建议使用ScyllaDB来替换经典的Cassandra。
Postgres kv插件也比Cassandra更快。不过它没有多实例可扩展性。
Cassandra是一个不错的选择,如果:
您的数据库不需要ACID属性。
您需要在数据库上进行大量和大规模的写入操作。
您需要与Big Data、Hadoop、Hive和Spark集成。
您需要实时数据分析和报告生成。
您需要一个出色的容错机制。
您需要一个同质系统。
您需要进行大量自定义调整。
Apache cassandra是一个分布式数据库,用于管理大量结构化数据,跨多个普通服务器提供高度可用的服务和无单点故障。
该架构基于CAP定理,即可用性、分区容错和有趣的最终一致性。
如果您不在集群中存储大量数据,则不要使用它, 如果您不存储时间序列数据,则不要使用它, 如果您不分区服务器,则不要使用它, 如果您需要强一致性,则不要使用它。
Mongodb拥有非常强大的聚合函数和表达式聚合框架。它具有许多开发人员习惯于使用的关系数据库世界中的功能。与Cassandra相比,它的文档数据/存储结构允许更复杂的数据模型。
当然,所有这些都伴随着权衡。因此,当您选择数据库(NoSQL、NewSQL或RDBMS)时,请查看您要解决的问题以及您的可扩展性需求。没有一个数据库可以解决所有问题。