【发布时间】:2014-11-11 03:17:38
【问题描述】:
我将 DSE 用于 Cassandra/Solr 集成,以便将数据存储在 Cassandra 中并在 Solr 中建立索引。分别使用 Cassandra 处理 CRUD 操作和使用 Solr 进行全文搜索是很自然的,而 DSE 可以真正简化 Cassandra 和 Solr 之间的数据同步。
然而,在查询方面,实际上有两种方法:Cassandra 辅助/手动配置索引与 Solr。我想知道何时使用哪种方法以及一般的性能差异是什么,尤其是在 DSE 设置下。
这是我项目中的一个示例用例。我有一个存储一些项目实体数据的 Cassandra 表。除了基本的 CRUD 操作之外,我还需要在某个字段(比如类别)上通过相等性检索项目,然后按某种顺序排序(在我的例子中,一个 like_count 字段)。
我能想到三种不同的处理方式:
- 在 Solr 架构中为类别和 like_count 字段声明“indexed=true”并在 Solr 中查询
- 在 Cassandra 中使用主键(类别、like_count、id)创建非规范化表
- 在 Cassandra 中使用主键(类别、订单、id)创建一个非规范化表,并使用外部组件(如 Spark/Storm)按 like_count 对项目进行排序
第一种方法似乎是最容易实现和维护的。我只是写了一些琐碎的 Solr 访问代码,其余的繁重工作由 Solr/DSE 搜索处理。
第二种方法需要在创建和更新时手动进行非规范化。我还需要维护一个单独的表。还有一个墓碑问题,因为 like_count 可能会经常更新。好的部分是读取可能会更快(如果没有过多的墓碑)。
第三种方法可以减轻墓碑问题,但需要一个额外的排序组件。
您认为哪种方法是最佳选择?性能上有什么区别?
【问题讨论】:
标签: solr cassandra datastax-enterprise