跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2550人左右 1 + 2 + 3 + 4 +5 + 6 + 7+8)(1 2 3 4 5 6群均已爆满,6群关闭自由申请,新人进7群接近300,开8群)
接上期
OceanBase 数据库的演进
在本节中我们将开始从OceanBase0.5到OceanBase4.0的演进过程。
2.1 OceanBase 0.5
OceanBase 自2010年开始研发下图中就是OceanBase0.5版本的整体架构图,此时的OB分为两层,存储层和计算层。上层是SQL层,无状态地提供SQL服务,下层是一个由两个服务器组成的存储集群:ChunkServer 和 UpdateServer。ChunkServer 的特点是具备自动分区和存储水平扩展的能力。UpdateServer 利用 Paxos 协议来实现强一致性和可用性。然而,UpdateServer 不具备分布式事务处理能力。这样的架构使 OceanBase 能够更好地支持类似淘宝收藏夹这样的业务。此外,它具有一定的可扩展性,尤其是读取方面的扩展性相对较强,并且 SQL 层是无状态的,可以自由扩展。
明显的缺陷也是有的,UpdateServer节点是单点的写,多节点读。在需要更高并发的情况下,难以进行扩展。此外,将存储层和SQL层分离会导致更高的查询延迟,网络的抖动难以控制,在对延迟抖动要求极高的情况下,控制延迟抖动是具有挑战性的。
2.2 OceanBase 1.0 至 3.0 为解决OceanBase在0.5中遇到的问题,OceanBase 放弃了先前的架构,开发了 1.0 至 3.0 版本,特点完全对等(P2P)结构。每个 OBServer 包含 SQL、存储和事务引擎。所有服务器除了能够同时存储数据外,还能够处理 SQL 和处理事务。垂直方向代表分布式可扩展层,而水平方向代表复制层。水平方向提供高可用性能力,而垂直方向通过不断添加机器来增强服务的整体可扩展性,这里采用了几种优化来实现低延迟。在独立模式下,本地执行计划、本地事务 API 以及消除读写操作中的网络开销实现低延迟。在分布式模式下,使用重复表并行执行引擎和多个分区索引,通过这些方法实现低延迟性能的关键因素。
从之前的版本到OceanBase 4.0 演进之前,原架构具有出色的可扩展性。在这种可扩展性下,使用 OceanBase 3.0 进行了 TPC - C 基准测试。OceanBase 是当时唯一通过 TPC - C 基准测试的分布式数据库。这也反映出 OceanBase 3.0 架构在水平可扩展性方面具有非凡的适应性。OB当时从3个节点扩展到1557个节点,OceanBase 的 tpmC 指数达到 7.07 亿排名,随着节点数量的增加,整个 tpmC 指标具有明显的线性可扩展性。在进行 TPC-C 评估时,OceanBase 使用了一个由 1557 台机器组成的大型集群,在八小时的压力测试中,它有能力每秒处理两千万笔交易。这一结果表明,先前的架构可以支持出色的可扩展性,而且这种可扩展性和并发处理能力几乎可以满足全球大多数当前在线服务系统的要求。此外,通过在分布式存储系统上采用单区域部署,OceanBase 在 2021年5月通过了 TPC-H 基准测试,在 30000GB 数据量下获得了超过 1500 万的QphH。
2.3 OceanBase 4.0 然而,随着业务需求的迭代,我们开发了 OceanBase 4.0 架构,OceanBase 4.0 具有以下特性:
更多分区:OceanBase 4.0 的架构降低了分区维护成本。此外,内存优化的作用不容小觑。在之前的版本中,每 2MB OB 维护一个元数据,元数据与数据的比例约为 1:1000。大表元数据的开销也会显著增加。
在迭代中,我们将存储内存开销设置为按需加载,从而仅在内存中保留根节点(非常小)。当用户需要访问元数据时,再加载叶子节点和数据节点。此方法减少了常驻内存的开销,优化了内存使用。
更多 DDL 支持:在 OceanBase 4.0 中,数据定义语言(DDL)允许用户轻松修改分区和更改主键。DDL 的实现相对简单。首先,创建一个隐藏表,并取得快照点前启动 DDL 的事务,然后锁定原始表的读写操作。
随后,使用数据操作语言(DML)语句补充隐藏表中的数据。最后,重命名原始表。该过程涉及三项关键技术, 1)表锁定,在进行修改时防止写操作;、
2)分区 DML(PDML),用于加速查询并简化代码;
3)直接插入,允许直接写入静态数据,从而避免内存过载并提供更快的速度,资源消耗更低:
在 OceanBase 4.0 中,生产规格从 16C/64G 降低到 4C/16G(CPU / 内存),从而提高了用户成本。
我们主要优化了以下方面,
1)线程栈优化,以减少线程局部变量,并使用 SmartVar 减少栈变量;
2)将元数据开销从按分区存储改进为按日志流存储,从而允许按需加载元数据;
3)通过默认激活输入限制提高稳定性,从而在 4C/16G 下实现更高的稳定性。
租户隔离:我们优化了租户耦合逻辑,主要体现在以下三个方面
1)租户级合并,默认合并行为由租户触发,而非整个集群;
2)租户级元数据,将元数据从系统租户调整到用户租户,并且 TableId 和 TenantId 解耦;
3)租户 I/O 隔离,将 Clog(提交日志)文件按租户拆分,SSTable 支持租户级 I/O 限制。
对于中小型企业,OceanBase 4.0 架构的核心变化是引入了动态日志流。最初,我们将事务扩展和存储扩展的粒度等同起来。然而,如果存储被划分为多个分片,事务处理和高可用能力也基于这些分片。在 OceanBase 4.0 中,我们将这两个概念解耦,因此多个存储分片将共享一个事务日志流以及与该日志流对应的高可用服务。
学习总结:
1 OceanBase 数据库的架构更新的非常快,且不断地更新迭代。
2 白皮书中明确了之前系统的问题,并说明的4.0改进的方法和具体的措施。
3 从日志流这个概念的提出和在4.0上实现,的确彻底的改变了OceanBase在原有扩展和性能之间的一些问题。
4 系统的能耗降低了,性价比提高了。
基于这部分的白皮书,说明4.0应该是上线OB首选的版本,且我需要研究什么是日志流,且日志流对于OB产生的好处和效益是什么,与事务的一致性。
今天就到这里,后面继续搞OB。
OceanBase 相关文章
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
聚焦SaaS类企业数据库选型(技术、成本、合规、地缘政治)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
OceanBase 学习记录 -- 安装简易环境
OceanBase 学习记录 -- 开始入门
数据库最近第一比较多,OceanBase 定语加多了?
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
数据库信息速递 阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)
PostgreSQL 相关文章
PostgreSQL 事务读取行 不使用行锁 真的? 利弊双刃剑
病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 如何通过工具来分析PG 内存泄露
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
PostgreSQL 字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL 玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)
DBA 失职导致 PostgreSQL 日志疯涨
PolarDB 相关文章
PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)
PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)
PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless
POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PolarDB 从节点Down机后,引起的主从节点强一致的争论
PolarDB serverless 真敢搞,你出圈了你知道吗!!!!
PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
PolarDB for PostgreSQL 有意思吗?有意思呀
PolarDB Serverless POC测试中有没有坑与发现的疑问
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
POLARDB 到底打倒了谁 PPT 分享 (文字版)
POLARDB -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
PolarDB 搞那么多复杂磁盘计费的东西,抽筋了吗?
MongoDB 相关文章
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)
MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本
MongoDB 不是软柿子,想替换就替换
MongoDB 挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 双机热备那篇文章是 “毒”
MongoDB 会丢数据吗?在次补刀MongoDB 双机热备
MONGODB ---- Austindatabases 历年文章合集
MySQL相关文章
MySQL timeout 参数可以让事务不完全回滚
"DBA 是个der" 吵出MySQL主键问题多种解决方案
MySQL 让你还用5.7 出事了吧,用着用着5.7崩了
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL --Austindatabases 历年文章合集
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
SQL SERVER 系列
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 2022 针对缓存扫描和Query Store 的进步,可以考虑进行版本升级
临时工访谈系列
本地存储还有活路吗? 从上周一个供应商问我的问题开始
一年又一年,成了老梆子,别回头,往前看!
Oracle 离婚后,过的挺好,你别惦记了
临时工说: 实际实例揭穿AI, 上云就不用DBA的谎言
临时工说:DBA 7*24H 给2万的工作,到底去不去?
国内最大IT服务公司-招聘DBA “招聘广告”的变化--分析与探讨
临时工说: 网友问35岁就淘汰,我刚入行DBA 怎么办?
截止今天共发布