Cassandra和非结构化数据

时间:2014-07-17 14:21:53

标签: cassandra database-schema

我对NoSQL比较陌生,但我对关系数据库做了很多工作。

我们正在评估Cassandra在我们的数据模型可能需要相当积极发展的环境中使用。我已经看到它写了多个地方,Cassandra可以存储“结构化,半结构化和非结构化”的数据。

我理解结构化的主张。很明显:表已经定义了列。

我想我理解半结构化的主张。一行不需要填充所有列。

但我不清楚非结构化的主张。当然,您可以将所有内容存储为键值blob,但您无法按值(高效)进行搜索。

我未能在网上找到任何描述使用Cassandra的非结构化数据的最佳实践的资源。理想情况下,对于我们的应用,半结构化数据就足够了;但我希望了解非结构化的主张,因为它可以为我们增加价值。

感谢。

2 个答案:

答案 0 :(得分:3)

Cassandra充其量只能搜索半结构化数据。这也是通过使用群集密钥和二级索引。群集密钥绝对是搜索半结构化数据的有效方式。

在不指定分区键的情况下搜索二级索引数据效率不高。这里有一些有用的解决方案,即DSE Search(Solr with Cassandr)和Stargate。如果其中一列是非结构化文本,这两种解决方案也可能有所帮助。

否则,使用Cassandra进行非结构化数据并不是一个好主意,因为没有密钥可能无法搜索。

答案 1 :(得分:1)

非结构化意味着您拥有无架构列系列。每行(显然)都有一个行键。但每行的其余部分可以包含任意键/值对 - 即使数据类型也不需要在行之间匹配。

但正如trulite正确指出的那样,使用无模式数据模型通常是一个坏主意。看http://planetcassandra.org/blog/post/the-myth-of-schema-less/