RocksDB在大规模分布式系统应用中的经验

本文主要是讲了一些RocksDB在分布式系统中大规模应用时的经验与教训。 

RocksDB是一个高性能的持久键值存储引擎,由Facebook在2012年创建,基于谷歌的LevelDB代码。RocksDB是基于LSM的,对SSD进行了优化,被多个数据库当做存储引擎使用,并且被使用在流处理、日志队列服务以及索引服务和SSD缓存之上。

引擎架构

MemTable与WAL

RocksDB使用LSM作为主要的存储数据结构,每当数据写入到RocksDB之中,就会被添加到MemTable内存的写缓冲区,以及一个磁盘上的超前写入日志(WAL)。数据会被写入到WAL和MemTable,WAL是MemTable的易失性保护机制。

RocksDB中Memtable的数据结构有三种,分别是skiplist、hash-skiplist、hash-linklist,跳表的好处在于插入的时候可以保证数据的有序,并且支持二分查找、范围查询。插入和搜索的代价都是O(log n)。

在达到指定大小之后现有MemTable和WAL锁定变为不可变,新数据写入新的MemTable和WAL。

SSTable

SSTable是一种数据结构,当MemTable到达一定的上限之后,会flush到硬盘上Sorted String Table (SSTable),并放置在第0层(L0),对应的WAL空间回收;L0大小达到上限时,L0的SSTable经过compaction落到L1;Ln:以此类推完成上述操作。

在每一级中,都会使用二进制搜索;而布隆过滤器会消除SSTable文件中不必要的检索。

Comp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnosDB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值