最近有很多关于卡桑德拉的话题。
Twitter, Digg, Facebook等都在使用它。
什么时候有意义:
使用卡桑德拉, 不用卡桑德拉,还有 使用RDMS而不是Cassandra。
最近有很多关于卡桑德拉的话题。
Twitter, Digg, Facebook等都在使用它。
什么时候有意义:
使用卡桑德拉, 不用卡桑德拉,还有 使用RDMS而不是Cassandra。
当前回答
Apache cassandra是一个分布式数据库,用于跨许多商用服务器管理大量结构化数据,同时提供高可用性服务,没有单点故障。
该架构完全基于上限定理,即可用性和分区容忍,有趣的是最终一致。
不要使用它,如果你不存储数据卷的机架集群, 如果您不存储时间序列数据,请不要使用, 不要使用如果你不分区你的服务器, 如果你要求强烈的一致性,请不要使用。
其他回答
让我们来读一些真实的案例:
http://planetcassandra.org/apache-cassandra-use-cases/
本文地址:http://planetcassandra.org/blog/post/agentis-energy-stores-over-15-billion-records-of-time-series-usage-data-in-apache-cassandra
他们详细阐述了不选择MySql的原因,因为数据库同步太慢。
(也是由于2- phase commit, 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快。无论如何不会有多实例可伸缩性。
根据DataStax,当需要Cassandra时,它并不是最好的用例
1-高端硬件设备。 2- ACID兼容,无回滚(银行交易)
它不支持跨 表。 不支持二级索引。 二级索引必须依赖Elastic search /Solr,并且必须编写自定义同步组件。 非ACID兼容系统。 查询支持有限。
Mongodb有非常强大的聚合函数和一个富有表现力的聚合框架。它具有许多开发人员习惯于从关系数据库世界中使用的特性。例如,它的文档数据/存储结构允许比Cassandra更复杂的数据模型。
当然,所有这些都是有代价的。因此,当您选择数据库(NoSQL、NewSQL或RDBMS)时,请考虑您要解决的问题和可伸缩性需求。没有一个数据库可以完成所有的工作。
NoSQL的一般思想是,您应该使用最适合您的应用程序的数据存储。如果您有一个财务数据表,请使用SQL。如果您的对象需要复杂/缓慢的查询才能映射到关系模式,请使用对象或键/值存储。
当然,你遇到的任何现实问题都处于这两个极端之间,没有一个解决方案是完美的。您需要考虑每个存储的功能以及使用其中一个的后果,这将非常具体于您试图解决的问题。