最近有很多关于卡桑德拉的话题。
Twitter, Digg, Facebook等都在使用它。
什么时候有意义:
使用卡桑德拉, 不用卡桑德拉,还有 使用RDMS而不是Cassandra。
最近有很多关于卡桑德拉的话题。
Twitter, Digg, Facebook等都在使用它。
什么时候有意义:
使用卡桑德拉, 不用卡桑德拉,还有 使用RDMS而不是Cassandra。
当前回答
如果你需要一个SQL语义完全一致的数据库,Cassandra不是你的解决方案。Cassandra支持键值查找。它不支持SQL查询。Cassandra中的数据“最终是一致的”。数据的并发查找可能不一致,但最终查找是一致的。
如果你需要严格的语义,需要对SQL查询的支持,可以选择其他的解决方案,比如MySQL, PostGres,或者结合使用Cassandra和Solr。
其他回答
根据DataStax,当需要Cassandra时,它并不是最好的用例
1-高端硬件设备。 2- ACID兼容,无回滚(银行交易)
你应该问自己以下问题:
(Volume, Velocity) Will you be writing and reading TONS of information , so much information that no one computer could handle the writes. (Global) Will you need this writing and reading capability around the world so that the writes in one part of the world are accessible in another part of the world? (Reliability) Do you need this database to be up and running all the time and never go down regardless of which Cloud, which country, whether it's VM , Container, or Bare metal? (Scale-ability) Do you need this database to be able to continue to grow easily and scale linearly (Consistency) Do you need TUNABLE consistency where some writes can happen asynchronously where as others need to be certified? (Skill) Are you willing to do what it takes to learn this technology and the data modeling that goes with creating a globally distributed database that can be fast for everyone, everywhere?
如果在这些问题中,你认为“可能”或“不”,你应该用别的词。如果你对所有问题的答案都是“当然”,那么你应该用卡桑德拉。
当你可以在一个盒子上做所有事情时,使用RDBMS。它可能比大多数方法都简单,任何人都可以使用它。
它不支持跨 表。 不支持二级索引。 二级索引必须依赖Elastic search /Solr,并且必须编写自定义同步组件。 非ACID兼容系统。 查询支持有限。
Apache cassandra是一个分布式数据库,用于跨许多商用服务器管理大量结构化数据,同时提供高可用性服务,没有单点故障。
该架构完全基于上限定理,即可用性和分区容忍,有趣的是最终一致。
不要使用它,如果你不存储数据卷的机架集群, 如果您不存储时间序列数据,请不要使用, 不要使用如果你不分区你的服务器, 如果你要求强烈的一致性,请不要使用。
NoSQL的一般思想是,您应该使用最适合您的应用程序的数据存储。如果您有一个财务数据表,请使用SQL。如果您的对象需要复杂/缓慢的查询才能映射到关系模式,请使用对象或键/值存储。
当然,你遇到的任何现实问题都处于这两个极端之间,没有一个解决方案是完美的。您需要考虑每个存储的功能以及使用其中一个的后果,这将非常具体于您试图解决的问题。