看图了解RocksDB

摘要: 它是一个高性能的Key-Value数据库。设计了完善的持久化机制,同时保证性能和安全性。能够良好的支持范围查询,因为K-V记录就是按照Key来排序的。 下图为写入的流程: 可以看到主要的三个组成部分,内存结构memtable,类似事务日志角色的WAL文件,持久化的SST文件。

它是一个高性能的Key-Value数据库。设计了完善的持久化机制,同时保证性能和安全性。能够良好的支持范围查询,因为K-V记录就是按照Key来排序的。

下图为写入的流程:

可以看到主要的三个组成部分,内存结构memtable,类似事务日志角色的WAL文件,持久化的SST文件。

数据会放到内存结构memtable,一定条件下触发写到到SST文件。写入WAL文件是可选的,用来恢复未写入到磁盘的memtable。

下图展示了读取的层次:

memtable和SST文件组成数据的全集。之上是缓存层,缓存为提升查询性能做了分片,底层都采用hash查询,不同缓存结构的区别在于热点数据的替换逻辑。访问数据库时,都是访问的打开时间点的view(我猜测一个key有不同时间戳的多条记录)。除了直接查询db,还提供了查询快照的机制。直接访问db时,会持有文件句柄,这样多个SST文件合并时,已经被合并但被访问的文件就不能被删除。而快照机制保证了访问过程中文件能被删除(我并未想明白如何做到的),不过打开期间被删除的key的记录还会在新合并的文件里存在。

memtable的结构有几种可选,本质都是排序的结构(为了支持范围查询)

其中之一是上图的跳跃表,不了解跳跃表机制的读者可以简单理解为有序支持近似二分查找的时间复杂度为log2(N)的结构

另外一种是hash结合跳跃表,是按照key的前缀做hash,单独访问一个key时性能更好,范围查询性能会差些

WAL文件结构如下图,按照写入的顺序来存储变长的K-V,按照固定长度来分组存储(可能一个K-V跨多个分组)的目的是便于读取

支持几种SST文件结构

上图为按照多块来存储的结构。每块的K-V都是有序的,而多块也是有序的。文件中包含元数据相关的信息,包括数据压缩字典、过滤器等。会按照数据块所属的K-V范围来创建索引,为提升查询性能会给索引分片。

另外一种结构是每个K-V来存储。它的索引比较特殊,由hash结构和二进制查找缓存两部分组成。依然按照key的前缀做hash,如果桶对应的K-V记录很少,则直接指向第一个key(有多个key属于该桶)的记录位置。如果属于桶的K-V记录多于16条,或者包含多于一个前缀的记录,则先指向二进制查找缓存(先二分查找),而后指向第一个key的记录位置。

随着K-V的写入,会生成很多的SST文件,这部分文件需要被合并到一起。从而降低打开文件数量,并且移除已经不存在的记录。通常可以配置两种方式,通用合并(下图左侧)与level合并(右侧)。

其中一个概念是level,可以简单理解成越老的数据在越高的level(也就是数据最初写入到最低的level,level0就是memtable)。

我将通用合并简单理解为一种简单粗暴的合并,可以尽量降低写磁盘的压力,会增大读取的压力,临时空间占用大。

一般多采用level合并的方式。每个level都有max大小,超出后会触发本level与下一level的文件合并到一起。不同level的合并是可以并发执行的。

对rocksdb做个总结。所有记录在业务上是有序的,对key的查询其实会执行类似二分查找。持久化是通过写入有序文件来实现的。高性能的写入是通过先写入内存结构来保证的(写满的内存结构刷到持久化文件)。提供了level机制对数据做分层,优先查询最新写入的level来优化查询性能。

原文地址:http://blog.51cto.com/14031893/2317424

时间: 2024-10-21 18:11:45

看图了解RocksDB的相关文章

新手选择哪个CAD看图软件,怎么上手cad看图软件

