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

本系列文章主要围绕 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中转储合并的技术原理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240526怎样将windows的屏幕复制到第二屏

百度:WIN10 第二显示器 COPY https://zhidao.baidu.com/question/761454546683111004.html 20240526怎样将windows的屏幕复制到第二屏  我来答 分享 举报 2个回答#热议# 海关有哪些禁运商品?查到后怎么办? 华硕服务 2022-07-05 百度认证:…

C++模板——函数模板和类模板

目录 泛型编程 函数模板 函数模板概念 函数模板的定义和语法 函数模板的工作原理 函数模板的实例化 隐式实例化 显示实例化 函数模板的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 什么是泛型编程? 泛型编程(Generic Pr…

Sam Altman微软Build 2024最新演讲:AI可能是下一个移动互联网

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

gfast:基于全新Go Frame 2.3+Vue3+Element Plus构建的全栈前后端分离管理系统

gfast:基于全新Go Frame 2.3Vue3Element Plus构建的全栈前后端分离管理系统 随着信息技术的飞速发展和数字化转型的深入,后台管理系统在企业信息化建设中扮演着越来越重要的角色。为了满足市场对于高效、灵活、安全后台管理系统的需求,gfast应…

人工智能+量子计算:飞跃现实边界还是科技幻想?

人工智能量子计算,这是一种可能改变世界的伙伴关系。 在科技的前沿,两大革命性技术——人工智能(AI)和量子计算——正站在合作的十字路口。人工智能,以其强大的数据分析能力和模式识别,正在改变着我们生活…

MOS选型及其参数解析

背景: 整理现有常用元器件选型,日后使用时针对性观看,生成列表链接如下: https://blog.csdn.net/caozhaokun/article/details/126069701 作者:Cayden 时间:2024/05/26 一、MOS选用现状 MOS是电路设计…

【软件设计师】面向对象技术

1.面向对象基础 1.1 基本概念 方法重载是函数名字相同,参数列表不同 组成 即组合,指整体与部分的关系,整体与部分生命周期相同 聚合 关联关系的一个特例,是体现整体与部分,即使has-a的关系,此时整体与部分…

设计模式在芯片验证中的应用——模板方法

一、模板方法 模板方法(Template Method)设计模式是一种行为设计模式, 它在父类中定义了一个功能的框架, 允许子类在不修改结构的情况下重写功能的特定步骤。也就是模板方法定义了一组有序执行的操作,将一些步骤的实现留给子类,同…

6818 android 修改开机 logo, 编译脚本分析

问题: 客户需要去掉 android5.1 的开机logo. 说明: 对于Android5.1 来说,uboot 与kernel 的logo 是一个。 过程: 其实对于开机logo 的修改很简单,直接参考厂家手册就可以了。 这是 android4.4 的开机logo 的修改&…

Ps:消失点滤镜 - 导出 3D 信息

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V “消失点”滤镜的导出 Export功能允许用户将创建的 3D 信息(包括平面、纹理和测量)导出为兼容 CAD、建模、动画和特殊效果应用程序的格式。这使得 Photoshop 与其…

上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前我们写过一篇文章​​​​​​​,上面说的是如何利用串口对mcu进行控制,即如果利用串口实现mcu led灯的点亮和熄灭。输…

【开源】租房管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、系统介绍 租客屋主模块 房源信息模块 租客评价模块 房源订单模块 留言板模块 二、系统截图 三、核心代码 一、系统介绍 基于Vue.js和SpringBoot的租房管理系统,分为管理后台和用户网页端,可以给管理员、租客和屋主角色使用&#xff0c…

深入JVM元空间以及弹性伸缩机制

个人博客 深入JVM元空间以及弹性伸缩机制 | iwts’s blog JVM内存模型中元空间所在位置 即在JVM运行时的内存模型。总体上有这样的图: 元空间 上面的图其实有点不太准。方法区本质上只是JVM的一个标准,不同JVM在不同版本下都可能有不同的实现&#x…

民国漫画杂志《时代漫画》第25期.PDF

时代漫画25.PDF: https://url03.ctfile.com/f/1779803-1248635084-fd4794?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

2024年上半年软件系统架构师考试【回忆版】

文章目录 考试时间考试地点综合知识案例分析1、微服务架构的优点和缺点2、质量属性的6个要素3、分布式锁 Redis的缺点4、MongoDB 存储矢量图的优势 论文回忆版论文一、论单元测试的设计与应用论文二、论大数据模型的设计与应用论文三、论模型驱动的架构设计及应用论文四、论云原…

浅谈Docker容器的网络通信原理

文章目录 1、回顾容器概念2、容器网络3、容器与主机之间的网络连通4、交换机的虚拟实现---虚拟网桥(Bridge)5、Docker 守护进程daemon管理容器网络 1、回顾容器概念 我们知道容器允许我们在同一台宿主机(电脑)上运行多个服务&…

kali基本扫描工具(自带)

免责声明:本文仅做技术交流与学习...请勿非法破坏... 详细用法: 命令 -h/百度/翻译 fping 用法 hostlist 文件里面为ip fping -a -q -f hostlist -a 只看存活的 fping -g 202.100.1.1 202.100.1.255 -a -q > Ahost 输出到Ahost文件上 nping nping -c 1 201.100.2.155-244 …

ES 查询踩坑-全字段匹配

需求:name字段需要全匹配查询 name的映射 普通的must查询 GET power_engin/_search {"from": 0,"size": 10,"query": {"bool": {"must": [{"term": {"name": {"value": "尼…

数据结构--《二叉树》

二叉树 1、什么是二叉树 二叉树(Binar Tree)是n(n>0)个结点的优先集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树构成。 这里给张图,能更直观的感受二叉树&#xff1…

异步那些事01

首先我们肯定先说创建线程 1.继承Thread类 o定义一个类MyThread继承Thread类 o在MyThread类中重写run()方法 o创建MyThread类的对象 o启动线程 package Java.thread;public class first extends Thread{public void run(){for(int i0;i<50;i){System.out.println("我…