LevelDB整体架构学习笔记

LevelDB是由Google开发的持久化KV数据库,它基于LSM-Tree结构,通过将随机写转化为顺序写,大幅提高写入性能。数据在内存和磁盘上以两棵树的形式维护有序Key空间,随着写入增加,内存中的数据会定期与磁盘数据归并,这一过程仅涉及顺序写入,有效利用了磁盘的高速顺序写能力。
摘要由CSDN通过智能技术生成

一、简介

LevelDB是一个可持久化的KV数据库引擎,由Google传奇工程师Jeff Dean和Sanjay Ghemawat开发并开源。

二、设计思路

众所周知,普通机械磁盘的顺序写性能远高于随机写,例如15000转的SAS盘,4000 IO写入,顺序写IOPS 为 200MB/s,而随机写性能只有 1MB/s,相差200倍。LevelDB的设计正是利用了磁盘的这个特性。

LevelDB的数据是存储在磁盘上的,采用 LSM-Tree 结构。LSM-Tree将磁盘的随机写转化为顺序写,从而大大提高了写速度。

为了做到这一点,LSM-Tree的思路是将索引树拆成一大一小两棵树,较小的一颗常驻内存,较大的一颗持久化到磁盘,这一大一小两棵树共同维护一个有序的Key空间。

写入操作,会首先操作内存中的树,随着内存中树的不断变大,会触发与磁盘中树的归并操作,而归并操作本身仅有顺序写。

在这里插入图片描述
上图中,红色区域是要进行归并的数据块,计算出顺序后,会存储到图中下面的磁盘空间,而这种存储方式是追加式的,也就是顺序写入磁盘。

随着数据的不断写入,磁盘中的树会不断膨胀,为了避免每次参与归并的操作的数据量过大,以及优化读操作的考虑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值