请阐述Cassandra利用SSTable与Memtable两种存储组件达成高效数据存储的核心机制与设计思路。
考察说明
考查对Cassandra存储引擎核心组件及其协同工作机制的理解。
回答思路
- 【回答框架 1】Memtable是内存中的有序结构(如跳表),负责接收写入并临时缓存,按分区键排序,提供快速写入路径;当大小或时间阈值触发时,Memtable被刷写为不可变的SSTable文件。
- 【回答框架 2】SSTable是磁盘上的有序不可变文件,采用列式存储与索引、布隆过滤器等辅助结构,支持高效范围查询与点查;不可变性简化了并发与故障恢复。
- 【回答框架 3】写入先到Memtable并写Commit Log保证持久性,刷盘后合并SSTable,通过Compaction过程合并、清理过期数据,维持读取性能与磁盘空间利用。
- 【回答框架 4】读取时先查Memtable,再按需查SSTable的布隆过滤器与索引,避免全表扫描,实现高效读取。
- 【关键点 1】Memtable是内存有序结构,提供快速写入与临时排序。
- 【关键点 2】SSTable是不可变磁盘文件,配合索引和布隆过滤器优化读取。
- 【关键点 3】写路径依赖Memtable和Commit Log保证数据安全,读路径结合多级结构。
- 【关键点 4】Compaction定期合并SSTable并清理冗余,维持性能。
- 【易错点 1】不可将Memtable或SSTable单独视为完整存储。
- 【易错点 2】布隆过滤器有误判概率,读取时仍需确认。
- 【易错点 3】Compaction会消耗IO资源,可能影响服务。