首页 > 其他分享 >OceanBase介绍

OceanBase介绍

时间:2024-08-04 13:24:31浏览次数:18  
标签:副本 OceanBase 数据库 介绍 SQL 数据 节点

OceanBase 是什么

OceanBase 是由蚂蚁金服、阿里巴巴完全自主研发的分布式关系型数据库,始创于 2010 年。

OceanBase 具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系型数据库、低成本等特点。OceanBase 至今已成功应用于支付宝全部核心业务:交易、支付、会员、账务等系统以及阿里巴巴淘宝(天猫)收藏夹、P4P 广告报表等业务。除在蚂蚁金服和阿里巴巴业务系统中获广泛应用外,从 2017 年开始,OceanBase 开始服务外部客户,客户包括南京银行、浙商银行、人保健康险等。

产品优势
高性能:OceanBase 采用了读写分离的架构,把数据分为基线数据和增量数据。其中增量数据放在内存里(MemTable),基线数据放在 SSD 盘(SSTable)。对数据的修改都是增量数据,只写内存。所以 DML 是完全的内存操作,性能非常高。

低成本:OceanBase 通过数据编码压缩技术实现高压缩。数据编码是基于数据库关系表中不同字段的值域和类型信息,所产生的一系列的编码方式,它比通用的压缩算法更懂数据,从而能够实现更高的压缩效率。

高兼容:兼容常用 MySQL/ORACLE 功能及 MySQL/ORACLE 前后台协议,业务零修改或少量修改即可从 MySQL/ORACLE 迁移至 OceanBase。

高可用:数据采用多副本存储,少数副本故障不影响数据可用性。通过“三地五中心”部署实现城市级故障自动无损容灾

OceanBase 产品优势和应用场景

OceanBase 是一款金融级的分布式关系数据库,具备高性能、高可用、强一致、可扩展和兼容性高等典型优势,适用于对性能、成本和扩展性要求高的金融场景。

主要特性

高性能:存储采用读写分离架构,计算引擎全链路性能优化,准内存数据库性能。
低成本:使用PC服务器和低端 SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户混部充分利用系统资源。
高可用:数据采用多副本存储,少数副本故障不影响数据可用性。通过“三地五中心”部署实现城市级故障自动无损容灾。
强一致:数据多副本通过paxos 协议同步事务日志,多数派成功事务才能提交。缺省情况下读、写操作都在主副本进行,保证强一致。
可扩展:集群节点全对等,每个节点都具备计算和存储能力,无单点瓶颈。可线性、在线扩展和收缩。
兼容性:兼容常用 MySQL/ORACLE功能及 MySQL/ORACLE 前后台协议,业务零修改或少量修改即可从 MySQL/ORACLE 迁移至 OceanBase。 应用场景

OceanBase 的产品定位是一款分布式关系数据库,经过多年蚂蚁金服内部业务的打磨,目前已经支持蚂蚁金服 100% 核心交易系统,稳定支撑阿里、蚂蚁内部上百个关键业务以及浙商银行、南京银行等多个外部客户。OceanBase 产品适用于金融、证券等涉及交易、支付和账务等对高可用、强一致要求特别高,同时对性能、成本和扩展性有需求的金融属性场景,以及各种关系型结构化存储的 OLTP 应用。OceanBase 天然的 Share-Nothing 分布式架构对于各种 OLAP 型应用也有很好的支持,例如云数据库 OceanBase 适用于以下典型场景:

金融级数据可靠性需求
金融环境下通常对数据可靠性有更高的要求,OceanBase 每一次事务提交,对应日志总是会在多个数据中心实时同步,并持久化。即使是数据中心级别的灾难发生,总是可以在其他的数据中心恢复每一笔已经完成的交易,实现了真正金融级别的可靠性要求。

在这里插入图片描述

让数据库适应飞速增长的业务
业务的飞速成长,通常会给数据库带来成倍压力。OceanBase 作为一款真正意义的分布式关系型数据库,由一个个独立的通用计算机作为系统各个节点,数据根据容量大小、可用性自动分布在各个节点,当数据量不断增长时,OceanBase 可以自动扩展节点的数量,满足业务需求。
在这里插入图片描述

