Build Your Own Database
7 months ago
- #key-value
- #database
- #LSM-tree
- 键值数据库通过键存储数据,并可通过相同的键检索数据。
- 持久化数据存储可通过文件实现,但原地更新和删除效率较低。
- 仅追加文件使记录不可变,将更新和删除视为追加到文件的新记录。
- 重复键和文件大小增长是仅追加文件面临的挑战。
- 分段(Segments)和压缩(Compaction)通过定期合并和清理旧数据来管理文件大小。
- 索引通过存储记录偏移量提升查询性能,但会降低写入速度。
- 排序字符串表(SST)通过按键排序数据,支持高效的范围查询。
- LSM(日志结构合并)树结合内存中的有序列表(memtable)和磁盘上的SST,实现快速的键值操作。
- LSM树用于LevelDB、DynamoDB等大规模数据库,在高负载下仍能保持高性能。