首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候不使用Cassandra?

什么时候不使用Cassandra?
EN

Stack Overflow用户
提问于 2010-04-14 12:45:19
回答 18查看 97.8K关注 0票数 220

最近有很多关于Cassandra的讨论。

Twitter、Digg、Facebook等都在使用它。

什么时候才有意义:

  • 使用Cassandra,
  • 不使用Cassandra,
  • 使用RDMS而不是Cassandra。
EN

回答 18

Stack Overflow用户

发布于 2015-06-21 19:33:25

没有什么比银弹更好的了,每件事都是为了解决特定的问题而构建的,都有自己的利弊。这取决于你,你有什么问题陈述,对于这个问题最合适的解决方案是什么。

我会试着按照你问的顺序逐一回答你的问题。由于Cassandra是基于NoSQL数据库系列的,因此在回答您的问题之前,了解为什么要使用NoSQL数据库是很重要的。

为什么使用NoSQL

在关系型数据库的情况下,做出选择是相当容易的,因为这一类别中的所有数据库,如MySQL、Oracle、MySQL、PostgreSQL都提供了几乎相同类型的面向ACID属性的解决方案。当涉及到NoSQL时,决定变得很困难,因为每个NoSQL数据库都提供不同的解决方案,您必须了解哪一个最适合您的应用程序/系统需求。例如,MongoDB适用于系统需要无模式文档存储的用例。HBase可能适用于搜索引擎、分析日志数据,或者需要扫描巨大的二维无连接表的任何地方。Redis是为树、队列、链表等各种数据结构提供内存搜索而构建的,非常适合制作实时排行榜、发布-订阅类型的系统。同样,这一类别中还有其他数据库(包括Cassandra),它们适合于不同的问题陈述。现在让我们转到原始问题,并逐一回答它们。

何时使用Cassandra

作为NoSQL家族的一员,Cassandra为以下问题提供了解决方案:您的需求之一是拥有一个非常繁重的写入系统,并且您希望在存储的数据之上拥有一个响应性很强的报告系统。考虑Web分析的用例,其中为每个请求存储日志数据,并且您希望围绕它构建一个分析平台,以实时方式统计每小时、按浏览器、按IP等的点击量。你可以参考this的博客文章来了解更多关于Cassandra适合的用例。

何时使用RDMS而不是Cassandra

Cassandra基于NoSQL数据库,不提供ACID和关系数据属性。如果您对ACID属性有很强的需求(例如,财务数据),那么Cassandra将不适合这种情况。显然,你可以解决这个问题,但是你最终会编写大量的应用程序代码来模拟ACID属性,并且会在上市时间上损失惨重。此外,使用Cassandra管理这种系统对您来说将是复杂和乏味的。

不使用Cassandra时使用

我认为如果上面的解释是有意义的,就不需要回答这个问题。

票数 180
EN

Stack Overflow用户

发布于 2010-04-21 03:01:38

在评估分布式数据系统时,您必须考虑CAP定理-您可以选择以下两个:一致性、可用性和分区容错性。

Cassandra是一个可用的、可容忍分区的系统,它支持最终的一致性。有关更多信息,请参阅我写的这篇博客文章:Visual Guide to NoSQL Systems

票数 57
EN

Stack Overflow用户

发布于 2010-04-25 03:30:23

Cassandra是一个特殊问题的答案:当您有如此多的数据无法放在一台服务器上时,您该怎么办?您如何将所有数据存储在多个服务器上,并且不会破坏您的银行帐户,也不会让您的开发人员发疯?Facebook每天都会获得4TB的新压缩数据。这个数字很可能会在一年内增长两倍以上。

如果您没有这么多数据,或者您需要为企业Oracle/DB2集群安装支付数百万美元,并且需要专家对其进行设置和维护,那么您可以使用SQL数据库。

然而,Facebook不再使用cassandra,现在几乎完全使用MySQL,将分区移到应用程序堆栈中,以获得更快的性能和更好的控制。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2634955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档