开头还是介绍一下群,如果感兴趣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 相关文章
PostgreSQL 相关文章
PostgreSQL 事务读取行 不使用行锁 真的? 利弊双刃剑
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
PolarDB 相关文章
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 -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
MongoDB 相关文章
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
MySQL相关文章
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列