从 FileSystem/Env 文件抽象、TableCache、TableReader、BlockBasedTableReader、BlockFetcher、RandomAccessFileReader 和 ReadOptions 出发,梳理 RocksDB 点查 SST 时如何从逻辑查找落到物理 block 读取,并区分 table cache、block cache、prefetch buffer 与 OS page cache 的职责边界。
从 WriteBatch sequence 分配、SnapshotImpl、DBImpl::GetImpl、LookupKey、GetContext、DBIter 和 ReadCallback 源码出发,梳理 RocksDB 如何用 sequence number 表达版本顺序,用 snapshot 固定读可见性上界,并在 Get 与 Iterator 路径中过滤不可见版本。
预览传统 OLTP 与存储基础专题,说明为什么 PostgreSQL、MySQL/InnoDB、SQLite 仍然是理解现代数据库的比较基线,并建立后续系统文章要追问的 storage-first 框架。
数据库行业长期学习索引与轻量状态文件,用于恢复专题进度、导航调研报告,并记录问题、来源和工程启发。
从 storage-first 视角建立现代数据库行业全景,先把传统单机数据库、嵌入式存储引擎、分布式 SQL、云原生数仓、实时 OLAP、搜索与向量数据库放到同一张地图里,再沉淀后续源码阅读和系统调研的问题框架。
数据库行业专题调研报告模板,用于按 storage-first 视角拆解现代数据库系统。
从 DBImpl::GetImpl、MultiGetImpl、NewInternalIterator、Version::Get、TableCache 和 BlockBasedTableReader 源码出发,梳理 RocksDB 读路径如何在 SuperVersion 稳定视图上先查 memtable,再查 immutable memtable,最后查 SST,并说明 Get、MultiGet 与 Iterator 的职责边界。
结合 BuildTable、TableBuilder、BlockBasedTableBuilder、BlockBuilder、BlockHandle 和 Footer 的源码,从写侧视角梳理 RocksDB 如何把 flush/compaction 输入流编码成 block-based SST,以及 data/index/filter/properties/metaindex/footer 各自的职责与字节边界。
结合 ScheduleFlushes、SwitchMemtable、BackgroundFlush、FlushJob、MemTableList::TryInstallMemtableFlushResults 与 GetDBRecoveryEditForObsoletingMemTables 的源码,梳理 RocksDB 如何把 mutable memtable 切成 immutable、刷成 L0 SST,并推进 MANIFEST 与 WAL 保留边界。
结合 LookupKey、InternalKeyComparator、MemTable::Get、SaveValue、range_del_table_ 与 WriteBatch::InsertInto 的源码,梳理 RocksDB 如何在 memtable 中实现删除、多版本可见性、范围删除覆盖以及 seq_per_batch 语义。