当前位置:  开发笔记 > 编程语言 > 正文

什么时候不使用Cassandra?

如何解决《什么时候不使用Cassandra?》经验,为你挑选了6个好方法。

最近有很多关于卡桑德拉的谈话.

Twitter,Digg,Facebook等都使用它.

什么时候有意义:

用Cassandra,

不要使用Cassandra,而且

使用RDMS而不是Cassandra.

ajay.. 155

没有像银弹一样的东西,一切都是为解决具体问题而建立的,并且各有利弊.这取决于你,你有什么问题陈述,以及什么是最适合该问题的解决方案.

我会按照你问他们的顺序逐一回答你的问题.由于Cassandra基于NoSQL系列数据库,因此在我回答您的问题之前,了解为何使用NoSQL数据库非常重要.

为什么要使用NoSQL

对于RDBMS,做出选择非常简单,因为此类别中的所有数据库(如MySQL,Oracle,MS SQL,PostgreSQL)都提供了几乎与ACID属性相同的解决方案.在NoSQL方面,决策变得困难,因为每个NoSQL数据库都提供不同的解决方案,您必须了解哪一个最适合您的应用程序/系统要求.例如,MongoDB适用于系统需要无架构文档存储的用例.HBase可能适合搜索引擎,分析日志数据,或任何需要扫描巨大的二维无连接表的地方.Redis旨在为各种数据结构(如树,队列,链表等)提供内存搜索,并且非常适合制作实时排行榜,pub-sub类型的系统.同样,此类别中的其他数据库(包括Cassandra)适用于不同的问题陈述.现在让我们转到原始问题,然后逐一回答.

什么时候使用Cassandra

作为NoSQL系列的一部分,Cassandra提供了一个解决问题的解决方案,其中一个要求是拥有一个非常繁重的写入系统,并且您希望在存储的数据之上拥有一个响应迅速的报告系统.考虑Web分析的用例,其中为每个请求存储日志数据,并且您希望围绕它构建分析平台,以实时方式按浏览器,IP等计算每小时的点击次数.您可以参考此博客文章,以了解有关Cassandra适合的用例的更多信息.

何时使用RDMS而不是Cassandra

Cassandra基于NoSQL数据库,不提供ACID和关系数据属性.如果您对ACID属性有强烈要求(例如财务数据),那么Cassandra就不适合.显然,你可以为此做一个解决方法,但是你最终会编写大量的应用程序代码来模拟ACID属性,并且会很快失去市场.使用Cassandra管理这种系统对你来说既复杂又乏味.

何时不使用Cassandra

如果上述解释有意义,我认为不需要回答.



1> ajay..:

没有像银弹一样的东西,一切都是为解决具体问题而建立的,并且各有利弊.这取决于你,你有什么问题陈述,以及什么是最适合该问题的解决方案.

我会按照你问他们的顺序逐一回答你的问题.由于Cassandra基于NoSQL系列数据库,因此在我回答您的问题之前,了解为何使用NoSQL数据库非常重要.

为什么要使用NoSQL

对于RDBMS,做出选择非常简单,因为此类别中的所有数据库(如MySQL,Oracle,MS SQL,PostgreSQL)都提供了几乎与ACID属性相同的解决方案.在NoSQL方面,决策变得困难,因为每个NoSQL数据库都提供不同的解决方案,您必须了解哪一个最适合您的应用程序/系统要求.例如,MongoDB适用于系统需要无架构文档存储的用例.HBase可能适合搜索引擎,分析日志数据,或任何需要扫描巨大的二维无连接表的地方.Redis旨在为各种数据结构(如树,队列,链表等)提供内存搜索,并且非常适合制作实时排行榜,pub-sub类型的系统.同样,此类别中的其他数据库(包括Cassandra)适用于不同的问题陈述.现在让我们转到原始问题,然后逐一回答.

什么时候使用Cassandra

作为NoSQL系列的一部分,Cassandra提供了一个解决问题的解决方案,其中一个要求是拥有一个非常繁重的写入系统,并且您希望在存储的数据之上拥有一个响应迅速的报告系统.考虑Web分析的用例,其中为每个请求存储日志数据,并且您希望围绕它构建分析平台,以实时方式按浏览器,IP等计算每小时的点击次数.您可以参考此博客文章,以了解有关Cassandra适合的用例的更多信息.

何时使用RDMS而不是Cassandra

Cassandra基于NoSQL数据库,不提供ACID和关系数据属性.如果您对ACID属性有强烈要求(例如财务数据),那么Cassandra就不适合.显然,你可以为此做一个解决方法,但是你最终会编写大量的应用程序代码来模拟ACID属性,并且会很快失去市场.使用Cassandra管理这种系统对你来说既复杂又乏味.

