分布式数据库产品
几款分布式数据库的对比

⼏款分布式数据库的对⽐1 概述随着海量数据问题的出现,海量管理能⼒,多类型,变化快,⾼可⽤性,低成本,⾼端可扩展性等需求给企业数据战略带来了巨⼤的挑战。
企业数据仓库、数据中⼼的技术选型变得尤其重要!所以在选型之前,有必要对⽬前市场上各种⼤数据量的解决⽅案进⾏分析。
2 主流分布式并⾏处理数据库产品介绍2.1 Greenplum 2.1.1 基础架构Greenplum 是基于Hadoop 的⼀款分布式数据库产品,在处理海量数据⽅⾯相⽐传统数据库有着较⼤的优势。
Greenplum 整体架构如下图:数据库由Master Severs 和Segment Severs 通过Interconnect 互联组成。
Master 主机负责:建⽴与客户端的连接和管理;SQL 的解析并形成执⾏计划;执⾏计划向Segment 的分发收集Segment 的执⾏结果;Master 不存储业务数据,只存储数据字典。
Segment 主机负责:业务数据的存储和存取;⽤户查询SQL 的执⾏。
2.1.2 主要特性Greenplum 整体有如下技术特点: Shared-nothing 架构Network Interconnect...Master Severs 查询解析、优化、分发Segment Severs 查询处理、数据存储ExternalSources 数据加载海量数据库采⽤最易于扩展的Shared-nothing架构,每个节点都有⾃⼰的操作系统、数据库、硬件资源,节点之间通过⽹络来通信。
◆基于gNet Software Interconnect数据库的内部通信通过基于超级计算的―软件Switch‖内部连接层,基于通⽤的gNet (GigE,10GigE) NICs/switches在节点间传递消息和数据,采⽤⾼扩展协议,⽀持扩展到1000个以上节点。
◆并⾏加载技术利⽤并⾏数据流引擎,数据加载完全并⾏,加载数据可达到4。
5T/⼩时(理想配置)。
中兴通讯GoldenDB分布式数据库

中兴通讯GoldenDB分布式数据库1.产品描述中兴通讯在数据库领域具备超过十七年的技术积累,自2002年开始先后自主研发文件数据库、内存数据库、分布式数据库等产品并大规模服务电信领域产品;2014年率先拓展金融行业分布式数据库,该产品完全自主研发并获得100多项相关专利。
针对银行OLTP业务,中兴通讯分布式数据库GoldenDB为业务带来传统单机数据库无法提供的计算及扩展能力,提供高可用、高可靠、资源调度灵活的数据库服务,支持金融行业已有业务升级及创新业务快速部署的需求。
2.产品架构3.功能优势●Share Nothing全分布式架构:计算存储分离、存储节点具备强大的本地计算能力;无单点故障瓶颈,设备故障情况下,依旧保证数据零丢失、提供不间断服务;横向扩展,通过设备堆叠无限扩展计算性能和存储容量;支持超大规模节点的可视化监控运维;●高效可靠的容灾能力:金融级多地多中心多活架构,实现RPO=0,RTO<30S,数据永不丢失,灾难情况下业务快速平稳切换;●不停服务的在线扩容:支持哈希、列表、范围、复制四种分片规则;支持热点库分裂,保证数据分布均衡;支持多表关联扩容,减少跨库关联查询;扩容计划灵活配置,扩容过程可视化管理;●金融级实时一致的分布式事务:引入全局事务管理器,保证分布式事务的实时一致性;对应用透明的分布式事务处理,应用无需改造;一阶段提交+自动补偿机制,提升分布式事务处理性能;●金融级可靠性:快同步复制保证数据不丢失,分组复制保证业务不中断,高低水位实现策略灵活可配置;●功能完备的备份恢复:支持全量、增量、实时和定时的备份策略,支持数据恢复到任意时间点,支持恢复到全局一致的数据状态;●SQL兼容:兼容标准SQL语法、MySQL语法、Oracle常见语法,支持分布式优化、分布式批处理。
4.应用场景中兴通讯GoldenDB分布式数据库已经在中信银行、江苏省农村信用社联合社、江苏银行、湖南省政府、湖北仙桃市政府等单位成功商用,主要应用场景包括:高并发场景:针对政府、金融、运营商、互联网业务对数据库的高并发交易的要求,且可以保证数据的事务强一致性。
tbase 架构原理

