我是 Nosql 数据库(如 Cassandra)的新手,目前我看到了这个二级索引和 sstable 附加二级索引。有些我对在 Cassandra 中使用二级索引的目的感到困惑,关系数据库和带有二级索引的 Cassandra 有什么区别?查询时哪个性能更好?
问问题
428 次
1 回答
2
在 Cassandra 中:
如果出现以下情况,您应该使用 SASI:
- 您需要多条件搜索,并且不需要排序/分组/评分
- 您的搜索查询通常需要 100 到 1000 行
- 您总是知道要搜索的行的分区键(这也适用于本机二级索引)
- 你想索引静态列(SASI 没有惩罚,因为它索引整个分区)
如果出现以下情况,您应该避免 SASI:
- 您有非常宽的分区要索引,SASI 只给出分区偏移量。昂贵的线性扫描仍然在 Cassandra 端执行,没有集群列索引的帮助来跳过块
- 您对搜索延迟有很强的 SLA,例如亚秒级要求
- 您需要搜索分析场景(SASI 不适合获取表的一半),除非您将 SASI 与位于同一位置的 Apache Spark 一起使用,但即使在这种情况下,搜索引擎也会以 2 个数量级的搜索延迟排序获胜结果对你很重要
如果您决定在生产中尝试 SASI,请记住,SASI 确实会影响您的写入/刷新吞吐量、压缩吞吐量以及修复和流操作。这是完全可以预料的,因为 SASI 索引文件遵循 SSTable 生命周期。
来源:http ://www.doanduyhai.com/blog/?p=2058
在 RDBMS 中:没有这样的限制。您可以对结果排序、执行聚合和分组。
于 2016-11-21T04:56:02.970 回答