当前位置: 首页 > news >正文

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官方学习资料

相关文章:

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

目录 1. 传统集中式数据库 2. 数据库中间件的分库分表 3. 分布式数据库的基本特点及对比分析 4. OceanBase和传统数据库的对比 5. 小结 1. 传统集中式数据库 优点 成熟稳定:经过近40年的发展&#xff0c;应用到各行各业&#xff0c;产品技术非常成熟稳定行业适配性强:适配…...

计算机网络技术主要学什么内容,有哪些课程

计算机网络技术专业是一个涉及理论与实践紧密结合的学科&#xff0c;主要学习内容有计算机网络基础、网络设备技术、网络编程等内容&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;整理的计算机网络技术主要学什么内容&#xff0c;供大家参考&#xff01; 基…...

Mac下安装ffmpeg

1、安装gedit brew install gedit2、配置环境变量&#xff0c;打开~/.zshrc&#xff0c;在末尾添加语句 export PATH$PATH:/usr/local/ffmpeg/bin3、执行语句&#xff0c;使环境变量生效 source ~/.zshrc 4、终端输入 ffmpeg &#xff0c;看环境变量是否配置成功。 至此&a…...

自制AI:Park_01修改bug

修改了一下不能存东西&#xff0c;不能打开东西的bug #include<bits/stdc.h> #include<windows.h> using namespace std; double mem10737418240; map<string,string> jishiben; string mulu"朴同学给你的一封信.memo\n"; int cntnote1; void sta…...

解救应用启动危机:Spring Boot的FailureAnalyzer机制

目录 一、走进FailureAnalyzer 二、在Spring Boot中如何生效 三、为什么可能需要自定义FailureAnalyzer 四、实现自定义基本步骤 &#xff08;一&#xff09;完整步骤要求 &#xff08;二&#xff09;注册方式说明 通过Spring Boot的spring.factories文件&#xff08;建…...

win11个性化锁屏界面怎么关闭?

win11个性化锁屏界面关闭方法对于win11用户来说&#xff0c;关闭个性化锁屏界面是一个常见问题。本文将由php小编苹果详细介绍如何执行此操作&#xff0c;分步指导并提供操作截图。继续阅读以了解具体步骤。 win11个性化锁屏界面关闭方法 第一步&#xff0c;点击底部Windows图…...

白酒:白酒香型与品质消费的关系及影响

云仓酒庄的豪迈白酒作为中国白酒的品牌&#xff0c;其白酒香型与品质消费的关系及影响备受关注。随着消费者对品质的重视程度不断提高&#xff0c;了解白酒香型与品质之间的关系对于云仓酒庄和消费者都具有重要意义。 经云仓酒庄豪迈白酒分析&#xff0c;白酒香型与品质消费的关…...

智能BI(后端)-- 系统优化(安全性,数据存储,限流)

文章目录 安全性todo 数据存储限流限流的几种算法限流粒度限流的实现本地限流&#xff08;单机限流&#xff09;Redisson实现分布式限流(多机限流) 安全性 问题引入&#xff1a;如果用户上传一个超大的文件怎么办&#xff1f;比如1000G&#xff1f; 预防&#xff1a; 只要涉及…...

探索数字社交的奇迹:解读Facebook的革命性影响

1. 社交互动的全新模式 Facebook的出现不仅仅是一个社交媒体平台的诞生&#xff0c;更是一种全新的社交互动模式的开启。传统的社交模式主要依赖于面对面的交流&#xff0c;而Facebook则将社交推向了全新的数字化平台&#xff0c;使得人们可以在虚拟的世界里建立和维系社交关系…...

FileCodeBox-Lite:轻量级文件分享解决方案

在数字时代&#xff0c;文件分享是一个常见的需求&#xff0c;无论是个人用户还是企业团队。FileCodeBox-Lite提供了一个简单、高效且安全的文件分享解决方案。以下是对FileCodeBox-Lite项目的详细介绍。 项目简介 FileCodeBox-Lite是一个轻量级的文件分享系统&#xff0c;…...

【ARM】ARM寄存器和异常处理

目录 1.指令的执行过程 2. ARM处理器概述 3.ARM指令集 4.ARM存储模型 5. ARM工作模式 6.ARM寄存器组织 &#xff08;1&#xff09;寄存器 &#xff08;2&#xff09; ARM寄存器 &#xff08;3&#xff09;CPSR寄存器​​​​​​​ 7. ARM异常处理 &#xff08;1&am…...

数仓建模【埋点设计与管理】

埋点设计与管理 埋点的作用 分析用户转化以及留存&#xff1a;分析用户偏好收集市场反馈保障用户数据安全定位异常其他作用 埋点数仓设计 数据进入数仓之前我们就需要设计好数仓表&#xff0c;埋点表的数据有几个特点&#xff1a; 数据量非常大&#xff0c;可能是所有数据集…...

Spring Clound介绍

Spring Cloud 是一系列框架的集合&#xff0c;它利用 Spring Boot 的开发便利性简化了分布式系统&#xff08;例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态&#xff09;的开发。Spring Cloud 旨在为开发者…...

Redhat Linux忘记密码解决方案

1、重启系统 2、将光标移动到要启动的内核 3、按e编辑当前条目 4、将光标移动以Linux开头的行&#xff0c;此为内核命令行 5、在末尾添加人的rd.break 6、按ctrlx继续启动&#xff0c;如果发现输入的rd.break不能进入到伪系统&#xff0c;那么改为 rd.break consoletty0 (按ctr…...