tbase 架构原理tbase架构原理:实现高可用、高性能、低延迟的分布式数据库tbase是腾讯公司基于开源PostgreSQL开发的一款分布式数据库产品,拥有高可用、高性能、低延迟等特点,已经在腾讯内部得到了广泛应用。
tbase架构原理是tbase实现这些特点的基础。
tbase架构主要由三个部分组成:分布式协调器、分布式存储引擎和分布式节点。
其中,分布式协调器负责协调分布式节点之间的数据同步和负载均衡,分布式存储引擎负责将数据存储到分布式节点中,分布式节点则负责实际的数据处理和查询。
这三部分相互协作,共同实现了tbase的高可用、高性能、低延迟的特点。
分布式协调器tbase的分布式协调器采用了Paxos算法来实现数据同步和负载均衡。
Paxos算法是一种分布式一致性算法,通过多个节点之间的相互协作,保证了数据的一致性和可靠性。
在tbase中,分布式协调器负责维护数据的一致性和负载均衡,同时也负责监控整个系统的运行状态,以便及时发现和修复问题。
分布式存储引擎tbase的分布式存储引擎采用了分布式存储技术,将数据存储到多个节点中,实现了数据的高可用性和可扩展性。
在tbase中,分布式存储引擎采用了分布式事务技术,保证了数据的一致性和可靠性。
同时,tbase还支持多种数据存储方式,如行存储、列存储、分区存储等,以满足不同业务场景的需求。
分布式节点tbase的分布式节点是实际数据的处理和查询节点。
在tbase中,分布式节点采用了多线程技术,实现了数据的并行处理和查询,大大提高了系统的性能和吞吐量。
同时,tbase还采用了多副本技术,保证了数据的高可用性和可靠性,在节点故障时能够自动切换到备用节点,保证业务的连续性。
总结tbase是一款高可用、高性能、低延迟的分布式数据库产品,其架构原理主要由分布式协调器、分布式存储引擎和分布式节点三部分组成。
这三部分相互协作,共同实现了tbase的特点。
分布式协调器采用了Paxos算法,保证了数据的一致性和负载均衡;分布式存储引擎采用了分布式存储和分布式事务技术,保证了数据的可靠性和一致性;分布式节点采用了多线程和多副本技术,保证了系统的性能和可用性。
GBase MPP数据库产品介绍

数据库产品介绍
GBase 8a MPP Cluster
目录
1
GBase 8a MPP 产品简介及技术分析 GBase 8a MPP 应用场景及行业典型案例 GBase 8a MPP 平台稳定性及运维支撑体系
2
3
大数据≠任何单一的数据处理技术
Hadoop
NoSQL,互联网、 非结构化
合适的技术解决针对的问题
NewSQL
传统数据库
OldSQL,交易、 联机事务
MPP数据库
NewSQL,分析应 用、结构化行业 大数据
OldSQL
+
NoSQL
大数据平台 混搭架构
大数据
多种数据处理技术的组合
One Size Doesn’t Fit All!
GBase 8a MPP Cluster 产品简介
分布式任务
Parser Optimizer Coordinator
• GCWare:
• GNode:
GCWare 用于各节点GCluster 实例 间共享信息,以及控制多副本数据 分布式 操作时,提供可操作节点,并在多 数据管理层 副本操作中,控制各节点数据一致 性状态。
GNode 是GCluster 中最基本的存 储和计算单元。GNode 负责集群数 据在节点上的实际存储,并从 分布式 GCluster 接收和执行经分解的SQL 集群管理层 执行计划,执行结果返回给 GCluster。
应用平台
混 搭 结 构பைடு நூலகம்数 据 平 台
统一接入管理
关系模型 存储过程 SQL 星型模型 ACID 雪花模型 数据 交换
HBase
分布式关系型数据库drds

