我有庞大的数据库(有点wordnet),想知道是否更容易使用Cassandra而不是MySQL
|PostrgreSQL
我一生都在使用MySQL
,PostrgreSQL
而且我可以很容易地用关系代数来思考,但几周前我了解了Cassandra,并且它在Facebook和Twitter中使用过.
它更方便吗?
现在通常使用什么DBMS来存储社交网络的数据,对象之间的关系,wordnet?
没有什么比银弹解决方案更好,一切都是为了解决具体问题而建立的,并且各有利弊.由您决定 - 您有什么问题陈述以及哪种解决方案适合您的问题.无论您使用的是Cassandra(NoSQL)还是MySQL(RDBMS),它都是根据您的系统要求驱动的.以下是有助于您在决定数据库时做出更好决策的输入.
为什么要使用NoSQL
对于RDBMS数据库,做出选择非常简单,因为几乎所有类似MySQL,Oracle,MS SQL,PostgreSQL的数据库都提供了几乎与ACID属性相同的解决方案.说到NoSQL,决策变得困难,因为每个NoSQL数据库都提供不同的解决方案,您必须了解哪一个最适合您的应用程序/系统要求.例如,MongoDB适用于系统需要无架构文档存储的用例.HBase可能适合搜索引擎,分析日志数据,任何需要扫描巨大的二维无连接表的地方.Redis旨在为树,队列,链接列表等各种数据结构提供内存搜索,并且非常适合制作实时排行榜,pub-sub类系统.同样,此类别中还有其他数据库(包括Cassandra),适用于不同的问题.现在让我们转到原始问题,并逐一回答.
什么时候使用Cassandra
作为NoSQL系列的一部分,Cassandra提供了解决问题的解决方案,您的要求是拥有非常繁重的写入系统,并且您希望在存储的数据之上拥有响应迅速的报告系统.考虑Web分析的用例,其中为每个请求存储日志数据,并且您希望在其周围构建分析平台,以按小时,按浏览器,按IP等实时计算点击次数.您可以参考博客文章(http://blogs.shephertz.com/2015/04/22/why-cassandra-excellent-choice-for-realtime-analytics-workload/)来了解更多有关Cassandra适合的用例的信息在.
何时使用RDMS而不是Cassandra/NoSQL
Cassandra基于NoSQL数据库,不提供ACID和关系数据属性.如果您对ACID属性有强烈要求(例如财务数据),那么Cassandra就不适合.显然,你可以用它来完成工作,但是你最终会编写大量的应用程序代码来处理ACID属性,并且会在时间上错误地推向市场.使用Cassandra管理这种系统对你来说既复杂又乏味.
有许多不同风格的"NoSQL"数据库.如果您的应用程序非常像Wordnet,那么您应该查看一个图形数据库,例如Neo4j.
我建议分析你的要求.
如果你要使用更多的集群,机器会使用NoSQL
如果您的数据模型很复杂 - 需要有效的结构,请使用NoSQL(对列的类型没有限制)
如果您适合没有秤的几台机器,并且您不需要超级性能来满足多个请求(例如在社交网络中 - 许多用户发送http请求),并且您认为您不涉及可销售性需要RDBMS( Postgres有一些很好的功能和结构,你可以使用,比如数组列类型).
Cassandra应该能够更好地处理大规模数据,多用途.neo4j - 对于特殊结构,图表会更好.