我相信不少刚接触CAD文件的小伙伴,都不大清楚CAD图纸应该怎么进行查看,其实想要查看CAD图纸,是需要借助专业的CAD看图软件才能查看的,那么我们选择什么CAD看图软件好呢?新手选择CAD看图软件哪个好? 一.新手选择CAD看图软件哪个好 我认为想要查看和编辑CAD图纸,其实使用迅捷CAD看图软件(官网下载http://cad.xjpdf.com)是最好的选择,这是一款专业的,我们利用这款软件,可以查看 DWG.DXF.DWT等多种成员的CAD图纸文件,而且这款软件界面的工具栏非常丰富,基本包

PDF用CAD看图软件打开后如何转换成CAD

CAD看图软件中PDF如何转成CAD文件?PDF文件和CAD文件都是我们在工作当中经常需要使用到的文件格式.有时候在我们阅读的图纸文件当中,不少都是PDF文件格式的,如果我们想要将这些PDF图纸文件转换成可进行编辑的CAD文件,那么我们应该怎么进行转换?CAD看图软件中PDF如何转成CAD文件? 想要将PDF文件转换成CAD文件,那么我推荐大家使用迅捷CAD编辑器(http://cad.xjpdf.com)这款软件进行转换,这款是一款专业的PDF文件编辑器,利用这款软件可以对 DWG.DXF.D

看图说话 从开发商的角度 闲聊神州房市走势与“鬼城”的产生

看图说话 从开发商的角度 闲聊神州房市走势与“鬼城”的产生

Chrome插件开发 小插件-acfun看图 3

插件的安装与使用. 写好插件后,通过chrome开发者模式加载插件. 点击加载扩展程序,选择插件的文件夹即可在chrome中加载插件. 然后更改自己的插件后点刷新进行更新,如果有错误,chrome会报错. 要想发布自己的插件就要先交钱,这跟steam上的绿光,以及ios应用等等都一样. 全部: ACfun看图

架构设计分享之权限系统(看图说话)

前面一篇文章<最近架构随想>,我提到架构设计的一些构想,其实也是对之前项目经验的一些归纳及总结.今天我们就以权限系统作为切入点,谈一谈怎么设计权限系统以及怎么做到系统具有以下特性: Organized:如果系统组织比较好,可以起到事半功倍的效果. Encapsulated:对功能,结构,数据进行有效的封装,会使系统维护变得更加容易. Reusable:对常用功能以及组件进行有效的封装,可以使系统变得结构清晰且方便维护. Extensible:在设计系统的时候,如果很好的遵守OO的设计理念(OO

使用cad看图软件的技巧有哪些

CAD图纸是我们经常使用的文件格式,一般情况下技术员儿们都会用CAD看图软件阅览CAD图纸,这里教大家CAD看图软件的使用技巧. CAD图纸打开方法:打开迅捷CAD编辑器(官网下载:http://cad.xjpdf.com),在软件界面点击"文件--打开",然后在打开的文件对话框选择要阅览的CAD文件,迅捷CAD编辑器支持dxf.dwg等格式. CAD图纸格式转换方法: 1)在迅捷CAD编辑器中,点击"文件--批处理",然后调出批处理窗口: 2)在批处理窗口点击&q

怎么样用CAD快速看图软件添加标签

同PDF文件一样,CAD文件也需要自己的看图软件,但CAD文件却要比PDF文件复杂的多,在CAD快速看图软件中,我们该怎么样添加标签呢?本期教大家CAD快速看图软件添加标签方法. 1.想要给CAD添加标签,我们需要先下载安装一款CAD编辑工具,这里可以在浏览器中搜素迅捷CAD编辑器,请到安装的网站下载,这里可选择官网下载软件http://cad.xjpdf.com/. 2.然后打开下载好的迅捷CAD编辑器,打开软件后,在电脑中打开要查看的CAD文件,将文件用鼠标拖拽到软件界面,此时软件已经自动切

CAD看图软件中文字样式修改的方法

工程师在计算机上用CAD进行设计工作,CAD绘图时常会用到文字,在CAD文件编辑时会添加单行文字和多行文字等等.当我们想要编辑修改文字样式的时候,该怎么办呢?这里教CAD看图软件修改文件样式的步骤. 第一步,打开浏览器搜索迅捷CAD编辑器http://cad.xjpdf.com/,找到软件的下载资源,按照步骤下载安装迅捷CAD编辑器,软件安装完成后,请点击打开软件进入操作界面. 第二步,在软件操作界面中,点击"文件",在文件列表中,点击"打开"按钮,接着在弹出的对话

CAD看图软件安装使用的详细过程

一般情况下,我们是无法直接查看CAD图纸的,这时候就需要CAD看图软件.但是对于第一次使用CAD看图软件的小伙伴们来说,如何选择一款好用的CAD看图软件,如何正确的安装CAD看图软件是一个难题,这里就教大家CAD看图软件安装时候用的详细过程. 1.请打开浏览器,输入"迅捷CAD编辑器",找到该软件的官方网站,然后点击进入. 2.在迅捷CAD编辑器官网上,请点击"立即下载"按钮,接着在弹出的下载对话框中点击"下载"即可进入软件下载状态,这里请注意,