数据库的数据结构 LSM-Tree 和 B-tree

本文探讨了数据库中的两种重要数据结构——LSM-Tree和B-tree。LSM-Tree利用日志结构实现高效插入,适用于顺序写操作,但查询可能较慢;B-tree则提供更快的查询速度,但写入操作相对较慢。LSM-Tree通过SSTables和内存中的数据结构优化查询,而B-tree通过固定大小的页和内部链接进行高效查找。两者各有优缺点,适用于不同的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库最基本的两件事情: 插入和查询

涉及2个问题,如何存储数据和查找数据。

 

最简单的结构

底层结构:一个纯文本文件,其中每行包含一个key-value对

插入: 每次插入即追加新的内容到文件末尾,相同的值不会覆盖。

查询: 查看文件中最后一次出现的值来找到最新的值。

追加到文件尾部的方式通常足够高效,这种机制叫做日志(log),这里的日志表示的是一个仅能追加的记录序列集合。

问题: 查找会很慢,需要遍历从头到尾,o(n)。为了高效的查找,需要新的结构:索引。

索引背后的基本想法都是使用一些额外的空间,来帮助定位到想要的数据。由于每次写数据,需要更新索引,因此任何类型的索引通常都会降低写的速度。

 最简单索引-哈希索引

把每个key和对应的位置的偏移量都建立映射(一般内存中)。通过偏移量,只需要最多一次磁盘寻址,就可以将value加载到内存。 

优化: 如果一直追加到一个文件中,最终会用尽磁盘。将lo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值