介绍一下TiDB、RocksDb、levelDB、LSM 树、SSTable。

LSM 树(Log-Structured Merge-Tree)

  • 核心原理:通过将随机写转换为顺序写优化写入性能,适用于写密集型场景。数据首先写入内存中的 MemTable(有序结构,如跳表),当达到阈值后转为 Immutable MemTable,再刷入磁盘形成 SSTable。通过分层合并(Compaction)清理冗余数据。
  • 关键特点
    • 写放大:合并操作可能导致重复写入,但顺序写优势显著(如机械盘顺序写性能是随机写的千倍)。
    • 读放大:需从内存到多层级磁盘文件逐层查找,但通过布隆过滤器和索引优化。
    • 分层结构:数据从高层(热数据)到低层(冷数据)逐步下沉,低层容量按指数级增长(如每层容量是上一层的10倍)。

SSTable(Sorted String Table)

  • 定义:磁盘上的有序键值文件,不可变且全局有序(除Level 0外),每个文件包含数据块、索引块和布隆过滤器。
  • 优化手段
    • 索引加速:通过稀疏索引快速定位数据块。
    • 布隆过滤器:减少无效磁盘I/O,判断键是否存在于文件中。
    • 压缩:使用Snappy/ZSTD等算法减少存储空间和传输带宽。

LevelDB

  • 定位:Google开源的轻量级单机KV存储引擎,基于LSM树。
  • 核心设计
    • 内存结构:Active MemTable(写入口)和Immutable MemTable(待刷盘)。
    • Compaction策略:分层合并,Level 0允许文件间Key重叠,其他层级全局有序。
    • 限制:单线程Compaction、无多版本控制,适合嵌入式或小规模场景。
  • 典型应用:Chrome浏览器本地存储、轻量级NoSQL场景。

RocksDB

  • 定位:Facebook优化的LevelDB升级版,支持企业级高并发和大数据量。
  • 关键优化
    • 并行Compaction:多线程加速合并,降低写停顿。
    • 冷热分离:热数据优先保留在低层,冷数据下沉至高层。
    • 灵活配置:支持多种压缩算法、速率限制、TTL等。
    • 增量备份:支持Checkpoint和增量快照。
  • 应用场景:MySQL底层存储(如TiDB)、分布式系统(如CockroachDB)、消息队列(如Kafka的RocksDB状态存储)。

TiDB

  • 定位:国产分布式HTAP数据库,兼容MySQL协议,底层存储基于RocksDB。
  • 架构组件
    • TiKV:分布式KV存储引擎,数据按Region分片,基于Raft协议保证一致性。
    • PD(Placement Driver):全局调度器,管理元数据、负载均衡和故障恢复。
    • TiSpark:集成Spark处理复杂OLAP查询。
  • 核心优势
    • 水平扩展:通过添加节点实现计算和存储分离扩容。
    • HTAP能力:行存(TiKV)支持OLTP,列存(TiFlash)支持OLAP。
    • 金融级可靠性:支持分布式事务(Percolator协议)和多副本强一致。

对比与关联

维度LevelDBRocksDBTiDB
架构单机嵌入式单机/分布式扩展分布式HTAP
Compaction单线程,分层合并多线程,冷热分离基于RocksDB,Region分片
适用场景小规模、低并发高吞吐、企业级存储大规模OLTP+OLAP混合负载
核心优化基础LSM实现多级缓存、速率控制全局调度、行列混存

典型应用场景

  1. LSM树:写密集型场景(日志存储、时序数据)。
  2. LevelDB:浏览器本地存储、小型嵌入式系统。
  3. RocksDB:分布式数据库底层引擎(如TiKV)、消息队列状态存储。
  4. TiDB:金融级分布式事务(如支付系统)、实时分析(如电商大促监控)。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Powershell WSL导出导入ubuntu22.04.5子系统

导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…

Jmeter

Jmeter 官网地址 https://jmeter.apache.org/ 下载安装包 系统环境变量 变量值JMETER_HOMEG:\Application\apache-jmeter-5.6.3 修改成自己的安装目录CLASSPATH;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;Path%JMETER_HOME%\bin 中文界…

碰一碰发视频saas系统技术源头一站式开发文档

碰一碰发视频系统技术源头一站式开发文档 一、引言 在数字化信息传播高速发展的当下,如何让视频分享更便捷、高效,成为商家和开发者们关注的焦点。“碰一碰发视频”系统以其独特的交互方式和强大的功能优势,为视频分享领域带来了革命性变革。…

Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac‘.

