推荐答案
在 Cassandra 中,主要有两种类型的索引:
- Secondary Index(二级索引)
- SASI(SSTable Attached Secondary Index)
本题详细解读
1. Secondary Index(二级索引)
- 定义:二级索引是 Cassandra 中最常见的索引类型,用于在非主键列上创建索引,以便加速查询。
- 特点:
- 适用于低基数列(即列中不同值的数量较少)。
- 查询时,Cassandra 会在所有节点上查找匹配的索引条目,因此在高基数列上使用二级索引可能会导致性能问题。
- 不支持范围查询(如
>
、<
等操作符)。
- 创建语法:
CREATE INDEX index_name ON keyspace_name.table_name(column_name);
2. SASI(SSTable Attached Secondary Index)
- 定义:SASI 是一种更高效的索引类型,直接附加在 SSTable 上,支持更复杂的查询操作。
- 特点:
- 支持前缀搜索、范围查询和模糊搜索。
- 适用于高基数列。
- 查询性能优于传统的二级索引,尤其是在大数据集上。
- 由于直接附加在 SSTable 上,索引的维护和查询效率更高。
- 创建语法:
CREATE CUSTOM INDEX index_name ON keyspace_name.table_name(column_name) USING 'org.apache.cassandra.index.sasi.SASIIndex';
总结
- Secondary Index 适用于低基数列,且查询模式较为简单的情况。
- SASI 适用于高基数列,且需要支持复杂查询(如范围查询、模糊搜索)的场景。
根据具体的查询需求和数据分布,选择合适的索引类型可以显著提升 Cassandra 的查询性能。