二、LSM-tree model for KVS
设计系统需要考虑的内容
- 需求: key-value
- 功能接口:
- 架构:有的侧重读,有的侧重写
- 模块
- 模块内数据结构、算法
- 模块间接口
- 测试
功能需求
-
KVS的存储
- 扩展存储(多节点):一致性哈希 —— 增加机器的时候,迁移的数据少。
-
点操作:
- 操作一个数据的读和写
-
范围操作:
- 操作多个数据的读 [start_key,end_key]
-
容错(A,D)
- Durability:保证commit之后落盘,防止在内存中宕机等事故,丢失数据 —— 日志可以保证
- Atomic: 这里只讨论一个数据的读和写,就很好保证原子性
-
一致性
-
可线性化:时间点在后面的’读’一定能读到 它 前面时间点的’写’。
-
KVS的点操作:
- 不同数据:不会出现一致性问题
- 相同数据:
- 当 写——>读 无交集,一定要保证读能读到写的内容
- 当 读——>写 or 写——>读 有交集时 可以找到一个可归约的点来保证一致性。 </
-