JRDB项目迁移至海大社区讨论
LSM树存储引擎实现方案概述
在计算与存储分离的架构中,存储部分是非常重要的一环,需要有高效稳定的存储引擎来支撑系统的数据存储。LSM树是一种高效的存储引擎,可以作为日志存储引擎和流数据存储引擎使用。本方案将使用LSM树实现一个高效稳定的存储引擎,满足日志和流数据存储的需求。(仓库https://github.com/luoluoyuyu/jDB)
开发目标
- 实现高效稳定的存储引擎,支持海量数据的存储和高速检索;
- 支持多种数据类型的存储,包括文本、数字、二进制等;
- 支持数据的批量写入和单条写入,并保证数据的完整性和可靠性;
- 支持数据的快速查询和遍历,以及范围查询;
- 支持数据的删除和更新,并保证数据的一致性;
- 支持事务、分布式事务2PC。
开发方案
第一阶段
- 使用Java语言进行开发,存储引擎采用LSM树实现,具体包括Memtable、Immutable Memtable、SSTable、Compaction等模块;
- 提供多种数据类型的支持,如字符串、整型、二进制等;
- 支持单条写入,通过对写入数据进行缓存和排序来优化写入性能;
- 通过对数据进行预处理,如压缩、去重、数据结构优化等来优化存储空间;
- 支持高效查询,如key-value查询,通过索引来优化查询性能(跳表、SSTable双层索引);
- 支持数据的删除和更新,采用标记删除和数据版本控制等技术来保证数据的一致性;
- 支持故障恢复、WAL日志;
- 支持基于MVCC的事务、死锁检测。
第二阶段
- 支持基于悲观锁的事务、分布式事务2PC;
- 支持范围查询、批量写入、删除;
- 支持SSTable格式优化、数据压缩。
第三阶段
- 实现监控和管理模块,如数据统计、运行状态监控、数据备份与恢复等;
- 完善CI、版本检查、代码风格检查。
由 luoluoyuyu 编辑于