数据库最基本的两件事情: 插入和查询
涉及2个问题,如何存储数据和查找数据。
最简单的结构
底层结构:一个纯文本文件,其中每行包含一个key-value对
插入: 每次插入即追加新的内容到文件末尾,相同的值不会覆盖。
查询: 查看文件中最后一次出现的值来找到最新的值。
追加到文件尾部的方式通常足够高效,这种机制叫做日志(log),这里的日志表示的是一个仅能追加的记录序列集合。
问题: 查找会很慢,需要遍历从头到尾,o(n)。为了高效的查找,需要新的结构:索引。
索引背后的基本想法都是使用一些额外的空间,来帮助定位到想要的数据。由于每次写数据,需要更新索引,因此任何类型的索引通常都会降低写的速度。
最简单索引-哈希索引
把每个key和对应的位置的偏移量都建立映射(一般内存中)。通过偏移量,只需要最多一次磁盘寻址,就可以将value加载到内存。
优化: 如果一直追加到一个文件中,最终会用尽磁盘。将lo