问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么leveldb的log按块存取

发布网友 发布时间:2022-05-05 15:06

我来回答

2个回答

懂视网 时间:2022-05-05 19:27

上节内容讲到log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存

上节内容讲到log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据,在这点上LevelDb和Bigtable是一致的。

下面我们带大家看看log文件的具体物理和逻辑布局是怎样的,LevelDb对于一个log文件,会把它切割成以32K为单位的物理Block,每次读取的单位以一个Block作为基本读取单位,下图展示的log文件由3个Block构成,所以从物理布局来讲,一个log文件就是由连续的32K大小Block构成的。

wps_clip_image-28147

图3.1log文件布局

在应用的视野里是看不到这些Block的,应用看到的是一系列的Key:Value对,在LevelDb内部,会将一个Key:Value对看做一条记录的数据,另外在这个数据前增加一个记录头,用来记载一些管理信息,以方便内部处理,图3.2显示了一个记录在LevelDb内部是如何表示的。

wps_clip_image-11582

图3.2记录结构

记录头包含三个字段,ChechSum是对“类型”和“数据”字段的校验码,为了避免处理不完整或者是被破坏的数据,当LevelDb读取记录数据时候会对数据进行校验,如果发现和存储的CheckSum相同,说明数据完整无破坏,可以继续后续流程。“记录长度”记载了数据的大小,“数据”则是上面讲的Key:Value数值对,“类型”字段则指出了每条记录的逻辑结构和log文件物理分块结构之间的关系,具体而言,主要有以下四种类型:FULL/FIRST/MIDDLE/LAST。

如果记录类型是FULL,代表了当前记录内容完整地存储在一个物理Block里,没有被不同的物理Block切割开;如果记录被相邻的物理Block切割开,则类型会是其他三种类型中的一种。我们以图3.1所示的例子来具体说明。

假设目前存在三条记录,Record A,Record B和Record C,其中Record A大小为10K,Record B 大小为80K,Record C大小为12K,那么其在log文件中的逻辑布局会如图3.1所示。Record A是图中蓝色区域所示,因为大小为10K<32K,能够放在一个物理Block中,所以其类型为FULL;Record B 大小为80K,而Block 1因为放入了Record A,所以还剩下22K,不足以放下Record B,所以在Block 1的剩余部分放入Record B的开头一部分,类型标识为FIRST,,代表了是一个记录的起始部分;Record B还有58K没有存储,这些只能依次放在后续的物理Block里面,因为Block 2大小只有32K,仍然放不下Record B的剩余部分,所以Block 2全部用来放Record B,且标识类型为MIDDLE,意思是这是Record B中间一段数据;Record B剩下的部分可以完全放在Block 3中,类型标识为LAST,代表了这是Record B的末尾数据;图中黄色的Record C因为大小为12K,Block 3剩下的空间足以全部放下它,所以其类型标识为FULL。

从这个小例子可以看出逻辑记录和物理Block之间的关系,LevelDb一次物理读取为一个Block,然后根据类型情况拼接出逻辑记录,供后续流程处理。

热心网友 时间:2022-05-05 16:35

LevelDB 简介一、LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
按现行会计制度的规定,短期借款所发生的利息,一般应记入( )科目。 省钱输送机 江西同步带欧规皮带滚轮模组规格 请问91年3月12日是什么星座拜托各位大神 1991年3月11的双鱼座怎样拜托了各位 谢谢 ...年11月3号。这两个时间出生的人各是什么塔罗牌?拜托各位大神... 孤岛惊魂4怎么不显示dlc 微信百万保障诈骗是怎么回事 秋季大棚里应候种植什么蔬菜最适合 上海音乐学院钢琴十级通过率 一千多的手机华为质量好还是荣耀质量好? 我给一个我喜欢的男生发短信,他回我说发错了,什么意思啊 给男生发微信他却假装不认识自己怎么回事? 一男生微信发信息给我,我和他没聊天过,我回他,他说发错了,这也能发错?还是什么啊 2013年买美如画v7网络机顶盒怎不能看电视,是机顶盒坏了吗? 实在不敢给喜欢的男生发微信,但真的有事要说啊,怎么办? 2012美如画机顶盒直播节目不能看怎么办 不想主动给喜欢的男生发微信,我是不是有毛病? 女生怎么主动发消息给第一次见面认识的男生? 美如画机顶盒连网后为什么找不到电视台 Mygica r9如何连接投影仪 美如画v5网络机顶盒是安卓系统吗 美如画机顶盒怎样刷机 网络机顶盒,之前还好第二天打不开,盒子上蓝灯亮,屏幕一直显示mygica美如画,看不到图像,怎么回事? 美如画h3机顶盒怎么看电视 mygica电视机顶盒如何连接电脑看直播 u盘1g 能装windows7系统吗? 通过u盘能安装正版的win7系统吗 ESD S 20.20 ESD20.20的介绍 家居骑士卡不激活会失效吗? 全球购骑士卡不激活会失效吗 天下无贼 演员表 橄榄叶狗母鱼煲怎样做好吃? 天下无贼 全部演员 当火灾发生时消防设备如何联动 天下无贼女演员 电影天下无贼的主演员是谁? 为什么火炬可以一直燃烧? 广州人清明节拜山吃的,橄榄叶上面做个糯米团里面有陷的的那玩意叫什么?用白话叫什么? 北京奥运火炬收藏保存方法? 雄霸天下的演员表 风云雄霸天下演员表 全民农场怎么在都教授家买橄榄叶 《天下无贼》中,饰演黎叔的著名演员叫什么 全民农场橄榄叶在教授家哪里 icl晶体植入术眼睛会流血吗 lcl手术是什么时候发明的 昆明治疗近视眼多少钱? 芜湖icl人工晶体植入术多少钱\