网站建设青岛wordpress 招聘主题
网站建设青岛,wordpress 招聘主题,赣州九一人才网手机版,可植入代码网站开发1、rocksdb是什么?
RocksDB中文网 | 一个持久型的key-value存储
rocksdb是一种KV存储引擎#xff0c;常用于数据库存储数据#xff0c;无法直接使用#xff0c;没有提供sql命令#xff0c;通过调用rocksdb提供的api进行数据库的读写等操作。
rocksdb是以leveldb为基础开…1、rocksdb是什么?
RocksDB中文网 | 一个持久型的key-value存储
rocksdb是一种KV存储引擎常用于数据库存储数据无法直接使用没有提供sql命令通过调用rocksdb提供的api进行数据库的读写等操作。
rocksdb是以leveldb为基础开发的都使用了LSM Tree来存储数据
设计目标满足使用需求的同时提供高性能的存储相比leveldb提供了很多额外的特性优化性能
官网链接Home · facebook/rocksdb Wiki · GitHub
2、LSM Tree是什么
存储架构聊聊 LSM Tree 强悍的设计 - 墨天轮
rocksdb设计架构 - 知乎
LSM-Tree全称Log Structured Merge Tree是一种分层、有序、面向磁盘的数据结构其核心思想是充分利用磁盘的顺序写性能要远高于随机写性能这一特性将批量的随机写转换为一次性的顺序写。
LSM-Tree的写入操作类似于普通的日志写入方式以Append的模式追加删除操作Append一条删除的日志修改操作Append一条新key-value。
LSM-Tree有内存组件和硬盘组件两部分。
内存组件包含Memtable和Immutable MemTableMemtable内部使用红黑树或者跳表来保证结构的有序性
Memtable数据直接写入MemTable MemTable提供了k-v数据的写入、读取和删除接口。 按key顺序存储以便被合并到SSTable后仍然有序Immutable MemTable: 不可写被冻结的MemTable待被合并到硬盘 当MemTable达到一定阈值后将其冻结成Immutable MemTable并生成新的MemTable
硬盘组件包含不同Level的SSTable(sorted string table)
Level越低数据越新容量越少反之Level越高数据越旧容量越大低Level的SSTable被合并到高Level的SSTable合并过程中会做删除操作(相同key删除旧值保留新值);SSTable中除了数据块还含有索引块便于块内数据的快速查找
WAL
WAL(Write-Ahead-Log)预写日志用于保证宕机时数据不丢失。 写入数据时同时写入MemTable和WAL由于WAL是顺序写速度很快。 当程序宕机时可以从WAL恢复数据到MemTable
SSTable
SSTable(sorted string table)是Immutable MemTable在磁盘上的存储内部按key顺序排列。 为了加快SSTable的查询速度在SSTable中增加索引信息(如下图)可以快速定位key并查到其value
一个SSTable将由多个被称为Segment的排序文件组成 LSM-Tree SSTable合并策略
磁盘中低Level的SSTable被合并到高Level中合并过程中可以做删除操作降低磁盘使用。 Leveling Merge Policy 每个level仅有1个组件L0和L1合并合并到L1中由于组件较少查询性能较高LevelDB和RocksDB使用该策略 Tiering Merge Policy: 每个Level有N个组件合并后生成Level1的一个新组件由于可以降低合并的频率写入性能较高
LSM-Tree的读取效率并不高
先查找内存Memtable和Immutable找到即返回然后分别查找磁盘L0 SSTable-L1 SSTable-...找到即返回 空间放大space amplification 如果一项数据更新了多次这项数据可能会存储在多个不同的SSTable中甚至一项数据的不同部分的最新内容存储在不同的SSTable中。 这样一份数据在磁盘中存储了多份副本而老的副本是过时的数据实际占用的空间比有效数据大。 LSM Tree将这一现象称为空间方法(space amplification)。
读放大read amplification 空间方法的现象导致LSM Tree查找时从最老--最新逐个level查询SSTable如果目标数据不在最底层的level N中那么我们就读取和查询了所有的SSTable. LSM Tree将这种读取和查找了无关SSTable的现象称为读放大(read amplification)。
LSM-Tree读取的优化
从查找过程可以看出LSM-Tree的读取速度要比其他结构慢若遇到“读放大”则查询速度则是灾难性的。 故需要使用一些索引技巧进行优化
LevelDB Manifest文件
manifest文件记录所有的SSTable信息比如Level、最小key、最大key等可以用于快读定位目标SSTable。
这样在查找时先将SSTable的manifest读到内存中再进行判断不用整个SSTable读入。
SSTable的索引块
每个SSTable文件中加入索引块索引块中记录key及其offsetkey按顺序排列。
这样在查找时先在索引中二分查找key和offset然后再到SSTable中读取key-value。
SSTable的布隆过滤器
对SSTable指定布隆过滤器判定一个SSTable是否包含特定的建以减少访问磁盘次数。
这样在查找时根据BloomFilter可以快速确定某个key是否在当前SSTable中。
SSTable compaction
将多个SSTable合并为一个SStable删除旧数据或标记为已删除的数据降低空间放大 同时减少SSTable降低读放大。 B树的特点插入和搜索的性能很高算法的时间复杂度是O(logn)
学大数据必懂系列之LSM-Tree-腾讯云开发者社区-腾讯云
LSM-Tree 概念解析
2、rocksdb是什么
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86171.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!