嗨滁网社区_滁州论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 9969|回复: 0
收起左侧

[原创] 企业级数据库oceanbase简介

[复制链接]

参加活动:0

组织活动:0

该用户从未签到

发表于 2022-12-20 11:16 | 显示全部楼层 |阅读模式 IP:河南
最近业务想对数据库进行本地化,同时解决基础业务数据快速增长,基础单数据库单表无法支持的问题。所以研究是在阿里的开源关系数据库OceanBase上进行的。
OceanBase企业级数据库中实现的核心技术如下
采用多Paxos协议实现提交日志(事务日志)的多机持久化,实现表分区级的Paxos复制组,达到高可用性和强一致性。【注意:CLog的存储目录需要是SSD磁盘】
数据存储基于LSM树架构,将数据分为静态基线数据(放在SSTable)和动态增量数据,实现高效的数据读写。
基于轮循合并和缓存预热,可以避免合并时对业务的影响。
采用多版本并发技术(MVCC)实现并发控制,读事务和写事务互不影响(但可以通过SELECT FOR UPDATE锁定读事务的对象,从而阻塞写事务)
OBProxy便于应用程序使用MySQL/Oracle兼容的客户端访问OceanBase
海洋基地简介
OceanBase数据库是阿里巴巴和蚂蚁集团在没有任何开源产品的情况下开发的原生分布式关系数据库软件。
OceanBase是一个分布式关系数据库
注意:支持MySQL 5.7.x版的所有语法,但MySQL 5.7.x8.x的部分语法可能不兼容。
海洋基础技术架构
整体架构
OceanBase 关系数据库采用无共享架构,所有节点完全平等。每个节点都有自己的SQL引擎、事务引擎和存储引擎,运行在普通PC服务器组成的集群上。
一个区域包含一个或多个区域,不同的区域通常相距很远。OceanBase支持跨区域部署一个数据的多个副本,比如“三个中心在同一个城市”、“三个中心在两个地方”、“五个中心在三个地方”
每个区域只有一个观察者可以同时启用RootService,用于集群管理、服务器管理、自动负载平衡等操作。
群集由一个或多个区域组成,区域由一个或多个区域组成,区域由一台或多台服务器组成。每条数据在每个区域都会有一个副本,而且只有一个副本,这样一个区域发生故障后,业务的正常运行和数据的完整性不会受到影响。
一个集群中的区域数量大于或等于三个【使用Paxos协议,多数需要达成一致,三个或三个以上的区域可以保证一个区域失效后,剩余两个区域中的副本仍然可以构成多数,不影响业务】
用户的SQL查询经过SQL引擎的解析和优化后,转换为事务引擎和存储引擎的内部调用。
基于OceanBase 企业级数据库 Paxos的分布式选举算法实现了系统的高可用性,并且最小粒度可以达到分区级别。
集群数据的一个分区(或副本)将被保存到所有区域,整个系统中副本的多个分区的日志将通过Paxos协议进行同步。每个分区及其副本形成一个独立的Paxos复制组,其中一个分区是主分区,其他分区是从分区。对此副本的所有写请求将被自动路由到相应的主分区。主分区可以分布在不同的观察者上,这样对不同副本的写操作也会分布在不同的数据节点上,从而实现多点数据写,提高系统性能。
租户资源隔离:在建立租户之前,必须指定租户使用资源的范围,资源池和资源单元能够满足租户资源隔离和负载均衡的要求。
基本概念
区域(地区)
地区是指一个地区或城市。一个区域包含一个或多个区域,不同的区域通常相距很远。OceanBase支持跨区域部署一个数据的多个副本。
可用区域/区域
区域是可用性区域的简称。一个海底集群由几个可用区域组成。一个区域通常由机房中的几台服务器组成。出于数据安全性和高可用性的考虑,数据的多个副本一般分布在不同的区域,因此单个区域故障不会影响关系数据库 service。区域通常对应一个具有独立网络和电容容灾能力的数据中心。
观察者
运行观察器进程的物理机器。一台物理机器上可以部署一个或多个观察器,但通常只部署一个观察器。在OceanBase中,服务器通过其IP地址和服务端口进行唯一标识。
资源库(资源池)
一个租户有几个资源池,这些资源池的集合描述了该租户可以使用的所有资源。资源池由几个具有相同资源规格(单元配置)的单元组成。一个资源池只能属于一个租户。每个单元描述了一组位于服务器上的计算和存储资源[CPU(逻辑隔离)、内存(物理隔离)、存储空间(无限)IOPS(无限,可以看作是一个轻量级的虚拟机,包括若干CPU资源、内存资源、磁盘资源等。【资源单元是OceanBase 关系数据库 service里面的资源容器】。
一个租户在同一台服务器上最多只能有一个单元。实际上,从概念上讲,副本存储在单元中,单元是副本的容器。
对象代理
应用程序数据库访问使用MySQL/Oracle兼容的客户端来访问OceanBaseocean base是作为应用程序访问服务提供的。OBProxy就是为了满足这种需求,通过使用MySQL/Oracle兼容的客户端来方便应用程序访问OceanBase。它从客户机接收应用程序请求,并将它们转发给观察器,然后观察器将数据返回给OBProxyOBProxy将数据转发给应用程序客户机。
根服务器
主服务器。主要是集群管理、数据分发和副本管理。
多派克斯
执行多个Paxos实例的优化协议。OceanBase使用Multi-Paxos协议来实现提交日志的多机持久化。
分布式执行(分布式执行)
执行计划在多个数据库服务器上执行,每个服务器完成部分工作。
其它直接费用(other direct costs)
OceanBase开发者中心(ODC)是为OceanBase数据库量身定制的企业级数据库开发平台。ODCOceanBase中支持MySQLOracle数据库的连接,为数据库开发者提供日常数据库开发操作、WebSQLSQL诊断、会话管理、数据导入导出等功能。
OCP
OceanBase云平台(OCP)诞生于OceanBase数据库,是以OceanBase为核心的企业数据库管理平台。它不仅为OceanBase集群和租户等组件提供生命周期管理服务,还为OceanBase相关的资源(主机、网络和软件包等)提供管理服务。),让您更高效地管理OceanBase集群,降低企业的IT运维成本。
OMS
OceanBase迁移服务(OMS)OceanBase提供的一项服务,支持同构或异构RDBMSOceanBase之间的数据交互。它提供数据的在线迁移和数据复制的实时增量同步。
存储架构
LSM树建筑
OceanBase本质上是一个基线加增量的存储引擎,与关系数据库有很大的不同,它还借鉴了一些传统关系数据库存储引擎的优点。
OceanBase企业级数据库的存储引擎采用基于LSM树的架构,将静态基线数据和动态增量数据分别保存在磁盘(SSTable)和内存(MemTable)中,特点是读写分离。对数据的更改是增量数据,只写入内存。所以DML是一个性能非常高的完整内存操作。读取时,数据可能在内存中有更新版本,在永久存储中有基线版本。有必要合并两个版本以获得最新版本。
当内存的增量数据达到一定规模时,会触发增量数据和基线数据的合并,增量数据会被下载。同时,系统还会在每天晚上的空闲时间启动每日合并。此外,由于基线是只读数据,且内部存储方式是连续的,OceanBase数据库可以根据数据的不同特性采用不同的压缩算法,在不影响查询性能的情况下可以达到很高的压缩比,从而大大降低了成本。
合并时采用增量合并,OceanBase数据库的合并成本远低于LevelDBRocksDB。此外,OceanBase数据库通过轮换合并机制错开正常服务和合并时间,使合并操作不干扰正常的用户请求。
记忆记忆表
MEMTableBTreeBTree组成。当数据被插入/更新/删除时,数据被写入内存块,指向相应数据的指针同时存储在btreebtree中。
存储块表
一个SSTable由若干个宏块组成(将一个磁盘划分成大小为2MB的定长数据块称为宏块,宏块是数据文件写IO的基本单位)
在宏块中,数据被组织成许多大小约为16KB的可变长度数据块,这些数据块被称为微块。微块包含许多数据行,微块是数据文件读取IO的最小单位。
Dump:MEMTable的内存使用量达到一定阈值时,就需要将MEMTable中的数据存储到磁盘上,以释放内存空间。
主要的压缩是动态和静态数据的合并,这很耗时。
完全合并
增量:仅合并已改变的宏块和微块。
逐步合并:数据重写被分散到多次合并中,在一次合并中只重写部分数据(数据可能需要在DDL之后再次重写)
合并:一般配置下,OceanBase企业级数据库同时有三个数据副本。当一个数据副本被合并时,该副本上的查询流量可以被切割到未被合并的其他集群,以便业务查询不会受到每日合并的影响。这个副本合并完成后,查询流量会被削减,其他副本的合并会继续。这种机制被称为循环合并。
读写过程
写入数据
与传统数据库的脏页刷机制不同,OceanBase数据库的存储引擎基于LSM树架构,数据块的写入主要在转储和合并阶段。当MEMTable被转储到SSTable中时,阻塞日志的当前回放点也将被记录在静态数据中。转储完成后,理论上可以回收对应的Clog日志的回放点之前的日志,但通常这些日志文件不会被立即删除,而是在日志空间不足时被重用。
查询过程
对于数据查询,大致可以分为以下几种:单点查询Get、多点查询multi-get、单范围扫描、多范围扫描、需要进行插入操作处理的Exist查询。
SQL兼容性
兼容模式
OceanBase数据库可以在一个系统中同时支持MySQL模式和Oracle模式的租户。创建租户时,用户可以选择创建MySQL兼容模式租户或Oracle兼容模式租户。租户的兼容模式一旦确定,就无法更改。所有数据类型、SQL函数、内部视图等。与MySQLOracle一致。
兼容性比较
海洋基地在租房子
OceanBase企业级数据库的MySQL模式兼容MySQL 5.7的大部分功能和语法。
请比较MySQL兼容性
OceanBase数据库在数据类型、SQL函数和数据库对象上与Oracle数据库兼容。就PL而言,它已经基本上兼容了所有的R&D函数。OceanBase企业级数据库还非常兼容数据库安全、备份恢复、高可用性、优化器等高级特性,有些特性甚至比Oracle数据库还要好。
请比较Oracle兼容性
数据分布
数据分布
从数据分布的角度来看,OceanBase企业级数据库是数据库分区表在分布式系统中的实现,其语法和用法与传统数据库分区表兼容。
支持三种分区模式:哈希、范围和列表。OceanBase企业级数据库还支持两种分区模式:一级分区和二级分区。
OceanBase企业级数据库对分区键的选择有要求。如果在表中设置了主键,分区键必须是主键中的列。如果表中没有设置主键,则不需要分区键。
所有次级分区的组合是散列+散列、散列+范围、散列+列表、范围+散列、范围+范围、范围+列表、列表+散列、列表+范围、列表+列表。
数据和服务
每个分区数据在物理上存储在多个副本中(即副本)
每个副本包括三种主要类型的数据:存储在磁盘上的静态数据(SSTable)、存储在内存中的增量数据(MEMTable)以及用于记录事务的日志。
复制类型:
万能文案
日志副本
加密投票副本
只读副本
一个分区的多个副本中的一个副本将被选为主副本,负责数据库服务并提供读写能力。数据修改通过Paxos一致性协议以重做日志的形式在多个副本之间同步,其他备份副本通过回放同步到重做日志,保持与主副本的一致性。
数据均衡
OceanBase企业级数据库通过RootService管理租户中资源单元的负载平衡。
平衡组是负载平衡算法的操作单元,平衡组中的元素将平均分布在集群中的所有服务器上。OceanBase企业级数据库有两个重要的平衡组:
的所有未分区的表构成一个默认的平衡组;
根据分区策略,将在分区表中形成一个或多个平衡组。
OceanBase企业级数据库通过引入表组,尽可能减少分布式事务。组用于聚集经常一起访问的多个表。
比如有用户基本信息表(user)和用户商品表(user_item),这两个表都是按照用户号散列的。只要设置到同一个表组,系统后台就会自动将同一用户所在的user表分区和user_item表分区调度到同一个服务器上。

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|小黑屋|手机版|Archiver|嗨滁网 ( 皖B2-20180001 )

GMT+8, 2024-11-21 16:47 , Processed in 0.050523 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表