欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > RocksDB简介

RocksDB简介

2024/11/30 18:30:32 来源:https://blog.csdn.net/weixin_45626756/article/details/142024472  浏览:    关键词:RocksDB简介

一、RocksDB是什么

  • 常见的数据库如 Redis Mysql Mongo 可以单独提供网络服务
  • RocksDB提供存储服务,是一个嵌入式KV存储引擎
    • Rocksdb没有server code,用户需要自己实现server的部分来得到c-s架构的数据库。

二、RocksDB的诞生

  • 基于flash存储和ssd普及,网络latency在query workload latency中占据的比例越来越高。嵌入式数据库变得受欢迎。
  • dhruba尝试比较HBase/HDFS和mysql在query serving workload上的表现。经过多次优化后,在机械硬盘上,几pb的数据集下,hbase可以达到比Mysql慢两倍的查询速度。dhruba开始试图扩展hdfs/hbase的能力,使其能serve query workload。但是随着flash的普及,他发现hdfs对flash的使用效率不高。并且将hdfs/hbase改成嵌入式的难度太高,因此他决定开发新的数据库存储引擎。在这里插入图片描述3. 当时已有嵌入式数据库,leveldb是其中的佼佼者在这里插入图片描述
  • leveldb存在的问题
    1. 单线程compaction + flush,这导致写入速度不够快,并且还有stall的问题,latency p99太高。
    2. leveldb不能用到flash的所有IO能力。
      RocksDB基于LevelDB开发:

三、RocksDB的“社会关系”

  • RocksDB 是 facebook 基于 LevelDB 研发的一个嵌入式KV存储引擎,以C++ Library的形式提供使用(目前也已经支持Java)。
  • 分布式领域的三驾马车:
    • GFS 分布式文件系统
    • BigTable 分布式KV存储
    • MapReduce 基于分布式文件系统、分布式KV存储的大数据处理 在这里插入图片描述 - 两种使用方式:
      • 直接作为单机版KV数据库引擎使用: Flink采用RocksDBStateBackend来存储状态
      • 作为数据存储系统引擎使用: 在其上面实现分片和多副本,从而实现一个真正的分布式存储系统,以Rocksdb作为其某个副本的存储介质,上层通过Paxos或者Raft协议来保证副本之间的数据一致性。

四、RocksDB基本原理

4.1 整体架构

RocksDB是一个lsm-tree style的数据库在这里插入图片描述

4.2 LSM Tree

4.2.1 核心思想

内存顺序IO >> 内存随机IO ≈ 磁盘顺序IO >> 磁盘随机IO

4.2.2 对比: B+ 树

B+树是一个常用的存储结构,很多开源数据库都是基于B+树。在这里插入图片描述1. 主要优点:

  • 结构比较扁平,高度低(一般不超过4层),随机寻道次数少;
  • 数据存储密度大,且都位于叶子节点,查询稳定,遍历方便;
  • 叶子节点形成有序链表,范围查询转化为顺序读,效率高。相对而言B树必须通过中序遍历才能支持范围查询。
  1. 主要缺点:
  • 如果写入的数据比较离散,那么寻找写入位置时,子节点有很大可能性不会在内存中&#x

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com