分布式关系型数据库 DRDS最佳实践最佳实践数据拆分策略切分维度的选择是决定我们的分布式数据最重要的一个权衡性因素,需要审慎选择,一般而言,您可以按照以下五个维度进行思考和权衡,包括数据均衡度考虑、事务边界因素、常用查询效率考虑、异构索引考虑、简单性策略。
每一个应用业务类型可能都不太一样,也不太可能匹配所有因素的最优策略,具体采用何种方式,还需要通过综合考量,每个因素都不能太走极端,否则会导致开发运维成本急剧增长。
容量和访问均衡一般来说数据容量和访问均衡是我们考量的第一点,不均衡的数据分布和访问可能不能充分发挥数据拆分的能力,让访问体验变差,同时带来成本上的损耗,相当于1+1<2的效果。
所以一般来说拆分字段区分度比较大,数据分布和访问相对会比较均衡,但是这点也需要考虑到某一个拆分值是否有热点的问题。
那么按照这个原则,能否按主键拆分(区分度最大)呢?我们没有禁止按主键拆分,但是不推荐,因为按主键拆分,如果要保持最佳性能,你每个sql都需要带上这个主键字段(当然不带扫描所有数据分片也可以,只是性能会降低)。
事务边界事务边界越大(或者单个sql所执行的数据分片数),那么系统的锁冲突概率越高,系统越难以扩展,性能越低。
因此,若想将您的系统做到很好的扩展性,那么一个最重要的原则就是想办法划小事务边界,并尽可能让事务的边界限制在单台机器内。
缩小事务边界的方式,主要有以下三类:第一种方式:事务边界本来就很小比如,您发现按照某个切分条件,数据分布均匀,并且事务边界只在单机内,不需要跨机事务,那么恭喜,这个切分条件是非常合适的切分维度。
第二种方式:使用基于消息的最终一致模型,将强一致事务变为最终一致事务针对事务的拆解,是个比较复杂的概念,我们会专门进行阐述,在这里只针对一个最常见的最终一致性事务拆解模型做出简单说明。
例如,当我们要通过分布式事务完成在两台数据库内的数据转账操作的时候,我们会发现有些操作不得不通过网络而进行传递,这明显的增加了单次事务的延迟,极大的降低了性能。
分布式数据库

8.2 分布式数据库管理系统DDBMS(Distribute DBMS )分布式数据库意味着一个应用程序可以对数据库进行透明操作,数据库中的数据分布在不同的数据库中存储、由不同的DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通讯网络连接在一起。
一个一分布式数据库由一个逻辑数据库组成,这个逻辑数据库的数据分布存贮在由计算机网络相连的不同场地的计算机中,每一场地都有自治能力完成局部应用。
每一场地也参与至少两个结点以上的全局应用程序的执行,全局应用可以存取若干场地的数据。
从应用程序看来,就好象数据是存储在一台计算机上,由单个DBMS管理一样。
8.2.1 分布式数据库系统的产生分布式数据库由一组数据集合组成,这些数据属于一个逻辑数据库,但数据存贮在多个物理计算机结点上,通过网络连接在一起。
分布式数据库系统是在集中式数据库系统的基础上发展起来的,是数据库技术与计算机网络技术结合的产物。
分布式数据库系统是具有管理分布数据库功能的计算机系统。
一个分布式数据库是由分布于计算机网络上的多个逻辑相关的数据库组成的集合,网络中的每个结点具有独立处理的能力(称为场地自治),可执行局部应用,同时,每个结点通过网络通讯系统也能执行全局应用。
所谓局部应用即仅对本结点的数据库执行某些应用。
所谓全局应用(或分布应用)是指对二个以上结点上的数据库执行某些应用。
支持全局应用的系统才能称为分布式数据库系统。
对用户来说,一个分布式数据库系统逻辑上看如同集中式数据库系统一样,用户可在任何一个场地执行全局应用。
分布式数据库系统适合于单位分散的部门,允许各个部门将其常用数据存储在本地,实施就地存放就地使用,降低通讯费用,并可提高响应速度。
因为这些企业实际上已经把数据分散在不同的位置或不同的物理计算机上。
例如,一个公司的不同部门的数据,银行系统的各个分行数据等。
企业的信息资源已经是被划分为许多信息资源孤岛,分布式数据库系统是适应企业的结构现状,满足企业的应用要求,把所有的信息资源孤岛连接起来,实现数据的异地存取。
分布式数据库UPDRDB介绍