连续不间断的服务
企业连续不间断的服务,通常意味着给客户最流畅的产品体验。分布式的 OceanBase 集群,如果某个节点出现异常时,可以自动剔除此服务节点,该节点对应的数据有多个其他副本,对应的数据服务也由其他节点提供。甚至当某个数据中心出现异常,OceanBase 可以在短时间内将服务节点切换到其他数据中心,可以保证业务持续可用。
在这里插入图片描述

OceanBase 产品架构

OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎,运行在普通 PC 服务器组成的集群之上,具备可扩展、高可用、高性能、低成本、云原生等核心特性。

OceanBase 数据库的整体架构如下图所示。
在这里插入图片描述

集群架构

OceanBase 数据库支持数据跨地域(Region)部署,每个地域可能位于不同的城市,距离通常比较远,所以 OceanBase 数据库可以支持多城市部署,也支持多城市级别的容灾。一个 Region 可以包含一个或者多个 Zone,Zone 是一个逻辑的概念,它包含了 1 台或者多台运行了 OBServer 进程的服务器(以下简称 OBServer)。每一个 Zone 上包含一个完整的数据副本,由于 OceanBase 数据库的数据副本是以分区为单位的,所以同一个分区的数据会分布在多个 Zone 上。每个分区的主副本所在服务器被称为 Leader,所在的 Zone 被称为 Primary Zone。如果不设定 Primary Zone,系统会根据负载均衡的策略,在多个全功能副本里自动选择一个作为 Leader。

每个 Zone 会提供两种服务:总控服务(RootService)和分区(PartitionService)。其中每个 Zone 上都会存在一个总控服务,运行在某一个 OBServer 上,整个集群中只存在一个主总控服务,其他的总控服务作为主总控服务的备用服务运行。总控服务负责整个集群的资源调度、资源分配、数据分布信息管理以及 Schema 管理等功能。 其中:

资源调度主要包含了向集群中添加、删除 OBServer,在 OBServer 中创建资源规格、Tenant 等供用户使用的资源;
资源均衡主要是指各种资源(例如:Unit)在各个 Zone 或者 OBServer 之间的迁移。
数据分布管理是指总控服务会决定数据分布的位置信息,例如:某一个分区的数据分布到哪些 OBServer 上。 Schema
管理是指总控服务会负责调度和管理各种 DDL 语句。

存储引擎
OceanBase 数据库的存储引擎采用了基于 LSM-Tree 的架构,把基线数据和增量数据分别保存在磁盘(SSTable)和内存(MemTable)中,具备读写分离的特点。对数据的修改都是增量数据,只写内存。所以 DML 是完全的内存操作,性能非常高。读的时候,数据可能会在内存里有更新过的版本,在持久化存储里有基线版本,需要把两个版本进行合并,获得一个最新版本。
在这里插入图片描述

如上图所示,在内存中针对不同的数据访问行为,OceanBase 数据库设计了多种缓存结构。除了常见的数据块缓存之外,也会对行进行缓存,行缓存会极大加速对单行的查询性能。为了避免对不存在行的空查,OceanBase 数据库对行缓存构建了布隆过滤器,并对布隆过滤器进行缓存。OLTP 业务大部分操作为小查询,通过小查询优化,OceanBase 数据库避免了传统数据库解析整个数据块的开销,达到了接近内存数据库的性能。当内存的增量数据达到一定规模的时候,会触发增量数据和基线数据的合并,把增量数据落盘。同时每天晚上的空闲时刻,系统也会启动每日合并。另外,由于基线是只读数据,而且内部采用连续存储的方式,OceanBase 数据库可以根据不同特点的数据采用不同的压缩算法,既能做到高压缩比,又不影响查询性能,大大降低了成本。

SQL 引擎
OceanBase 数据库的 SQL 引擎是整个数据库的数据计算中枢,和传统数据库类似,整个引擎分为解析器、优化器、执行器三部分。当 SQL 引擎接受到了 SQL 请求后,经过语法解析、语义分析、查询重写、查询优化等一系列过程后,再由执行器来负责执行。所不同的是,在分布式数据库里,查询优化器会依据数据的分布信息生成分布式的执行计划。如果查询涉及的数据在多台服务器,需要走分布式计划,这是分布式数据库 SQL 引擎的一个重要特点,也是十分考验查询优化器能力的场景。OceanBase 数据库查询优化器做了很多优化,诸如算子下推、智能连接、分区裁剪等。如果 SQL 语句涉及的数据量很大,OceanBase 数据库的查询执行引擎也做了并行处理、任务拆分、动态分区、流水调度、任务裁剪、子任务结果合并、并发限制等优化技术。

