如同“水生态”的存储引擎|OceanBase数据转储合并技术解读(一)

news2024/9/22 21:21:25
本系列文章主要围绕 OceanBase数据库存储引擎中的转储合并进行解读,涉及到数据存储、转储合并、数据校验等方面的内容,旨在让读者了解OceanBase数据库的存储引擎中与转储合并有关的各种概念,帮助读者更好地理解OceanBase数据库的存储技术原理,并为日常问题排查、应用开发提供参考。内容中涉及的OceanBase源码来自 GitHub。

本篇博客作为开篇引子,将通过一段故事,来描绘数据在OceanBase存储引擎中的存储形态与流转过程。希望通过这样的叙述,能够让大家对OceanBase的存储架构有一个初步而深刻的印象。

在世界的某一处,温柔的风正将空气中的水汽卷向云层。慢慢地,天空中逐渐形成了厚厚的积云,当积云无法再承受更多的时候,它开始发出轰隆隆的雷鸣声。不一会儿,淅淅沥沥的雨落到了山林,形成了一条不大不小的林间小溪。当林子里四面八方的小溪数量愈来愈多的时候,挡在溪流前的灌木丛们被无情的冲毁,一条条小溪欢腾着向半山腰流淌,最终停在了一片洼地里,汇成了山间的浅河。当然,山地的土壤总归承载不了这么丰厚的水资源,时不时就会爆发一场山洪,溪流和浅河通通一股脑儿地向山脚奔涌,汇入那宽广的大海。

 看完这个小故事,大家的第一反应应该是:这些都是自然界里最稀松平常的事了吧,和OceanBase有什么关系呢?先别着急,接着往下看。

 让我们先来了解一下OceanBase的存储架构。OceanBase数据库的存储引擎基于 LSM-Tree 架构,将数据分为了内存增量数据(MemTable)和存储静态数据(SSTable)两个层次,其中 SSTable 是只读的,一旦生成就不再被修改,存储于磁盘;MemTable 支持读写,存储于内存。其中,SSTable 会继续细分为 Mini SSTable、Minor SSTable、Major SSTable 三类。一行数据通常会经历从内存向磁盘流转的过程,即从Activate MemTable->Frozen MemTable->Mini SSTable->Minor SSTable->Major SSTable。

1692583311

 那么当我们将以上的故事和OceanBase的存储架构联系起来后,我们可以惊喜的发现,两者有着太多的相似性。

 大海对应着容纳数据范围最大的Major SSTable;小溪和浅河对应着Mini SSTable和Minor SSTable;空气中的水汽对应着数据,天空中云朵则对应着MemTable。当云中的水汽积累到一定程度的时候,形成了即将落雨的阴云,也就是只读的Frozen MemTable,对应着所谓“冻结”的过程。空气中的其他水汽会汇向新的地方,即生成一个新的可写的Active MemTable用来存储新数据。阴云通过雨水来到陆地,形成了小溪,对应着Frozen MemTable形成Mini SSTable,也就是我们常说的“转储”;来自四面八方的小溪汇聚成浅河,对应着Mini SSTable们形成Minor SSTable。而时不时发生的山洪倾泻,河溪汇海,则对应着所谓“每日合并”的工作。

 这样看来,是不是还挺有趣的?在接下来的一些章节里,我会丰富这个故事的细节,希望在这个过程里帮助大家轻松愉快地掌握OceanBase中转储合并的技术原理。

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

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

相关文章

将点位转换为圆环极坐标绘画

将一段染色体可视化为一个圆环,根据一段基因的起始点和终止点绘画,根据基因的方向绘画箭头,可以任意确定染色体哪个位置在哪个角度上,例如染色体的1700点位在180上,默认是顺时针方向从起始点向终止点绘画。 1.将一段染色体的基因数组加上极坐标绘画属性 function compute…

DOS学习-目录与文件应用操作经典案例-ren

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 案例 1:重命名当前目录下的文件 案例 2&#xff1a…

Linux网络编程: 网络基础

Linux网络编程: 网络基础 1.网络划分 一.网络通信1.网络通信和本地通信的联系2.网络通信与本地通信最本质的区别及其衍生出的问题 二.网络协议初识1.为何本地通信不行?2.打电话的例子体会分层模型的好处3.OSI七层模型的提出4.OSI七层模型与TCP/IP五层模型1.TCP/IP与…

一千题,No.0027(Phone Desktop)

描述 Little Rosie has a phone with a desktop (or launcher, as it is also called). The desktop can consist of several screens. Each screen is represented as a grid of size 53, i.e., five rows and three columns. There are x applications with an icon size o…