何时不使用Cassandra

如果上述解释有意义,我认为不需要回答.


这种响应"将所有NoSQL解决方案整合在一起"的唯一方法是NoSQL类; 除此之外,这篇文章很好地指出每个NoSQL数据库"为不同的问题提供了不同的解决方案".我没有觉得作者甚至略微暗示mongo,cassandra或任何其他NoSQL数据库解决了同样的问题.
另外,请注意,并非所有的NoSQL数据库都不都是ACID。图形数据库通常是ACID。

2> Nathan Hurst..:

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

Cassandra是一个可用的分区容错系统,支持最终的一致性.有关更多信息,请参阅我写的这篇博客文章:NoSQL系统的可视指南.


Cassandra显然也允许您在查询时指定一致性要求,这可能是某些用例的有用折衷方案

3> Vagif Verdi..:

Cassandra是一个特定问题的答案:当你拥有如此多的数据而不适合一台服务器时,你会怎么做?如何将您的所有数据存储在许多服务器上,不要破坏您的银行帐户,不要让您的开发人员疯狂?Facebook每天都会获得4TB的新压缩数据.这个数字最有可能在一年内增长两倍以上.

如果您没有这么多数据,或者您有数百万美元需要支付Enterprise Oracle/DB2集群安装以及设置和维护它所需的专家,那么您可以使用SQL数据库.

然而Facebook不再使用cassandra,现在使用MySQL几乎专门在应用程序堆栈中移动分区,以实现更快的性能和更好的控制.



4> Tom Clarkson..:

NoSQL的一般概念是你应该使用最适合你的应用程序的数据存储.如果您有财务数据表,请使用SQL.如果您的对象需要复杂/慢速查询以映射到关系模式,请使用对象或键/值存储.

当然,您遇到的任何现实世界问题都介于这两个极端之间,并且两种解决方案都不是完美的.您需要考虑每个商店的功能以及使用其中一个的后果,这将非常具体地解决您要解决的问题.


@Paco:关键是,如果没有适当的交易隔离,普通银行甚至不会知道该账户已经透支.他们甚至不知道.
@Paco:第一台ATM读取您的余额(100美元),第二台ATM也是如此.两台ATM都从100美元中扣除100美元,并将最终余额0美元写回您的账户.结果:银行损失100美元.
这些东西都是COBOL和批处理,并没有你想象的那么好设计/稳定.ATM不能连接到任何类型的统一数据存储,因此几乎不是一个合适的例子.这就像说SQL不适合网络应用程序,因为你无法让互联网上的每个人直接访问你的数据库.此外,我从来没有说过任何关于银行的事情 - 想想电子商务网站上的订单,你不必处理组织如此保守,以至于SQL被认为是新的和不可信的.
我不明白为什么不一致的数据会导致银行真正的问题.场景:您有一个银行账户,超过限额100美元,还有两张银行卡.当您尝试在2个不同的自动取款机上同时使用这两张卡取款时,您将获得2倍100美元的费用以及一封额外费用的信件.银行通过使用不一致的数据赚钱(低于限额的额外费用).通过一个大的关系数据库很难将世界上所有的ATM连接起来.您能举例说明不一致的财务数据可能是个问题吗?
模式不太可能改变,它很适合表结构,丢失/不一致的数据可能会导致实际问题.

5> Nadav Har'El..:

除了上面给出的关于什么时候使用以及什么时候不使用Cassandra的答案,如果你决定使用Cassandra,你可能想要考虑不使用Cassandra本身,而是使用其中的许多表兄弟之一.

上面的一些答案已经指出各种"NoSQL"系统与Cassandra共享许多属性,有一些小的或大的差异,并且可能比Cassandra本身更适合您的特定需求.

此外,最近(最初询问这个问题几年后),发布了一个名为Scylla的Cassandra克隆(请参阅https://en.wikipedia.org/wiki/Scylla_(database)).Scylla是Cassandra在C++中的一个开源重新实现,它声称具有比原始Java Cassandra更高的吞吐量和更低的延迟,同时与它大多兼容(在功能,API和文件格式中).所以,如果你已经在考虑Cassandra,你可能也想考虑Scylla.



6> 小智..:

在部署Cassandra的过程中与某人交谈时,它并不能很好地处理多对多的问题.他们正在做一个黑客工作来进行初步测试.我和一位Cassandra顾问谈过这件事,他说如果你有这个问题,他就不会推荐它.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有