UPSQL
UPSQL
UPSQL
UPSQL
UPSQL
UPSQL
5
2. UPSQL Proxy 二期功能 流式处理
6
Field— count
Fiel d
EoflO K
Ro w
EoflErrlO K
2. UPSQL Proxy / 二 期 功 能 / 流式处理
Field— count
1. mysql/mysqldump (cmd) witch -q
不同并发下的性能曲线
4000
45
0
40
3500
35
0
30
3000
25
0
20
2500
15
0
10
2000
5
0
0
1500 0
32 64 96 128 160 192 224 256 288 320 352 384 416 448
480 512 TP
95%时延
平2时延
1000 0
S Q接池配置为(16-128)
1 P据存储:KV 2 高可T:Multi-Raft
1 P据存储:KV 2 高可用:类似MySQL复 制 3 分布式存储引擎
1 单 点 写 、多点读 2 存储与计算分离
3. 对标分析 / TDSQL & DRDS
• 技术路线
• 丰富完善Proxy层的SQL解 析 能 力
• 主要技术状态 • 分布式事/支持 • 复杂语句 • 聚合类有限支持 • 不支持部分数据类型
/*-> metadata */
mysql> Commit; Query OK, 0 rows affected (0.00 sec)
GoldenDB金融级分布式数据库解决方案

