何时在SQL /语义存储解决方案中选择Cassandra?

时间:2011-01-13 09:09:47

标签: sql nosql cassandra semantics

我有30-40 GB的数据和3台开发者机器(Core Duo i4,3GB)。数据是一组图形结构,我有遍历图形的查询。是否有指导可以帮助我决定使用Cassandra或经典解决方案,例如SQL或语义存储?我目前的计划是设置Cassandra,看看它是如何工作的,但我想在开始安装之前了解更多。

1 个答案:

答案 0 :(得分:1)

我不会将Cassandra用于任何类型的图级结构。自从我考虑做类似事情已经过去了大约6个月,所以也许Cassandra从那时起就开始了,但我发现它基本上受限于它只有行级索引这一事实。

对于基于图形的结构(假设每行布局简单一个弧),您确实需要列索引,因为如果要遍历图形,您希望能够从特定节点A开始。找到从该节点开始的所有弧(假设有向图),然后你必须对整个数据集进行行扫描,因为没有内置的功能可以说明给我A的行一个特定的专栏。

要实现这一目标,您必须为Cassandra有效地设计数据布局,为您提供倒排索引。这有点棘手,需要您提前知道要回答的查询类型 - 如果设计不好,可能很难或不可能在以后的数据中回答新类型的查询。这些slides证明了这个想法,但我希望它能说明你有效地构建自己的索引。

对于可以分解为三元组的Graph结构,考虑一个RDF存储 - 对于更复杂的结构,然后考虑一个完整的图形数据库。如果你真的想要做NoSQL,你可以在文档数据库之上构建一些东西,因为它们往往有更好的索引,但你必须仔细考虑如何存储数据。