What went wrong: Execution failed for task ‘:path_provider_android:compileDebugJavaWithJavac’. Could not resolve all files for configuration ‘:path_provider_android:androidJdkImage’. Failed to transform core-for-system-modules.jar to match attributes {…

学习笔记 ASP.NET Core Web API 8.0部署到iis

一.修改配置文件 修改Program.cs配置文件将 if (app.Environment.IsDevelopment()) {app.UseSwagger();app.UseSwaggerUI(); }修改为 app.UseSwagger(); app.UseSwaggerUI(); 二.安装ASP.NET Core Runtime 8.0.14 文件位置https://dotnet.microsoft.com/en-us/download/do…

一、小雅自带tutorial文件教程

下载压缩包 这是elegantrl的开源地址: ElegantRL 我使用的是云服务器平台,上传压缩包之后,使用Linux解压缩命令,将压缩包解压。 使用conda新建一个虚拟环境 conda create -n ElegantRL conda activate ElegantRL安装elegantrl包 pip ins…

海康ISAPI协议在智联视频超融合平台中的接入方法

一. 海康ISAPI协议详解 海康ISAPI协议原理 海康ISAPI(Internet Server Application Programming Interface)协议是海康威视设备提供的一种基于HTTP/HTTPS的高级通信协议,用于实现客户端与设备之间的数据交互。其核心原理包括: 基…

【Azure 架构师学习笔记】- Azure Databricks (22) --Autoloader

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (21) --费用相关 前言 Databricks家里在Apache Spark之上,是企业级的应对大规模数据处理的通用平台, 可以运行在AWS&a…

论文略读(2025.3.18-更新中)

关于可控视频生成 I2V3D: Controllable image-to-video generation with 3D guidance Image to Video工作,能够实现给一张图,输出一个视频,且可以控制相机。动态信息来自于用户手工设计(相机移动,人体骨骼驱动&#x…

Excel导出工具类--复杂的excel功能导出(使用自定义注解导出)

Excel导出工具类 前言: 简单的excel导出,可以用easy-excel, fast-excel, auto-poi,在导出实体类上加上对应的注解,用封装好的工具类直接导出,但对于复杂的场景, 封装的工具类解决不了,要用原生的excel导出(easy-excel, fast-excel, auto-poi都支持原生的) 业务场景: 根据…

神策数据接入 DeepSeek,AI 赋能数据分析与智能运营

在 AI 技术迅猛发展的浪潮下,神策数据正在加速推进人工智能在数据分析和智能运营领域的深度应用。近日,神策数据宣布全面接入 DeepSeek,为企业客户带来更加智能化、高效的数据分析与智能运营服务。这一举措展现了神策数据在人工智能方向的探索…

头歌 JAVA 桥接模式实验

目录 任务描述 实现方式 编程要求 测试说明 代码实现 总结 1 任务描述 某软件公司欲开发一个数据转换工具,可以将数据库中的数据转换成多种文件格式,例如 TXT、XML、PDF 等格式,同时该工具需要支持多种不同的数据库。 本关任务&#…

安全无事故连续天数计算,python 时间工具的高效利用

安全天数计算,数据系统时间直取,安全标准高效便捷好用。 笔记模板由python脚本于2025-03-17 23:50:52创建,本篇笔记适合对python时间工具有研究欲的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验&am…

Docker Swarm集群搭建

Docker Swarm集群搭建 1.准备环境 搭建Docker Swarm集群最低需要准备三台设备,且均需要提前安装好Docker。我这里准备了四台机器用于搭建集群,分别是: DockerSwarm-Node1 lemonDockerSwarm-Node1:~$ docker --version Docker version 28.…

Unity教程(二十二)技能系统 分身技能

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

麒麟银河V10服务器RabbitMQ安装

安装步骤 rabbitMQ依赖于erlang的环境,所以需要先安装erlang,erlang跟rabbitMQ是有版本之间的关联关系的,根据对应的版本去安装下载,保证少出问题。 可以通过官网来查看RabbitMQ和erlang之间的版本对应关系 rabbitMQ和erlang之间…

让“树和二叉树”埋在记忆土壤中--性质和概念

Nice to meet your! 目录 树的介绍: 树的创建: 二叉树的概念和结构: 二叉树的存储结构: 树的介绍: 概念和结构: 不知你们是否在现实中看见过分为两个叉的枯树,大概长这样: 那…

UDP协议原理

UDP协议原理 本篇介绍 在前面使用UDP编程时已经基本了解了UDP的工作模式,也知道了UDP有三个特点: 无连接不可靠面向数据报 但是当时并没有具体谈论为什么UDP有以上三个特点,基于这个原因,本篇就会针对这三个原因进行介绍 UDP…

关于金融开发领域的一些专业知识总结

目录 1. 交易生命周期 1.1 证券交易所 1.1.1 交易前 1) 订单生成(Order Generation) 2) 订单管理(Order Management) 1.1.2 交易执行 3) 交易匹配(Trade Matching) 1.1.3 交易后 4) 交易确认&…

Flutter运行错误:UG! exception in phase ‘semantic analysis‘

最近在Mac Mini M4上通过Android Studio导入Flutter项目并运行,结果一直跑不起来,错误日志如下: 执行命令查看版本信息: flutter doctor --verbose通过输出信息Java version OpenJDK Runtime Environment (build 21.0.41242208…