用户

 找回密码
 立即注册

搜索


主题

帖子

0

积分

新手上路

Rank: 1

积分
0
2022-12-20 12:05:41 sdsdsd 新手上路 楼主 094
面向批量事务处理的分布式数据库系统阿里云oceanbase采用了Zone(可用区域)的概念,每个Zone是一个机房内的一组服务器,包括多个ocean base database服务器(观察者)。每个观察者包含SQL引擎、事务引擎和存储引擎,并服务于多个数据分区。每个区域中的一个观察者可以同时启用RootService,用于执行集群管理、服务器管理、自动负载平衡和其他操作。观察者会运行SQL引擎、事务引擎和存储引擎,用户的SQL查询经过SQL引擎的解析和优化后,会转化为事务引擎和存储引擎的内部调用。对于跨服务器操作,ocean base database还会执行强一致的分布式事务,从而在分布式集群上实现数据库事务ACID
阿里云oceanbase数据库采用无共享架构,所有节点完全平等。每个节点都有自己的SQL引擎、事务引擎和存储引擎,运行在普通PC服务器组成的集群上,具有可伸缩、高可用、高性能、低成本的核心特性。
集群架构
阿里云oceanbase支持跨区域的数据部署,每个区域可能位于不同的城市,距离通常比较远,所以ocean base database可以支持多城市部署和多城市容灾。一个区域可以包含一个或多个zonezone是一个逻辑概念,包含一个或多个运行OBServer进程的服务器(以下简称OBServer)。每个区域包含一个拷贝(全功能拷贝或日志拷贝)。因为阿里云oceanbase的数据副本是分区域的,所以同一个区域的数据会分布在多个区域。每个分区的主副本所在的服务器称为Leader,所在的区域称为Primary Zone。如果未设置主分区,系统将根据负载平衡策略自动选择多个全功能副本中的一个作为主分区。
每个区域将提供两种服务:RootServicePartitionService。每个区域都会有一个主控服务,运行在某个观察者上,整个集群只有一个主控服务。其他主控制服务作为主控制服务的备份服务运行。主控服务负责整个集群的资源调度、资源分配、数据分发信息管理和模式管理。其中,资源调度主要包括向集群添加和删除观察者,为观察者中的用户创建资源规范、租户等资源;
资源平衡主要是指各种资源(例如单元)在各个区域或观察者之间的迁移。
数据分发管理是指总控服务会确定数据分发的位置信息,比如某个分区的数据分发给哪个观察者。
模式管理意味着主控服务负责调度和管理各种DDL语句。
分区服务是一个模块,负责每个观察者上每个分区的管理和操作功能。该模块与事务引擎和存储引擎有许多调用关系。
阿里云oceanbase数据库基于Paxos分布式选举算法,系统可以高可用,最小粒度可以达到分区级别。集群中数据的一个分区(或副本)将被保存到所有Zone中,整个系统中副本的多个分区的日志将通过Paxos协议进行同步。每个分区及其副本形成一个独立的Paxos复制组,其中一个分区是主分区,其他分区是从分区。对此副本的所有写请求将被自动路由到相应的主分区。主分区可以分布在不同的观察者上,这样对不同副本的写操作也会分布到不同的数据节点上,从而实现数据多点写,提高系统性能。
存储引擎
阿里云oceanbase的存储引擎采用基于LSM树的架构,将基线数据和增量数据分别保存在磁盘(SSTable)和内存(MemTable)中,特点是读写分离。对数据的更改是增量数据,只写入内存。所以DML是一个性能非常高的完整内存操作。读取时,数据可能在内存中有更新版本,在永久存储中有基线版本。有必要合并两个版本以获得最新版本。
如上图所示,ocean base database针对内存中不同的数据访问行为,设计了多种缓存结构。除了常用的数据块缓存,行也会被缓存,这将大大加快单行的查询性能。为了避免对不存在的行进行“空检查”,ocean base database为行缓存构建一个Bloom filter,并缓存Bloom filterOLTP业务的大多数操作都是小型查询。ocean base database通过对小查询的优化,避免了传统数据库解析整个数据块的开销,达到了接近内存数据库的性能。当内存的增量数据达到一定规模时,会触发增量数据和基线数据的合并,增量数据会被下载。同时,系统还会在每天晚上的空闲时间启动每日合并。此外,由于基线是只读数据,内部存储方式是连续的,所以ocean base database可以根据不同特征的数据采用不同的压缩算法,在不影响查询性能的情况下可以达到很高的压缩比,大大降低了成本。
SQL引擎
ocean base databaseSQL引擎是整个数据库的数据计算中心。与传统数据库类似,整个引擎分为三个部分:解析器、优化器和执行器。当SQL引擎接收到SQL请求后,会经过语法解析、语义分析、查询重写、查询优化等一系列过程,由执行器执行。不同的是,在分布式数据库中,查询优化器会根据数据的分布信息生成分布式执行计划。如果查询涉及的数据在多台服务器上,就需要采取分布式计划,这是分布式数据库SQL引擎的一个重要特性,也是考验查询优化器能力的一个场景。ocean base database的查询优化器做了很多优化,比如运算符下推、智能连接、分区裁剪等。如果SQL语句涉及大量数据,阿里云oceanbase的查询执行引擎还做了并行处理、任务拆分、动态分区、流水线调度、任务切割、子任务结果合并、并发限制等优化技术。
计划缓存(执行计划缓存模块)
执行计划的生成是一个复杂的过程,需要很长时间,尤其是在OLTP场景中,这一点不容忽视。为了加快SQL请求的处理速度,SQL执行引擎会将SQL第一次生成的执行计划缓存在内存中,后续的执行可以重复执行这个计划,从而避免了重复的查询优化过程。

使用道具 举报 回复
发新帖

您需要登录后才可以回帖 登录 | 立即注册