请解释 HBase 中多版本并发控制(MVCC)的实现机制,并说明它如何实现数据多版本存储。
考察说明
考查对 HBase 内部 MVCC 机制及多版本数据存储原理的理解。
回答思路
- 【回答框架 1】HBase 的 MVCC 通过行级时间戳和版本号实现,每个单元格可保存多个版本,版本由时间戳标识,读取时返回指定时间戳或最新版本。
- 【回答框架 2】写入时,Put 操作携带时间戳,若未指定则使用服务器当前时间;数据按行键、列族、列限定符和时间戳倒序存储,最新版本在前。
- 【回答框架 3】MVCC 通过内存中的读写锁和版本链实现并发控制,读操作获取一致性快照,写操作追加新版本,避免读写互斥,提升并发性能。
- 【回答框架 4】多版本存储依赖 HFile 和 MemStore,MemStore 按版本保留数据,Flush 到 HFile 时合并版本,并可通过 TTL 和版本数上限清理旧版本。
- 【回答框架 5】读取时,Scan 和 Get 支持指定时间范围或版本数,默认返回最新版本,通过版本号实现时间旅行查询。
- 【关键点 1】HBase 每个单元格可存多版本,版本由时间戳标识,默认保留 3 个版本。
- 【关键点 2】MVCC 通过时间戳和版本链实现读写并发,读操作获取快照,写操作追加版本。
- 【关键点 3】数据按时间戳倒序存储,最新版本优先读取,支持指定时间戳查询。
- 【关键点 4】版本清理依赖 TTL 和最大版本数配置,Flush 时合并旧版本。
- 【易错点 1】不能将 MVCC 等同于事务隔离,HBase 的 MVCC 仅保证行级操作的一致性,不提供跨行事务。
- 【易错点 2】版本数配置过大会增加存储和读取开销,需根据业务合理设置。
- 【易错点 3】时间戳由客户端指定时,需确保时钟一致,否则可能导致版本错乱。