【问题标题】:When to choose Cassandra over a SQL/Semantic Store solution?何时选择 Cassandra 而不是 SQL/语义存储解决方案?
【发布时间】:2011-06-08 09:05:16
【问题描述】:
我有 30-40 GB 的数据和 3 台开发人员机器(Core Duo i4、3GB)。数据是一组类似图的结构,我有遍历图的查询。是否有指导方针可以帮助我决定使用 Cassandra 还是经典解决方案,例如 SQL 或 Semantic Store?我目前的计划是设置 Cassandra 并查看它是如何工作的,但我想在开始安装之前了解更多信息。
【问题讨论】:
标签:
sql
nosql
cassandra
semantics
【解决方案1】:
我不会将 Cassandra 用于任何类型的图形级结构。自从我考虑做类似的事情已经过去了大约 6 个月,所以也许 Cassandra 从那时起已经继续前进,但我发现它从根本上受到了它只有行级索引的限制。
对于基于图形的结构(假设每行布局一个简单的弧),您确实还需要列索引,因为如果您想遍历图形,您希望能够从特定节点 A 开始并找到所有从该节点出发的弧线(假设是有向图),那么您必须对整个数据集进行行扫描,因为没有内置功能可以告诉我在特定列中具有 A 的行。
要实现这一点,您必须有效地为 Cassandra 设计一个数据布局,为您提供倒排索引。这有点棘手,需要您提前知道要回答的查询类型 - 如果您设计不好,在以后的数据中回答新类型的查询可能非常困难或不可能。这些slides 演示了这个想法,但我希望它清楚地表明您必须有效地构建自己的索引。
对于可以分解为三元组的图结构,请考虑使用 RDF 存储 - 对于更复杂的结构,请考虑使用完整的图数据库。如果您真的想做 NoSQL,您可能可以在文档数据库之上构建一些东西,因为它们往往具有更好的索引,但是您必须再次仔细考虑如何存储数据。