• 账务核心 • 信用卡核心
• 信用卡中心 • 卡中心统一数据库
管理
• 信贷及核算核心业 务系统
• 支撑全行业务系统
• 数据库云平台
• BCIF核心系统 • 全行统一客户信息
管理
• 信用卡核心 • 亿级用户,10万
+TPS
• 核心业务系统 • 全行统一数据库
• 统一档案管理 • 查询性能从10分钟
提升至秒级
IBM i/UNIX 小型机
新应用核心 JAVA 节点1
技术平台 JAVA Linux OS
PC Server(X86)
计算节点 1 DB 1
新应用核心 JAVA 节点2
技术平台 JAVA
...
Linux OS
PC Server(X86)
新应用核心 JAVA 节点k
技术平台 JAVA
Linux OS
GoldenDB:成熟稳定商用领先的金融级分布式数据库
坚如磐石
商用领先
标准引领
生态共建
领先的研发实力和高效的产品研发流程
技术深厚积累
项目管理能力业界认可
• 近20年数据库领域研发积累 • 200+专利申请、100+专利授权 • 500+团队人员
• CMMI-DEV ML5 • 2020年PMI(中国)项目管理大
A=100
二阶段
PID GTID
A 1002
C 1001
B=100
PID GTID
B 1002
D 1001
Acnt
100
200
Acnt
100
200
增强的多数派协议实现一致性复制及金融级高可用
保障高性能的数据一致性; 实现有序的主备切换,符合金融行业主
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
分布式数据库--数据拆分
水平拆分,拆分数据
垂直拆分,拆分业务 把一个表结构拆分为两个表结构 例如:把下表拆分为账户表和用户信息表
账 户 密 码 区 域 状 态 用户 姓名 手 机 家庭 电话 联系地 址 邮箱 性别 ……
由查询发起的数据库进行数据收集,其他节点的数据库把相关的数据传输到发 起数据库后,进行查询处理; 目标:一个好的分布式查询,应该使数据的传输量和通信 次数最少,这样才能使查询所花费的数据传输和通信时间 最少,从而减少查询的总代价;
16
16
分布式数据库--跨库Join查询
查看用户名User1的购买的订单中产品类型为“电子类”的金额总数; 产品表(Pid,Pname,type,price) 用户表(Uid,Uname) 订单表(Oid,Uid,TotalPrices) 订单明细表(id,Oid,Pid,amount,prices) SELECT 用户表.Uname,产品表.type,count(订单明细表.Pries) AS 购买金额总数
5
存 款 操 作
2
取 款 操 作
中间 状态 缓存
4 调用异地支行B中的存款服务,运行存款服务业务;
5 为某账户存款100元,该账户余额增加100元; 6 7 8
通知支行A的取款服务,汇款操作完成,并通知事务中间状态缓存,修改存款 操作的状态为成功,解锁支行A冻结的账户,并通知用户;
如果第六步存款操作不成功,事务中间状态缓存会持续调用支行B存款服务, 直到存款操作成功完成; 如果多次调用存款服务,存款操作没有成功执行,事务中间状态缓存会回滚 该汇款转账分布式事务,回滚支行A中的取款操作(根据取款操作的逆向 操作); 正向操作和逆向操作都有可能会出现多次调用;
两阶段提交协议的问题: 性能瓶颈,数据库在提交 请求阶段应答后对很多资 源处于锁定状态,要等到 事务管理器收集齐所有数 据库的应答后,才能发 commit或者rollback消息 结束这种锁定;(锁定时 间的长度是由最慢的一个 数据库制约) 分布式系统中节点越多, 存在缓慢网络或者故障节 点的概率也就越大,资源 被长时间锁定的概率指数 上升; 从业务功能划分的角度上 ,尽量避免使用分布式事 务两阶段提交; 12
FROM 产品表,用户表,订单表,订单明细表
Where 用户表.Uname =‘User1’ AND 产品表.type = ‘电子类’ AND 用户表.Uid = 订单表.Uid AND 订单表.Oid = 订单明细表.Oid AND 产品表.Pid = 订单明细表.Pid
用户名 User1
产品类型 电子类
分布式事务--两阶段提交
分布式事务处理( Distributed Transaction Processing , DTP )涉及多个分布在不同地方的数据库 ,但对数据库的操作必须全部被提交或者回滚。只要任一数据库操作时失败,所有参与事务的数据库都需 要回滚。使用两阶段提交协议2PC。
第 一 阶 段 : 准 备 阶 段 第 一 阶 段 : 准 备 阶 段
4
并行数据库
并行数据库系统(Parallel Database System)是新一代高性能的数据库系统,是在 MPP和集群并行计算环境的基础上建立的数据库系统。
并行数据库系统的目标是高性能(High Performance)和高可用性(High Availability),通过多个处理节点并行执行数据库任务,提高整个数据库系统的 性能和可用性。并行数据库系统基于多处理节点的物理结构,将数据库管理技术与 并行处理技术有机结合,来实现系统的高性能。并行数据库分为:
6
分布式数据库--透明性
分布式数据库系统的用户不需要知道数据的物理位置,也不需要知道如何访问某 个数据库节点的数据;
切片透明性:用户不需要知道数据是如何进行切 片的; 复制透明性:用户不需要关心数据或者切片的如 何复制的,也不需要关心副本存放的位置; 位置透明性:用户不需要关心数据的物理位置, 也不需要关心如何找到数据;
事务补偿分为两种机制,事务补偿机制和基于消息的最终一致性机制: • • 事务补偿机制,基本可以是做到准实时的事务补偿(实时性较好) ,但需要大量的代码研发工作来保障事务的完整性; 基于消息的最终一致性机制,对于实时性要求不高,可使用BASE策 略中的基于消息的最终一致性是比较好的解决方案。这种方案真正 实现一个事务的两个服务的真正解耦,解耦的关键就是异步消息和 消息持久化机制。
产品表 订单明细表 数据库A
查询库
用户表 订单表 数据库B
策略4:在Application层,对SQL查询进行分解查询,在Application层的内存中进行数据的合 并统计,并产生最终查询结果,对数据库的性能和网络带宽开销很小,但会增加应用层的性能 开销,不适合中间结果数据较大的查询; 策略5:需要跨库查询的关系表,四个表复制到一个查询库,由查询库提供分布式查询;
预备(Prepare)
事务 管理 器
提交(Commit)
DB2
就绪(Ready) 预备(Prepare)
事务 管理 器
DB1
已提交确认 提交(Commit)
DB2
就绪(Ready)
DB1
已提交确认 回滚(Rollback)
DB2 事务 管理 器 DB1
第 二 阶 段 : 提 交 阶 段 第 二 阶 段 : 回 滚 阶 段
切分策略、节点路由、全局主键生成 、跨节点排序/分组/表关联、多数据 源事务处理和数据库扩容等。
10
分布式数据库--分库分表
通过切片对集中式数据库进行分库分表,把一个数据库的业务数据分成多个物理数据库。
数据量小,增 量缓慢,则不 需要再划分
目标:一次数据库业务数据的操作(查询、更改数据) ,在一个数据库中完成。
购买金额总数 16800元
Application
Proxy
策略1:把用户表和产品表的数据传输到数据库A中进行查询,性能很差,浪费网络带宽; 策略2:把数据库A的数据传输到数据库B中进行查询,性能很差,浪费网络带宽; 策略3:在Proxy中进行SQL拆分,例如在数据库B中,先查询 用户“User1”的所有订单编号 ,把该用户的订单编号传输到数据库A中执行进一步数据查询,性能快,网络带宽开销很小;
取款服务 存款服务
7 1
取 款 操 作 取款 回滚
2
发送 存款 消息
调 用
3 6
再 次 调 用
消息 中间 件
结 果 通 知
5
4
存 款 操 作
实时性较差,但对 系统性能开销很小
7
取款 回滚
DB1
DB2
支行A
支行B
15
15
分布式数据库--跨库Join查询
分布式查询处理,从应用层或者服务层的角度,应用业务功能划分的越清晰,越 能避免在分布式数据库环境中出现跨库Join查询的情况。 由应用层或者服务层进行跨库Join的分布式查询的SQL分解,并在内存中保存中 间数据结果并做最终的数据查询的结果合并;
8
取款 回滚
DB1
DB2
支行A
准实时性,会增加分 布式系统的复杂度
支行B
14
14
分布式事务--基于消息最终一致性机制
对于转账操作,原有的两个服务调用变化为第一步调用本地的取款服务,第二步发送异地取款的异步消息到消息中间件。消 息中间件得到消息后对消息解析,然后调用异地银行提供的存款服务进行存款,如果服务调用失败则进行重试以保证事务的 最终一致性。只要两个操作都成功即可以返回客户成功。 在本地取款到异地存款两个服务调用之间,会存在一个真空期,这段时间相关现金不在任何一个账户,而只是在一个事务的 中间状态,但是客户并不关心这个,只要在约定的时间保证事务最终的一致性即可。
调 用
Hale Waihona Puke 4 6结 果 通 知
取款服务
7 1
登 记
存款服务
1
汇款转账分布式事务登记,开始一个分布式事务,生成分布式事务每一个操 作的逆向操作和运行状态;
3
修改 状态
6
再 次 调 用
2 从支行A的某账户中取款100元,账户余额减去100元,并冻结账户;
3 通知事务中间状态缓存,取款事务操作提交完成,修改取款操作的状态;
2.
避免跨库操 作。如需要 ,在应用层 协调解决此 问题。
数据量大,增量 迅速,则需要再 进行水平拆分
最后拆分到五个数据库中
对数据库进行分库分表(Sharding)前,需要开发人员充分了解系统业务逻辑和数据库结构:
建议是绘制一张数据库ER图或领域模型图,如果项目使用数据驱动的开发方式,团队以数据库ER图作为业务交流的基 础,则自然会选择数据库ER图 如果项目使用的是领域驱动的开发方式,并通过OR-Mapping构建了一个良好的领域模型,那么领域模型图无疑是最 好的选择。更加倾向使用领域模型图,因为进行切分时更多的是以业务为依据进行分析判断,领域模型无疑更加清晰和 11 直观。
集中式数据库系统:运行在一台计算机上,不与其他计算机 系统交互的数据库系统;
客户-服务器数据库系统:计算机的的联网使的任务可以分别 划分在服务器和客户端上执行; 并行数据库系统:通过网络连接多个CPU和磁盘来提高处理 速度和I/O速度;
分布式数据库系统:分布式数据库系统用来处理地理上或者 管理上分布在多个数据库系统中的数据;
13
分布式事务--事务补偿机制
在应用层或者服务层中,任何一个分布事务的正向操作都必须生成一个符合回滚规则的可逆向操作。 例如:一个用户跨银行的转账,该事务涉及到调用两个Service服务,一个是本地提供的取款服务,一个 是异地目标银行提供的存款服务,该两个服务本身无状态且独立,构成一个完整的事务。