我有一个庞大的数据库(类似于WordNet),想知道是否使用Cassandra比使用MySQL或PostgreSQL更容易。
我一直在使用MySQL和PostgreSQL,可以轻松地从关系代数的角度思考,但几周前我了解到Cassandra,以及它在Facebook和Twitter中的使用。
它更方便吗?
现在通常使用什么数据库管理系统来存储社交网络的数据、对象之间的关系和WordNet?
我有一个庞大的数据库(类似于WordNet),想知道是否使用Cassandra比使用MySQL或PostgreSQL更容易。
我一直在使用MySQL和PostgreSQL,可以轻松地从关系代数的角度思考,但几周前我了解到Cassandra,以及它在Facebook和Twitter中的使用。
它更方便吗?
现在通常使用什么数据库管理系统来存储社交网络的数据、对象之间的关系和WordNet?
没有一种银弹解决方案,每个解决方案都是为解决特定问题而构建的,都有其优缺点。由您来决定选择哪种最适合您的问题陈述和最佳解决方案。无论您使用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管理这样的系统会变得复杂而繁琐。
Cassandra和其他NoSQL存储系统被用于社交网站,因为这些网站需要进行大量写入操作。虽然MySQL和Postgres也可以实现这一点,但通常情况下NoSQL所需的时间和金钱要少得多。
听起来你可能想考虑一下Neo4J,尤其是在涉及对象模型的需要上。
所有产品都是不同的,它们都有各自的优缺点。您需要解决什么问题?
巨大的,比如TB吗?