驱动开发之新字符设备驱动开发

1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的 字符设备驱动已经不再使用这两个函数,而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用,感兴趣可以看下面这个博客&#…

网络原理-以太网协议和DNS协议

一、以太网协议 以太网协议会涉及到数据链路层和物理层。 如图: 这里面的目的地址和源地址指的并不是IP地址,而是MAC地址(物理地址)。长度为6个字节。即最多能表示2^48 个地址,也是非常大的,足够给全球每个设备都分配一个地址,因此在网卡出厂的时候都会带有一个唯…

比较两列数据

点其中一个数据 删掉S,回车 大的标红

ASP.NET 代码审计

ASP.NET 官方文档 名词解释 IIS(Internet Information Services) IIS 是微软开发的一款 Web 服务器软件,用于在 Windows 服务器上托管和提供Web应用程序和服务。它支持 HTTP、HTTPS、FTP、SMTP 等多种协议,主要用于&#xff1a…

Linux文件系统原理

Linux文件系统 冯诺依曼在1945年提出计算机的五大组成部分 运算器:CPU 控制器:CPU 存储器:内存和硬盘 输入设备:鼠标、硬盘 输出设备:显示器一、硬盘结构 机械硬盘结构 扇区:硬盘的最小存储单位&#xff…

windows使用gzip和bzip2对文件进行压缩

git软件 git bash:下载地址https://git-scm.com/downloads,安装时一路next。 这个软件是给程序员提交代码用的工具,内置linux系统的命令行,可以使用linux系统特有的压缩软件gzip和bzip2. gzip使用 gzip一般用于压缩tar包&#…

学习经验分享【37】YOLOv10解读——最新YOLO版本

YOLO算法更新速度很快,已经出到V10版本,后续大家有想发论文或者搞项目可更新自己的baseline了。有需要改进方法的和相关资料可以关注后私信获取。 代码:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 摘要&…

【credit_based流控机制】

credit_based流控机制 1 credit_based way1.1 Principle1.3 DFD1.4 Module1.4.1 Interface1.4.2 Code Block 在网络芯片处理大流量报文中,一般主要是两种机制:1.valid–ready反压(backpressure)机制;2.credit信用机制; credit机制…

Postman快捷功能-批量断言与快速查询替换

大家好,在我们日常的接口测试工作中,经常需要对接口返回的数据进行断言,以确保接口的正确性。当接口数量较多时,逐个编写断言语句会变得非常繁琐。此外,在接口测试过程中,我们还可能需要频繁地查找和替换某…

sql-labs靶场环境搭建(手把手保姆级教学)

文章目录 一、sql-labs靶场简介:二、搭建过程1、资源下载2、配置文件;3、访问网站4、创建数据库 三、使用PhpStudy2018原因 一、sql-labs靶场简介: SQL-Labs 是一个实践环境,旨在用于数据库和 SQL(结构化查询语言&…

SAP FS00如何导出会计总账科目表

输入T-code : S_ALR_87012333 根据‘FS00’中找到的总账科目,进行筛选执行 点击左上角的列表菜单,选择‘电子表格’导出即可

docker-compose 搭建 单机版ELK

docker-compose 搭建 单机版ELK 前言 本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在…

yolov8报警图片写入minio服务器 Rabbitmq发送地址

OSError [WinError 1455]页面文件太小,无法完成操作”解决方案“_深度学习_yangshejun-GitCode 开源社区 (csdn.net) python对RabbitMQ的简单使用_python rabbitmq-CSDN博客 【Windows安装RabbitMQ详细教程】_rabbitmq windows-CSDN博客 Windows 10安装Minio 文件…

以前:不会用电脑;现在:不会用AI

购买特价商务机票需要一些策略和灵活性。、 提前规划:商务舱票价通常在出发日期的2-3个月前最便宜。尽早规划您的行程并开始关注票价。 使用比价工具:使用Skyscanner、Kayak等比价网站来比较不同航空公司的商务舱票价。这些网站可以显示多个航空公司的价…

IOT技术怎么落地?以宝马,施耐德为例

物联网技术 物联网(IoT)技术正逐渐成为数字化工厂转型的核心驱动力。本文将通过实际案例,探讨IoT技术如何促进制造业的数字化转型,提高生产效率,降低成本,并提升产品质量。 1. 物联网技术简介 物联网技术通…

Vue项目如何进行XSS防护

前言 在目前主推网络安全的情况下,很多开发项目都需要在上线前进行渗透测试,当符合渗透测试标准及没有安全漏洞即可正常上线,当前还会有代码审计的,这个另当别论。 如何对XSS进行防护 在很多的富文本编辑器项目中,x…