B tree
DamZ
云计算、数据库内核
展开
-
构建一个简单的数据库系列(四)测试用例
英文链接:https://cstack.github.io/db_tutorial/parts/part4.html 这一节主要对第三节大代码进行详细的测试 这里使用rspec工具进行测试用例编写。http://rspec.info/ RSpec是Ruby测试框架,确实不懂,先手工测试下吧 本次优化点 使用strtok替代scanf,并增加了对输入的校验,详见函数:prepare_ins...原创 2019-03-18 22:56:48 · 1150 阅读 · 0 评论 -
构建一个简单的数据库系列(七)引入B-tree
英文链接:https://cstack.github.io/db_tutorial/parts/part7.html B-Tree是SQLite用来表示表和索引的数据结构,因此它是一个非常重要的想法。 为什么树对数据库来讲是非常合适的数据结构呢? 搜索特定值很快(时间复杂度:对数) 插入/删除您已经找到的值很快(重新平衡的时间是常量级的) 遍历一系列值很快(与哈希映射不同) ...原创 2019-03-25 00:17:53 · 274 阅读 · 0 评论 -
构建一个简单的数据库系列(八)B-tree叶子节点格式之一
英文原文链接:https://cstack.github.io/db_tutorial/parts/part8.html 我们将持续修改表的格式,从未排序的数据改成B-tree。因为改动太大,需要花费几节文章来说明。在这节,我们定义叶子节点层,并支持key/value对插入到单节点树。 可选的表格式 当前的格式,每页只存储了rows(不包括元数据),因此从空间上讲是非常高效的。数据插入操作非...原创 2019-03-31 20:46:13 · 928 阅读 · 0 评论 -
构建一个简单的数据库系列(九)二分查找和重复key
英文原文链接:https://cstack.github.io/db_tutorial/parts/part9.html 上次我们注意到我们仍然按照未排序的顺序存储key。我们将解决该问题,并增加对重复key的检查。 当前,我们的execute_insert函数总是选择在表尾插入。但是我们应该先检索到合适的位置,然后再插入。如果key已经存在,则返回error。 ExecuteResul...原创 2019-03-31 23:29:00 · 164 阅读 · 0 评论 -
构建一个简单的数据库系列(十)叶子节点拆分(未完成)
英文原文链接:https://cstack.github.io/db_tutorial/parts/part10.html 我们的B-Tree还不是一个真正的B-Tree,因为只有一个节点。为了解决这个问题,我们需要一些代码来实现拆分一个叶子节点。之后,我们需要创建一个内部节点作为两个叶节点的父节点。 我们本节的目标是: 单节点btree 对此: 两级btree 首先,让我们...原创 2019-03-31 23:34:31 · 307 阅读 · 0 评论