OceanBase学习1:分布式数据库与集中式数据库的差异

目录

1. 传统集中式数据库

2. 数据库中间件的分库分表

3. 分布式数据库的基本特点及对比分析

4. OceanBase和传统数据库的对比

5. 小结


1. 传统集中式数据库

优点

  • 成熟稳定:经过近40年的发展,应用到各行各业,产品技术非常成熟稳定
  • 行业适配性强:适配不同行业的各种需求
  • 生态完善:拥有大量的ISV应用开发商和技术开发者,技术生态、产业生态和人才生态都很完善

缺点

  • 成本高:自身软件售价高,同时依托于高端硬件,CAPEX和OPEX成本高昂
  • 无法横向扩展:容量的提升只能依靠提升设备自身的性能(增加CPU/内存/硬盘,或从PC服务器升级为小型机等),一定能碰到单点的上限

2. 数据库中间件的分库分表

优势

  • 线性扩展:通过分库分表,可以快速实现数据库的水平扩展
  • 技术成本低:不需要改造核心数据库引擎,或者只需要做很少的改造

劣势

  • 跨库分布式事务:数据库核心引擎没有分布式能力,只能通过中间件来完成分布式处理,但中间件难以做到RPO=0,因此在遇到异常和故障时无法100%保证分布式事务的ACID能力
  • 全局一致性:由于多个数据库服务器的时间戳不一致,因此很难保证多个库之间数据版本号的全局一致性
  • 负载均衡:扩容和缩容时,底层数据库引擎无法在线调整数据分布规则,因此需要暂停业务并重新导数据,对业务和运维挑战很大
  • 跨库复杂SQL:跨库的复杂SQL运算(比如多表做分片键无关的关联查询)只能在中间件完成,而中间件不具备分布式并行计算能力,最终会限制应用对SQL的使用,产生业务侵入性

3. 分布式数据库的基本特点及对比分析

优势

  • 数据高可靠+服务高可用:多副本一致性协议Paxos的工业级实现,个别节点发生故障时保证数据零丢失(RPO=0)和服务快速恢复(RTO<30秒)
  • 线性扩容:随着业务量增加进行扩容(比如线上促销期间),随着业务量减少进行缩容(比如促销后)
  • 低成本:基于普通X86服务器保证高可用性,无需使用高端小型机和存储全局一致性:支持分布式事务,确保全局一致性,支持分布式复杂查询
  • 灵活的部署方式:支持三中心、五中心、主备等多种部署模式
  • 对业务透明:业务系统可以像使用单点数据库一样使用分布式数据库,业务迁移改造成本低 

4. OceanBase和传统数据库的对比

传统集中式数据库以OceanBase为代表的分布式数据库
产品架构经典的“单点集中式”架构,采用“全共享(Share-Everything)”架构。构建于高端的硬件基础之上,比如IBM高端服务器和EMC高端存储设备等原生的“分布式”数据库,采用业界最严格的Paxos分布式一致性协议基于普通PC硬件的设计,不需要高端硬件
数据可靠性和服务离可用性

利用高端硬件设备保证数据可靠性

采用“主从复制”,主节点故障的情况下,会有数据损失(RPO>0);不能自动恢复服务,服务恢复时间(RTO)通常以小时为单位计算

以普通PC硬件为基础,利用Paxos分布式一致性协议保证数据可靠性
主节点故障的情况下,Paxos可以保证数据无损(即RPO=0),并且自动选举并恢复服务,服务恢复时间(RTO)在30秒以内
扩展性数据存储只能在单点内实现纵向扩展,最终必然触达单点架构下的容量上限。计算节点通常无法扩展。少数模式下(RAC,pureScale)可做计算节点扩展,但多个计算节点之间仍需访问单点共享存储,并且可扩展的计算节点数量有限

数据节点和计算节点均可以在MPP架构下实现水平扩展

数据节点和计算节点均没有数量限制,在网络带宽足够的前提下,可以扩充至任意数目

应用场景集中在企业客户(金融、电信、政企等)的核心系统
无法应付互联网业务场景,应用案例很少
支付宝核心、网商银行核心、阿里巴巴的众多业务,以及多家外部商业银行。逐渐迈向传统业务
使用成本比较昂贵
需要支付高端基础硬件的费用、高昂的软件授权费用以及产品服务费用
相对较低
基于PC硬件的设计降低了硬件费用,软件授权费用和服务费用也有优势

Paxos算法是指一个或多个提案者针对某项业务提出提案,并发送提案给投票者,由投票者投票并最终达成共识的算法。

