LevelDB 的原理和动机
浏览:2936次 出处信息
写硬盘
为了持久化, 必须写硬盘.
Log 文件
为了快速写入硬盘, 必须采用追加方式顺序写到 log 文件. 这导致 log 文件中的数据是无序的.
sst 文件
为了快速从硬盘中读取数据, 基于查找算法和局部性原理考虑, 必须将数据排序组织到 sst 文件中.
多个 sst 文件而不是单个
为了快速的插入数据到 sst 文件中, 必须使用多个 sst 文件, 每个 sst 文件只保存一定范围的数据. 堆.
Levels
为了减少 log 文件合并所影响的 sst 文件个数, 将 sst 按层次组织, 层次越深, 文件数量越多. 最坏的情况, 每一次合并都会修改该层次所有的 sst 文件. 而层次越深, 合并发生的概率越小. 树.
Bloom Filter
由于 LevelDB 在某一层查找不存在的数据时, 会继续在下一层进行查找, 所以对于不存在的数据的查找会速度非常慢. 所以, 需要结合 Bloom Filter, 利用 Bloom Filter 能快速地判定”不存在”的特点.
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:在移动硬盘上安装 Arch Linux
后一篇:Travis CI:专为开源项目打造的持续集成环境 >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: LevelDB
- 发布时间:2013-01-16 14:09:55
近3天十大热文
-
[928] WordPress插件开发 -- 在插件使用 -
[134] 解决 nginx 反向代理网页首尾出现神秘字 -
[55] 整理了一份招PHP高级工程师的面试题 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 全站换域名时利用nginx和javascri -
[52] 海量小文件存储 -
[51] 用 Jquery 模拟 select -
[50] Innodb分表太多或者表分区太多,会导致内 -
[50] CloudSMS:免费匿名的云短信 -
[48] jQuery性能优化指南