下图描述了一条 SQL 语句的执行过程,并列出了 SQL 引擎中各个模块之间的关系。

在这里插入图片描述

Parser(词法/语法解析模块)
Parser 是整个 SQL 执行引擎的词法或语法解析器,在收到用户发送的 SQL 请求串后,Parser 会将字符串分成一个个的单词,并根据预先设定好的语法规则解析整个请求,将 SQL 请求字符串转换成带有语法结构信息的内存数据结构,称为语法(Syntax Tree)。为了加速 SQL 请求的处理速度,OceanBase 数据库对 SQL 请求采用了特有的快速参数化,以加速查找执行计划的速度。
Resolver(语义解析模块
当生成语法树之后,Resolver 会进一步将该语法树转换为带有数据库语义信息的内部数据结构。在这一过程中,Resolver 将根据数据库元信息将 SQL 请求中的 token 翻译成对应的对象(例如库、表、列、索引等),生成语句树。
Transfomer(逻辑改写模块)
在查询优化中,经常利用等价改写的方式,将用户 SQL 转换为与之等价的另一SQL,以便于优化器生成最佳的执行计划,这一过程称为查询改写。Transformer 在Resolver 之后,分析用户 SQL 的语义,并根据内部的规则或代价模型,将用户 SQL改写为与之等价的其他形式,并将其提供给后续的优化器做进一步的优化Transformer 的工作方式是在原 Statement Tree 上做等价变换,变换的结果仍然是一棵语句树。
Optimizer(优化器)
优化器是整个 SQL 优化的核心,其作用是为 SQL 请求生成最佳的执行计划。在优化过程中,优化器需要综合考虑 SQL 请求的语义、对象数据特征、对象物理分布等多方面因素,解决访问路径选择、联接顺序选择、联接算法选择、分布式计划生成等多个核心问题,最终选择一个对应该 SQL 的最佳执行计划。SQL 的执行计划是一棵由多个操作符构成的执行树。
Code Generator(代码生成器)
优化器负责生成最佳的执行计划,但其输出的结果并不能立即执行,还需要通过代码生成器将其转换为可执行的代码,这个过程由 Code Generator 负责。
Executor(执行器)
当 SQL 的执行计划生成后,Executor 会启动该 SQL 的执行过程。对于不同类型的执行计划,Executor 的逻辑有很大的不同:对于本地执行计划,Executor 会简单的从执行计划的顶端的算子开始调用,由算子自身的逻辑完成整个执行的过程,并返回执行结果;对于远程或分布式计划,Executor 需要根据预选的划分,将执行树分成多个可以调度的线程,并通过 RPC 将其发送给相关的节点执行。
Plan Cache(执行计划缓存模块)
执行计划的生成是一个比较复杂的过程,耗时比较长,尤其是在 OLTP 场景中,这个耗时往往不可忽略。为了加速 SQL 请求的处理过程,SQL 执行引擎会将该 SQL 第一次生成的执行计划缓存在内存中,后续的执行可以反复执行这个计划,避免了重复查询优化的过程

OceanBase 产品部署方案

云数据库 OceanBase 分为高可用版本和基础版本,支持多机房部署、双机房部署和单机房部署三种部署方案。

高可用版本
云数据库 OceanBase 高可用版本为您提供机房级、主机级容灾等多种策略的高可用服务,支持多机房部署、双机房部署和单机房部署三种部署方案。

多机房部署
云数据库 OceanBase 多机房部署指将三个节点部署在三个不同可用区,实现跨可用区容灾,不额外收费。每个节点均为全功能副本,其中一个主副本提供读写服务,两个备副本提供只读服务。当主副本发生故障时,备副本将会升为主副本继续提供读写服务。

双机房部署
云数据库 OceanBase 双机房部署将两个节点部署在两个可用区,其中一个节点作为主副本提供读写服务,另外一个备节点可以提供只读服务。并在第三个可用区部署一个日志节点,该节点仅用于日志同步,不包含数据副本,不对外提供读写服务。双机房部署仍具备机房级容灾能力,与多机房部署相比在性价比上有较大提升。

单机房部署
云数据库 OceanBase 单机房部署指所有节点位于同一可用区,具备主机级别故障容灾能力,同时由于单机房部署的写请求无需进行跨机房同步,延时较小。

基础版本
云数据库 OceanBase 基础版本支持单机房单节点部署,容灾能力较弱。您购买时无需选择存储容量,存储费用根据实际使用量按小时计费。

云数据库 OceanBase 基础版本一般用于开发测试环境,实际生产环境建议使用高可用版本

OceanBase 产品定价

本页面为您介绍 OceanBase 的产品价格。

付费方式

OceanBase 在金融区和非金融区收费不同,金融区相比非金融区安全性更高。主要付费方式包括包年包月和按量付费两种方式。

包年包月

按量付费

在新建数据库集群时无需预先支付费用。您可选择固定存储或自定义存储大小,集群的计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。

标签:副本,OceanBase,数据库,介绍,SQL,数据,节点
From: https://blog.csdn.net/weixin_51705943/article/details/140718421

相关文章

  • 【Obsidian插件】(2)Zotero Integration插件设置界面介绍
    ZoteroIntegration插件可以将Zotero(文献管理软件)与Obsidian(笔记软件)整合起来,通过引用文献或导入注释等操作,以提高文献阅读和笔记记录的效率。本文主要介绍该插件的设置界面:目录1一般设置(GeneralSettings)1.1PDFUtility1.2自定义PDFUtility路径1.3数据库1.4笔......
  • C语言关于函数的基本介绍
    目录一、前言二、为什么需要函数?三、什么是函数?四、函数的作用及分类。五、函数的基本用法。六、主函数的简单介绍。七、函数原型以及一些常用的系统函数的介绍。一、前言    这些都是作者学习C语言过程中了解到的只是,有的地方可能不是写的特别清楚,同时这也是......
  • 【介绍下Unity编辑器扩展】
    ......
  • 2024关于日本AI 领域TOP12 的大学介绍
    1.东京大学(TheUniversityofTokyo)位于:日本东京都文京区本郷七丁目3番1号网址:東京大学东京大学也被称为UTokyo或东大,是日本第一所国立大学。作为领先的研究型大学,东京大学提供基本所有本科和研究生学科的课程,并进行各种学术活动的研究。该大学包括三个主要校区——H......
  • 科大讯飞T20pro功能介绍 科大讯飞t20pro续航怎么样科大讯飞t20pro处理器
    T20Pro学习平板采用紫光展锐八核处理器,具有4个A75以及4个A55,具体型号未知。这款处理器不仅在性能表现上优秀,同时也具有较低的功耗,为用户带来更长时间的使用体验。可以说,这款处理器是T20Pro学习平板得以实现高效、流畅使用的重要因素之一。创新的13.3英寸大屏设计,分辨率高达1920x......
  • synchronized介绍
    synchronized原理:从JVM规范中可以看到Synchonized在JVM里的实现原理,JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现的,而方法同步是使用另外一种方式实现的,通过编译之后,同步方法与普......
  • Unittest框架的介绍及使用
    介绍基本概念​ unittest是Python自带的一个单元测试框架,它可以做单元测试,也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法,判断测试用例是否通过,并最终生成测试结果.四大组件testcase:就是我们的测试用例,unittest中提供了一个......
  • 服务器性能分析软件「 WGCLOUD 」完整功能介绍
    WGCLOUD是一款国产开源的服务器状态性能监测软件,免费高效,轻量实用,部署简单,上手操作容易,颜值在线,更好的是它具有极低的资源占用WGCLOUD官网下载地址:www.wgstart.comWGCLOUD可以支持哪些操作平台,如下:Linux:Debian,RedHat,CentOS,Ubuntu,Fedora,SUSE,麒麟,统信(UOS),龙芯(mips)等Windows:W......
  • LLM场景下常用浮点数介绍
    在计算机中,浮点数的表示基于IEEE754标准,这是最广泛使用的浮点数表示标准。对于一个具体的数值,如10.2345434,它会被分解为符号位、指数位和尾数位。这里以最常见的float32(单精度浮点数)为例来解释这个过程:符号位如果数值是正的,符号位为0;如果数值是负的,符号位为1。对于10.23454......
  • LLM场景下常用浮点数介绍
    在计算机中,浮点数的表示基于IEEE754标准,这是最广泛使用的浮点数表示标准。对于一个具体的数值,如10.2345434,它会被分解为符号位、指数位和尾数位。这里以最常见的float32(单精度浮点数)为例来解释这个过程:符号位如果数值是正的,符号位为0;如果数值是负的,符号位为1。对于10.23454......