RPO(Recovery Point Objective)RTO(Recovery Time Objective) 是衡量容灾恢复能力的重要指标,通常用于云容灾和IT系统恢复中。

RPO:指的是在灾难发生后,系统数据能够恢复到的最远时间点,它衡量了系统可以容忍的最大数据丢失量。例如,如果RPO设置为10秒,意味着系统在故障发生后,需要恢复到10秒前的数据状态,任何在这段时间内的数据变动都可能丢失。
RTO:指的是从IT系统故障导致业务停顿开始,到系统恢复并恢复正常运营所需的时间,它定义了最大可容忍的业务停顿时间。例如,如果RTO设置为5秒,意味着系统在故障后必须在5秒内恢复,以避免业务中断。
这两个指标共同反映了数据中心的容灾能力和业务连续性管理的要求,需要根据具体的业务需求和风险分析来设定。

5. 小结

        传统集中式数据库经过近40年的发展,已经非常成熟。但在当前这个大数据的时代,传统数据库依然面临较多挑战,分布式数据库可以有效解决这些问题,是未来数据库发展的重点方向。

  1. 传统数据库往往对硬件基础设施有较高要求,同时只能纵向扩展,无法横向扩展,容易达到性能上限;
  2. 分库分表虽然可以横向扩展了,但也有带来了不支持复杂SQL、较难保证分布式事务的ACID等新问题;
  3. 分布式数据库可以有效解决这些问题,应用可以像使用集中式数据库一样使用分布式数据库,分布式数据库具有低硬件成本、高可扩展性、高可用性等特性。

来自于OceanBase官方学习资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ的介绍和使用

1.同步通讯和异步通讯 举个例子&#xff0c;同步通讯就像是在打电话&#xff0c;因此它时效性较强&#xff0c;可以立即得到结果&#xff0c;但如果你正在和一个MM打电话&#xff0c;其他MM找你的话&#xff0c;你们之间是不能进行消息的传递和响应的 异步通讯就像是微信&#…

echarts tooltip过长被截断的解决方式

