Cassandra还是MySQL/PostgreSQL?

24

我有一个庞大的数据库(类似于WordNet),想知道是否使用Cassandra比使用MySQL或PostgreSQL更容易。

我一直在使用MySQL和PostgreSQL,可以轻松地从关系代数的角度思考,但几周前我了解到Cassandra,以及它在Facebook和Twitter中的使用。

它更方便吗?

现在通常使用什么数据库管理系统来存储社交网络的数据、对象之间的关系和WordNet?


我发现这个链接对于决定在业务用例中使用SQL/NoSQL非常有用:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis - Ravindra babu
4
这个问题应该关闭,它不适合在 SO 上发布。 - Evan Carroll
5个回答

30

没有一种银弹解决方案,每个解决方案都是为解决特定问题而构建的,都有其优缺点。由您来决定选择哪种最适合您的问题陈述和最佳解决方案。无论您使用Cassandra(NoSQL)还是MySQL(RDBMS),都是基于系统要求的驱动。以下是帮助您在决定使用数据库时做出更好决策的输入。

为什么使用NoSQL

对于RDBMS数据库,选择非常容易,因为几乎所有此类数据库(如MySQL、Oracle、MS SQL、PostgreSQL)都提供面向ACID属性的几乎相同的解决方案。当涉及到NoSQL时,选择变得困难,因为每个NoSQL数据库提供不同的解决方案,您必须了解哪一个最适合您的应用程序/系统需求。例如,MongoDB适合需要模式无关文档存储的用例。HBase可能适合搜索引擎、分析日志数据,任何需要扫描庞大的、二维联接表的地方。Redis旨在为各种数据结构(如树、队列、链接列表等)提供内存中搜索,并可作为实时领袖板、发布-订阅等系统的良好选择。同样,在这个类别中还有其他数据库(包括Cassandra),适用于不同的问题。现在让我们转向实际问题,并逐个回答它们。

何时使用Cassandra

作为NoSQL家族的一部分,Cassandra提供了解决方案,用于要求极高编写系统并希望在存储数据的基础上建立非常响应的报告系统的问题。考虑Web分析的用例,其中为每个请求存储日志数据,并且您想围绕其构建分析平台,以实时方式计算按小时、按浏览器、按IP等点击次数。您可以参考博客文章(http://blogs.shephertz.com/2015/04/22/why-cassandra-excellent-choice-for-realtime-analytics-workload/),了解Cassandra适用的用例更多信息。

何时使用关系型数据库而不是Cassandra/NoSQL

Cassandra基于NoSQL数据库,不提供ACID和关系数据属性。如果您对ACID属性有强烈的要求(例如财务数据),那么在这种情况下,Cassandra将不适合使用。显然,您可以通过努力使其工作,但是您最终需要编写大量应用程序代码来处理ACID属性,并且时间成本会因此严重损失。此外,使用Cassandra管理这样的系统会变得复杂而繁琐。


链接目前是一个404错误。 - undefined

7

有许多不同类型的"NoSQL"数据库。如果您的应用程序真的像Wordnet,那么您应该考虑使用图形数据库,例如Neo4j


7
我建议您分析您的请求。
如果您需要更多的集群,则使用NoSQL。
如果您的数据模型很复杂,需要高效的结构,则使用NoSQL(没有列类型的限制)。
如果您只需要几台机器并且不需要超级多请求的性能(例如在社交网络中,许多用户发送http请求),并且您认为不涉及可扩展性,则使用RDBMS(Postgres具有一些很好的函数和结构,您可以使用,如数组列类型)。
Cassandra应该更适合大规模的数据、多用途。
neo4j - 更适合特殊结构、图形。

5

Cassandra和其他NoSQL存储系统被用于社交网站,因为这些网站需要进行大量写入操作。虽然MySQL和Postgres也可以实现这一点,但通常情况下NoSQL所需的时间和金钱要少得多。

听起来你可能想考虑一下Neo4J,尤其是在涉及对象模型的需要上。


0

所有产品都是不同的,它们都有各自的优缺点。您需要解决什么问题?

巨大的,比如TB吗?


我有一组对象和它们之间连接的权重。我想快速找到任意两个对象之间所有可能的路径及其权重。 - Ivri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接