Cassandra:用于复杂查询的列族?

时间:2014-02-22 06:57:03

标签: nosql cassandra bigdata non-relational-database

每个来源都告诉我,在cassandra中支持复杂查询很复杂,你通常需要创建一个新的Column Family来支持特定的查询(比如关系数据库中的JOINS)。

我不明白为什么你真的需要另一个列系列来进行查询。

IBM在此证明了这方面的一个例子:http://www.ibm.com/developerworks/library/os-apache-cassandra/

系统有Books,其中包含以下列:AuthorPricetag1tag2tag..

如果我想执行类似“获取所有带有标记科幻书面书籍的作者”的查询,他们建议您创建一个名为TagsToAuthor的列族。为什么这是必要的。我相信您可以在不创建新列系列的情况下执行以下两种解决方案:

  • 创建Tag列系列,其中包含以下列:Book1Book2Book...Author1Author2,{{1 }}
  • 创建Author...列系列&创建一个Tag列系列,其中包含以下列:BookTag& book_id。虽然Cassandra没有加入功能,但您只需从tag_id列系列中获取标记ID,然后通过查询Tag获取book_id列表,然后使用这些ID查询BookTag 。就像在普通的关系数据库中一样。

这些解决方案有哪些缺点?

0 个答案:

没有答案