浅读:PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees
论文地址:https://www.cs.utexas.edu/~vijay/papers/sosp17-pebblesdb.pdf
背景
主要解决LSM Tree的level compaction写放大:预期解决第N层到第N+1层compaction过程中需要参与compaction的文件过多的问题;
主要思想
借鉴skipList的思想,引入guard概念,将level compaction的每层切割为不同的guard分而治之;
guard特点:
- 弱化全局有序的约束;
- 每层分段,每层的段之间不重叠;
- 每层的guard之间要求保序,但是guard内部可以无序;
- guard如果在上一层存在,那么下面所有层都存在;
- 层数越深,guard越多;
- L0没有guard划分;
compaction流程的变化
- Level compaction:
- 分层组织结构导致写放大的原因是Li在下推数据的时候跟整个Li+1是重叠的,所以导致所有Li和Li+1的数据都要重写,这显然增加了写放大。
- FLSM:
- 使用guard分而治之,当L-n层数据需要下推的时候,不再是整个L-n一起下推,而是以guard粒度进行,那些基本没有数据变化的guard就不用下推了;
- compaction 第N层文件,直接放入N+1层,而不是和N+1层的文件合并;
FLSM优点:因为每次需要重写的文件少了,所以写放大减小了;
FLSM缺点:因为文件变多,读放大严重了;
参考资料
https://www.cs.utexas.edu/~vijay/papers/sosp17-pebblesdb.pdf
https://zhuanlan.zhihu.com/p/46069535
https://zhuanlan.zhihu.com/p/32225460
https://zhuanlan.zhihu.com/p/368061877
https://www.cs.utexas.edu/~vijay/papers/pebblesdb-sosp17-slides.pdf
浅读:PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees相关推荐
- Redux源码全篇浅读
本文是关于 redux(3.7.2)源代码的一些浅读 在redux源码目录中 ,可以看到以下文件目录: |-- utils/|-- warning.js //打印error |-- 1. applyM ...
- 机器学习论文源代码浅读:Autoformer
原本想要和之前一样写作"代码复现",然而由于本人一开始对于Autoformer能力理解有限,参考了一定的论文中的源代码,写着写着就发现自己的代码是"加了注释版本" ...
- 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
浅读<视觉SLAM十四讲:从理论到实践>--操作1--初识SLAM 下载<视觉SLAM十四讲:从理论到实践>源码:https://github.com/gaoxiang12/s ...
- 浅读《解密社群粉丝经济学》几点观点
浅读<解密社群粉丝经济学>几点观点 为什么会形成社群?因为在消费者主权时代,随时随地互联的移动互联网时代,每一个既弱小又能自主的个体,在信息过度的时空里,必然自发的基于某种机缘.兴趣和价值 ...
- 浅读西瓜书(第四章)
浅读西瓜书(第四章) 4.1基本流程 决策树,顾名思义,肯定与做决策有关.实际上决策树既可以做决策也可以做回归.在我们生活中其实也经常用到决策树的模型.比如猜数字的游戏.给出一个数字,猜想者猜测一 ...
- 浅读《简约之美-软件设计之道》
浅读<简约之美-软件设计之道> 大家好,我是Lampard~ 这个周末阅读了一本程序设计相关的书籍<简约之美-软件设计之道>,它原著是<The Scien ...
- SQL Server锁机制浅读
SQL SERVER 锁机制浅读 内容为本人根据当前正在读的<SQL Server性能调优实战>(陈畅亮 吴一晴 著 机械工业出版社)和前辈分享的PPT,通读后的总结与汇总. 序 锁及事务 ...
- 《Attention is All You Need》浅读(简介+代码)
2017年中,有两篇类似同时也是笔者非常欣赏的论文,分别是FaceBook的<Convolutional Sequence to Sequence Learning>和Google的< ...
- Flask | 浅读文档,快速出发
最近在读一篇文档,作者是一位使用多种语言开发复杂程序并且拥有十多年经验的软件工程师,曾经用 PHP, Ruby, Smalltalk 甚至 C++ 写过 web 应用,他认为,在所有这些中,Pytho ...
最新文章
- [30期] 第一个项目
- MyBatis ofType和javaType区别
- 剧本杀,继狼人杀之后的下一个风口
- java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
- jquery $.get和$.post设置请求超时error处理
- 皮尔逊相关系数php,若两变量X和y之间的Pearson相关系数大于0.3且小于0.5,则说明()。...
- 操作系统设备驱动实验实验报告
- web前端编程实现福彩投注站彩票投注助手
- zoom会议背景设置,zoom手机背景怎么设置
- unity运行时修改光源的颜色,变成白色
- kubernetes lowB安装方式
- BFS解决一般性的泊松分酒问题
- LIN总线增强型校验_相比于LIN通讯,大家可能对CAN更感兴趣
- ctfhub中Git泄露-log
- 苹果屏幕录制没有声音_苹果手机屏幕不亮但有声音是怎么回事?不要慌,这样就可以解决...
- 准备Java面试之Java SE基础知识——问题篇
- 简单使用Axure(1)
- ueif的stall的实现
- 数据分析——时间处理
- AndroidQ SearchLauncher布局Launcher
热门文章
- JAVA入门(知识梳理)
- 果断收藏!AI绘图文字设计指南;将文本创建为漂亮时间线;伯克利·全栈深度学习训练营课程;CMU·数据库系统系列课程;前沿论文 | ShowMeAI资讯日报
- chubby中文意思
- 系统设计-常见的点赞功能如何实现?如何防止刷赞?
- 软件测试提测是怎样提的,软件测试质量保障之开发提测
- minikube start
- Android Studio 离线打包接收不到个推消息
- 装箱问题 —— C++
- javascript Uint8Array对象与hexString和数组对象之间的相互转换
- Python网络爬虫小试刀——抓取ZOL桌面壁纸图片3