1

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

我不明白为什么您实际上需要另一个列族进行查询。

IBM 在此处演示了一个示例:http: //www.ibm.com/developerworks/library/os-apache-cassandra/

该系统具有Books以下列:Author, Price, tag1, tag2, tag...

如果我想执行诸如“获取所有写过带有 sci-fi 标签的书籍的作者”之类的查询,他们建议创建一个名为TagsToAuthor. 为什么这是必要的。我相信您可以在不创建新列族的情况下执行以下 2 个解决方案:

  • 创建一个Tag列族,列:Book1, Book2, Book..., Author1, Author2,Author...
  • 创建一个Tag列族并创建一个BookTag包含列的列族:book_id& tag_id。虽然 Cassandra 没有连接功能,但您可以简单地从Tag列族中获取标签 id,然后通过查询获取 book_id 的列表BookTag,然后使用这些 id 进行查询Book。就像在普通的关系数据库中一样。

这些解决方案有什么缺点?

4

0 回答 0