1 个不稳定版本
0.0.1 | 2019年10月9日 |
---|
#6 在 #lsm
640KB
16K SLoC
键值存储
- 支持CRUD操作。
- ACID合规。
- 索引仅存储在内存中,适用于缓存数据。
- 索引存储在内存中,磁盘作为备份。
- 索引存储在磁盘上。
- 索引存储在磁盘上,工作集存储在内存中。
- 使用预写日志保证持久性。
- 基于LSM的多级存储,在内存和/或磁盘上。
- 可以使用以下方式组合索引
- 键的类型选择。
- 值的类型选择。
- 内存数据结构的类型选择。类型可以是
- 左倾红黑树。
- 左倾红黑树,具有多版本并发控制。
- 跳表,具有并发写入。
- 磁盘数据结构的类型选择。
- 只读B树。
- 追加B树。
- 索引条目的集中式版本控制。
- 索引条目的去中心化版本控制。
- 值及其增量可以存储在单独的日志文件中。
开放式设计决策
鉴于Rust的线程模型,使用原子原语强制所有MVCC索引的写操作委托给单个线程是否比从多个线程序列化写操作更高效?
对于AtomicPtr操作管理MVCC快照,使用Relaxed内存顺序是否足够?
添加一个功能,使用jemalloc代替系统分配器。
依赖关系
~11MB
~74K SLoC