Zij*_*eng 8 solr cassandra datastax-enterprise
我正在使用DSE进行Cassandra/Solr集成,以便将数据存储在Cassandra中并在Solr中编制索引.使用Cassandra处理CRUD操作并分别使用Solr进行全文搜索是非常自然的,DSE可以真正简化Cassandra和Solr之间的数据同步.
但是,在查询方面,实际上有两种方法:Cassandra辅助/手动配置索引与Solr.我想知道何时使用哪种方法以及通常的性能差异,特别是在DSE设置下.
这是我项目中的一个示例用例.我有一个存储一些项目实体数据的Cassandra表.除了基本的CRUD操作之外,我还需要在某些字段(比如类别)上按等号检索项目,然后按某种顺序排序(在我的例子中,这是一个like_count字段).
我可以想到三种不同的方法来处理它:
第一种方法似乎是最简单的实现和维护.我只是写了一些简单的Solr访问代码,其余的繁重工作由Solr/DSE搜索处理.
第二种方法需要在创建和更新时进行手动非规范化.我还需要维护一个单独的表.还有墓碑问题,因为like_count可能会经常更新.好的部分是读取可能更快(如果没有过多的墓碑).
第三种方法可以以一个额外的分类组件为代价来减轻墓碑问题.
您认为哪种方法是最佳选择?性能有何不同?
Jac*_*sky 25
Cassandra二级索引的用例有限:
由于这些限制,应用程序通常会创建"索引表",索引表由所需的任何列索引.这要求将数据从主表复制到每个索引表,或者需要额外的查询来读取索引表,然后在从索引表中读取主键后从主表中读取实际行.必须事先手动索引多列上的查询,这使得即席查询有问题.并且任何重复的内容都必须由应用程序手动更新到每个索引表中.
除此之外......如果从适度数量的节点中选择"适度"行数,并且提前很好地指定查询而不是临时查询,它们将正常工作.
DSE/Solr更适合:
使用Solr索引会产生性能和容量成本,因此建议使用概念验证来评估需要多少额外的RAM,存储和节点,这取决于您索引的列数,索引的文本量以及任何文本过滤复杂性(例如,n-gram需要更多.)对于相对较少数量的索引列,其范围可以从25%增加到如果所有列都被索引的100%.此外,您需要有足够的节点,以便每个节点的Solr索引适合RAM,或者如果使用SSD,则大部分位于RAM中.目前,Solr数据中心不推荐使用vnodes.
归档时间: |
|
查看次数: |
5460 次 |
最近记录: |