LevelDB 底层原理学习笔记

一、LevelDB简介

LevelDB不同于关系型数据库,他内部的数据全部以KV形式存储,不支持SQL,只支持API调用。

LevelDB是个noSQL的数据库引擎,由google开发并开源,由C++编写。Facebook在此基础上推出了RocksDB,后来包括TiDB等多种分布式noSQL数据库底层都是基于LevelDB。

二、LevelDB架构

在这里插入图片描述

2.1、内存中的MemTable和ImmuTable MemTable

首先上层是MemTable, Immutable MemTable。MemTable本质上就是个存放在内存中的SkipList数据结构。

Immutable MemTable本质上也是MemTable,ImmuTable是不可修改的意思:当MemTable中的内容超过阈值时,需要将其中的内容写到一个SSTable文件,ImmuTable MemTable就是这时候用的。

当一个MemTable在开始执行持久化之前,会先转化成ImmTable MemTable,可以认为是加上了不可修改的限制。另外,会再新建一个新的MemTable,用于维持服务。之后再将ImmuTable MemTable写入SSTable文件。

理解MemTable和ImmuTable MemTable,打个比方:MemTable就好像是收银台里的收银柜,当收银柜中的钱快满的时候,需要把里面的钱存到银行,但此时顾客还在不断的付钱,不能停掉他。所以那出一个新的收银柜来收钱,把原来的收银柜锁上后,把收银柜一起送到银行。MemTable就好比是MemTable, 加锁后变成了ImmuTable MemTable。

<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值