![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
文章平均质量分 90
胡LiuJia
这个作者很懒,什么都没留下…
展开
-
LevelDB源码解析(5) WriteBatch
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章简介LevelDB的官方注释是这么介绍WriteBatch的:WriteBatch holds a collection of updates to apply atomically to a DB如何保证原子性可能需要看完对WriteBatch的使用才能理清楚,这里只能确定一个WriteBatch对象可以包含多条更新记录(插入/删除),支持批量写入。WriteBatch的很多操作是通过辅助类来实现的,辅助类会直.原创 2021-10-02 09:18:04 · 548 阅读 · 1 评论 -
LevelDB源码解析(4) MemTable
原文作者:胡刘郏原文链接:https://www.huliujia.com/blog/c5e8646cb4765da867b3936b2bae62843bded7e5简介MemTable是LevelDB在内存中的缓存库。用户写入数据时,LevelDB会先把数据写入到MemTable中。如果MemTable写满了,就会新建一个MemTable进行写入。后台再异步把旧的MemTable压缩写到磁盘上。因为旧的MemTable不允许写入了,所以也被称为Immutable MemTmable。MemTa.原创 2021-10-02 09:09:25 · 371 阅读 · 0 评论 -
LevelDB源码解析(3) 变长编码
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章背景LevelDB在内存中存储key、value时,最后是以单值形式存储到一个跳跃表中的,跳跃表我们在上一篇文章LevelDB源码解析之SkipList(跳跃表)聊过了。这里主要想谈一下,LevelDB是如何把key、value编码到一个单值里面的,顺带分析一下为什么要这样做。思考题如何把一对key、value编码到一个单值中呢?很自然的一个想法是用冒号做分割,存储成key:value这种格式。但是如果key或者val.原创 2021-04-18 21:59:20 · 936 阅读 · 0 评论 -
LevelDB源码解析(2) SkipList(跳跃表)
你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章背景SkipList是LevelDB的MemTable使用的底层存储结构,LevelDB实现了一个支持泛型的跳跃表。本文不会具体介绍跳跃表的数据结构,如果读者不了解跳跃表的原理、实现,可以先看一下跳跃表(Skiplist)从原理到实现SkipList的对外接口Level对外只提供了3个接口,构造、插入、查找。没有提供删除接口,这个主要是因为LevelDB不会对SkipList的元素进行删除操作,整个SkipList的存.原创 2021-04-18 21:40:11 · 530 阅读 · 0 评论