对于子数组问题的动态规划

前言 先讲讲我对于这个问题的理解吧 当谈到解决子数组问题时&#xff0c;动态规划(DP)是一个强大的工具&#xff0c;它在处理各种算法挑战时发挥着重要作用。动态规划是一种思想&#xff0c;它通过将问题分解成更小的子问题并以一种递归的方式解决它们&#xff0c;然后利用这些…...

Instal IIS on Windows Server 2022 Datacenter

和以往版本一样&#xff0c;没有什么不同&#xff0c;So easy&#xff01; WinR - ServerManager.exe 打开服务器管理器&#xff0c;点击【添加角色和功能】&#xff0c;选择自己想要的角色和功能。 一、开始之前&#xff1a;帮助说明&#xff0c;点击【下一步】&#xff1b;…...

飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式

文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化&#xff0c;这步骤容易出问题&#xff01; 安装前准备 内核升级包的md5,本人已验证&#xff0c;只要是这个md5值&#xff0c;放心升级 1ea91ea41eedb35c5da12fe7030f4347 ke…...

Oracle 误操作insert delete update 数据回滚

查询回滚数据 select * from tablename AS OF TIMESTAMP TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd hh24:mi:ss) where not exists (select 1 from tablename A where A.xh tablename.xh and A.TIME tablename.TIME); TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd h…...

Linux系统(CentOS)下安装配置 Nginx 超详细图文教程

一、下载并安装 1.打开nginx官网并点击右侧的download&#xff0c;Nginx官网下载地址 2.选择稳定版本 我放在/usr/local/nginx/下&#xff0c;新建文件夹 mkdir /usr/local/nginx/ 通过xftp传输到Linux的服务器上&#xff0c;这里方法不过多复述。 或者如果Linux联网&#xf…...

追求完美用户体验,从变量名设计的细节抓起

在一个安静的办公室里&#xff0c;卧龙和凤雏正坐在电脑前忙碌地工作着。阳光透过窗户洒在他们的脸上&#xff0c;映照出专注的神情。 “变量命名让人摸不着头脑&#xff0c;光看变量名很难搞清楚它的用途。”卧龙眉头紧皱&#xff0c;表情严肃地说道。 “哦&#xff1f;具体是…...

matlab实现K均值聚类

在MATLAB中实现聚类分析&#xff0c;可以使用MATLAB内置的聚类函数&#xff0c;如kmeans&#xff08;用于K均值聚类&#xff09;&#xff0c;linkage和cluster&#xff08;用于层次聚类&#xff09;&#xff0c;或者使用MATLAB的统计和机器学习工具箱中的其他函数。 以下是一个…...

详解BOM编程

华子目录 BOM编程window对象常见的window对象的属性常见的window对象的方法注意 history对象history对象的属性history对象的方法 screen 对象navigator 对象属性方法 location对象属性方法示例 BOM编程 JavaScript本质是在浏览器中运行&#xff0c;所以JavaScript提供了BOM&a…...

情感分类学习笔记(1)

文本情感分类&#xff08;二&#xff09;&#xff1a;深度学习模型 - 科学空间|Scientific Spaces 一、代码理解 cw lambda x: list(jieba.cut(x)) #定义分词函数 您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是…...

EtherCAT运动控制器Delta机械手应用

ZMC406硬件介绍 ZMC406是正运动推出的一款多轴高性能EtherCAT总线运动控制器&#xff0c;具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口&#xff0c;ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。 ZMC406支持6轴运动控制&#xff0c;最多可扩展至32轴&#…...

物联网杀虫灯—新型的环保杀虫设备

型号推荐&#xff1a;云境天合TH-FD2S】物联网杀虫灯是一种新型环保杀虫设备&#xff0c;其中风吸式太阳能杀虫灯作为其一种特殊类型&#xff0c;展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源&#xff0c;白天储存电源&#xff0c;晚上为杀虫灯提供电…...

加盟零食店的真是大冤种

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 我一朋友&#xff0c;在老家县城去年失业没事干&#xff0c;手里有一点钱但不多&#xff0c;就想着自己干点啥 。最后经多方打听考察&#xff0c;加盟了一个零食店&#xff0c;前前后后花去了近五六十万&#xff0c…...

力扣刷题--数组--第三天

今天再做两道二分查找的题目&#xff0c;关于二分查找的知识可看我前两篇博客。话不多说&#xff0c;直接开干&#xff01; 题目1&#xff1a;69.x 的平方根 题目详情&#xff1a;   给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。由于返回类型是整数&#…...

开源即时通讯IM框架 MobileIMSDK v6.5 发布

一、更新内容简介 本次更新为次要版本更新&#xff0c;进行了bug修复和优化升级&#xff08;更新历史详见&#xff1a;码云 Release Notes、Github Release Notes&#xff09;。 MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。轻量级、高…...

React 第二十七章 Hook useMemo

useMemo 函数可以用于缓存计算结果&#xff0c;以避免不必要的重复计算。 在React的函数组件中&#xff0c;当组件重新渲染时&#xff0c;函数组件内的所有代码都会重新执行。有些计算可能是非常消耗资源的&#xff0c;例如进行复杂的计算或进行网络请求。如果这些计算的结果在…...

自己写的爬虫小案例

网址&#xff1a;aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …...