yet another rocksdb based redis, let's call it yedis
- highly horizontal scalable redis
- fully data can be persistent
- paxos based consistent protocol
- zset member strlen(key + value) < page_size / 2
- 默认8位的score 大小
- degree >= 4, just for index_split, if not index_split will be complicated
- 处理分裂如何记住当前需要分裂节点的位子
- 是否要记住当前page的父节点
- 实现search
- leaf node需要前后指针
- 测试util的Random和随机字符串的生成
- 算法导论的分裂算法是在搜索路径中出现满节点的就开始分裂, 用来维护btree的平衡
- 算法4里是递归更新(从底向上分裂)
- node_page中flag需要提前,不然不好写parser
- random inseret
- small page_size test
- graph
-
current page_id will be wrong after page return back to memory, if not call SetPageID implicitly
-
map erase will cause pointer destruct?
- 并不会导致指针的析构
-
index要满的情况,leaf_split可能会导致,index要add 2次child,所以有可能导致index也会满掉的场景
-
pin and unpin logic
-
ParentID的准确性定义: 保证搜索路径上的parent_id的正确应该就足够了, 不能保证每个parent_id的正确性
-
需要增加index_page的pretty print debug
-
BTreeSmallPageTest.RandomBigInsert failed
-
github-ci
-
replay tests
-
pass BTreeSmallPageTest.LeafNodePrevAndNextTest
-
remove 删除page的是如何和物理page_id做对应, 比如删除了page_id = 3的page,那么page_id=5的实际文件offset要往前移动
-
index_remove test
-
remove the only one key case
- 依赖abseil
- 依赖https://github.com/google/crc32c/