【问题标题】:Cassandra secondary indices v. LuceneCassandra 二级索引诉 Lucene
【发布时间】:2016-06-29 05:20:42
【问题描述】:

我知道 Cassandra 是一个 NoSQL 数据库,用许多索引对其进行修补不是可行的方法,但我正在为我的分析集群寻找解决方案,而不是为生产/实时集群寻找解决方案。

所以我认为添加索引以减少 Spark 过滤的数据量是有意义的。

原生 Cassandra 二级索引与 Lucene 的索引相比如何?

许多功能仅靠 Cassandra 是不可用的,但是你可以同时使用这两者的功能呢?

只使用 Lucene 更好/有意义吗?

我看到的另一个优势是我可以只在我的分析集群上安装 Lucene,而不会用索引使实时集群过载(从而提高那一侧的写入性能)。

【问题讨论】:

  • 您的分析用例到底是什么?为什么您认为您需要 NoSQL 作为 Spark 的存储层? Spark 会对该存储执行任何写入操作吗?您是否需要数据的搜索功能(Lucene)?或者只是处理简而言之,请提供更多信息...
  • Spark 可能会进行一些写入,但这不是最常见的用例。我不需要“搜索”功能,而是需要 where 谓词功能。

标签: cassandra lucene


【解决方案1】:

不要为 Lucene 集成而烦恼

Cassandra 3.4 开始,我们有了一个名为 SASI 的新二级索引,它提供全文搜索并且非常高效。

阅读:https://github.com/apache/cassandra/blob/trunk/doc/SASI.md

【讨论】:

  • 这看起来确实是完美的解决方案。有没有比较 Lucene 和 Sasi 的地方?
  • 还没有比较,但是SASI对于本地读取路径的性能要好得多,因为索引结构提供了直接从SSTable读取数据的偏移量,因此不需要通过普通的Cassandra读取路径来读取获取源数据
  • 如果您希望对仅包含二级索引的查询进行排序功能,该怎么办。我认为这无法使用 SASI 实现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 2013-09-30
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
相关资源
最近更新 更多