目录 溢出盒子显示弹框不溢出盒子显示弹框溢出盒子显示弹框 tooltip: {appendToBody: true, // 设置tooltip是否跟随鼠标移动position: function (point: any, params: any, dom

流畅的python-学习笔记_一等函数

函数对象 函数也是对象&#xff0c;操作可像对象一般操作 高阶函数 高阶函数指接受参数为函数&#xff0c;或返回函数的函数 不少高阶函数在py3已经有了替代品。map&#xff0c; filter可通过生成式实现&#xff0c;reduce&#xff08;在functools里&#xff09;可通过sum实…

解决 git克隆拉取代码报SSL certificate problem错误

问题&#xff1a;拉取代码时报错&#xff0c;SSL证书问题:证书链中的自签名证书问题 解决&#xff1a;只需要关闭证书验证&#xff0c;执行下面代码即可&#xff1a; git config --global http.sslVerify "false" 再次拉取代码就可以了

使用代理IP时,如何预防未知的风险?

在使用代理IP时&#xff0c;预防未知的风险是至关重要的。代理IP虽然提供了诸多便利&#xff0c;如匿名浏览、访问控制和内容过滤等&#xff0c;但如果不加以妥善管理和使用&#xff0c;可能会面临数据泄露、隐私暴露、恶意活动关联等风险。以下是一些建议&#xff0c;以帮助您…

在vue中的class增加事件监控

目录 1、代码如下&#xff1a; 2、代码说明&#xff1a; 1、代码如下&#xff1a; <div class "addClassLister" ></div>mounted () {this.$nextTick().then(() > {const firstNode document.querySelector(.addClassLister)console.log(firstNod…

使用mxnet中的img2rec.py制作rec数据集

源码链接&#xff1a;mxnet/tools/im2rec.py at master apache/mxnet GitHub 重点关注入参函数即可&#xff0c; def parse_args():"""Defines all arguments.Returns-------args object that contains all the params"""parser argparse.A…

如何配置 OpenAI 环境变量

配置 OpenAI 环境变量 操作步骤 本地创建一个新文件夹&#xff08;文件夹命名最好是英文、文件夹内无其他文件&#xff09;打开编辑器&#xff08;VScode&#xff09;→打开刚才创建的「文件夹」在项目文件夹里&#xff0c;创建一个名为 .env 的文件 不是 .env.py不是 xxx.env…

一键实现在VS Code中绘制流程图

VS Code是一款常用的IDE&#xff0c;受到许多用户的欢迎和喜爱。而其较为出众的一点&#xff0c;就是较好的可拓展性&#xff0c;即丰富的插件应用&#xff0c;这些应用可以极大地提高生产效率&#xff0c;并优化日常使用。 流程图是一种直观的图示方法&#xff0c;可以用简明…

BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU、TCN-BIGRU-ATTENTION合集

&#xff08;BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU、TCN-BIGRU-ATTENTION&#xff09;时&#xff0c;我们可以从它们的基本结构、工作原理、应用场景以及优缺点等方面进行详细介绍和分析。 BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU等&#xff08;matlab…

LabVIEW如何通过子VI更改主VI控件属性?

在LabVIEW中&#xff0c;可以通过使用Local Variable或Property Node来实现主VI控件属性的更改。这些方法可以在主VI和子VI之间传递数据和控件属性。 Local Variable: 使用Local Variable可以在子VI中直接访问并修改主VI中的控件属性。在子VI中创建Local Variable&#xff0c;并…

层级实例化静态网格体组件:开启大量模型处理之门

前言 在数字孪生的世界里&#xff0c;我们常常需要构建大量的模型来呈现真实而丰富的场景。然而&#xff0c;当使用静态网格体 &#xff08;StaticMesh &#xff09;构建大量模型时&#xff0c;可能会遇到卡顿的问题&#xff0c;这给我们带来了不小的困扰&#x1f623;。那么&…

MySQL几种引擎的差别和应用场景汇总

MySQL 提供了多种存储引擎&#xff0c;每种引擎都有其特定的设计目的和适用场景。 下面是几种常见存储引擎的简要对比和应用场景&#xff0c; 存储引擎对比与应用场景 InnoDB 特点: 支持事务处理&#xff0c;行级锁&#xff0c;外键约束&#xff0c;崩溃恢复能力&#xff08;A…

Spring Data JPA自定义Id生成策略、复合主键配置、Auditing使用

前言 在Spring Data JPA系列的第一篇文章 SpringBoot集成JPA及基本使用-CSDN博客 中讲解了实体类的Id生成策略可以通过GeneratedValue注解进行配置&#xff0c;该注解的strategy为GenerationType类型&#xff0c;GenerationType为枚举类&#xff0c;支持四种Id的生成策略&…

STM32F407VET6 学习笔记2:定时器、串口、自定义串口打印函数

今日继续学习使用嘉立创购买的 立创梁山派天空星&#xff0c;芯片是 STM32F407VET6 因为已经有学习基础了&#xff0c;所以学习进度十分快&#xff0c;这次也是直接一块学习配置定时器与串口了&#xff0c;文章也愈来愈对基础的解释越来越少了...... 文章提供测试代码讲解、完…

【如此简单!数据库入门系列】之思想地图 -- 系列目录

文章目录 1 前言2 基本概念3 基本原理4 数据库历史5 数据模型6 数据库规范化7 数据存储8 总结 1 前言 目录是思想地图&#xff0c;指引我们穿越文字的森林。 为了方便系统性阅读&#xff0c;将【如此简单&#xff01;数据库入门系列】按照模块划分了目录结构。 2 基本概念 【…

Jetpack Compose(一

Intellij IDEA构建Android开发环境 IntelliJ IDEA 2023.2.1 Android开发变化 IDEA配置使用Gradle 新建Compose工程&#xff0c;取名ComposeStudy 可以看到的是IDEA为项目初始化了部分代码 使用Compose开发不再需要使用xml文件来设计布局了 Compose中的Text也不同于Android V…

java中的条件、循环和scanner类

if else ; 单行逻辑大括号可以省略&#xff1b;但是不建议省略&#xff1b; public static void main(String[] args) {boolean bool1 (Math.random() * 1000) % 2 > 1;System.out.println((Math.random() * 1000) % 2 "-" bool1);if(bool1) {System.out.prin…

达梦数据库操作笔记(ubuntu)

1、达梦数据安装之后无法在终端输入disql命令解决办法&#xff1a; 解决&#xff1a;.bash_profile需要配置安装目录&#xff0c;并且确保$DM_HOME/tool写在了$DM_HOME/bin的后面&#xff1b; 文件中需要追加&#xff1a; --检查环境变量, 达梦数据库默认安装位置&#xff1…

ogv转mp4怎么转?只需3个步骤~

OGV&#xff08;Ogg Video&#xff09;是一种开源的视频文件格式&#xff0c;起源于对数字媒体领域的开放标准的需求。作为Ogg多媒体容器的一部分&#xff0c;OGV的设计初衷是提供一种自由、高质量的视频编码方案&#xff0c;以满足多样化的应用需求。 支持打开MP4文件格式的软…