建设门户网站 业务模板,龙岗门户,做房产经纪人要自己花钱开网站吗,如何搜索关键词一、RocksDB是什么 常见的数据库如 Redis Mysql Mongo 可以单独提供网络服务RocksDB提供存储服务,是一个嵌入式KV存储引擎 Rocksdb没有server code,用户需要自己实现server的部分来得到c-s架构的数据库。二、RocksDB的诞生 基于flash存储和ssd普及,网络latency在query worklo…一、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存在的问题 单线程compaction + flush,这导致写入速度不够快,并且还有stall的问题,latency p99太高。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树必须通过中序遍历才能支持范围查询。主要缺点:如果写入的数据比较离散,那么寻找写入位置时,子节点有很大可能性不会在内存中#x