每个来源都告诉我,在cassandra中支持复杂查询很复杂,你通常需要创建一个新的Column Family
来支持特定的查询(比如关系数据库中的JOINS)。
我不明白为什么你真的需要另一个列系列来进行查询。
IBM在此证明了这方面的一个例子:http://www.ibm.com/developerworks/library/os-apache-cassandra/
系统有Books
,其中包含以下列:Author
,Price
,tag1
,tag2
,tag..
。
如果我想执行类似“获取所有带有标记科幻书面书籍的作者”的查询,他们建议您创建一个名为TagsToAuthor
的列族。为什么这是必要的。我相信您可以在不创建新列系列的情况下执行以下两种解决方案:
Tag
列系列,其中包含以下列:Book1
,Book2
,Book...
,Author1
,Author2
,{{1 }} Author...
列系列&创建一个Tag
列系列,其中包含以下列:BookTag
& book_id
。虽然Cassandra没有加入功能,但您只需从tag_id
列系列中获取标记ID,然后通过查询Tag
获取book_id列表,然后使用这些ID查询BookTag
。就像在普通的关系数据库中一样。这些解决方案有哪些缺点?