分布式数据库技术及应用探讨 - Oracle … ·...
Transcript of 分布式数据库技术及应用探讨 - Oracle … ·...
分布式数据库技术及应用探讨
许向东 甲骨文公司金融行业技术产品总监 2017-04-07
Oracle云助力保险IT创新峰会
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Oracle Sharding 应用场景及案例分析
总结与问答
1
2
3
4
2
分布式数据库
定义利用计算机网络将物理上分散的多个数据库连接起来组成一个逻辑上统一的数据库为业务应用提供完整的联机事务处理
核心技术分布式存储+事务处理+查询操作
关系型-ACID
CAP
分布式事务-
两阶段提交
强一致性-
MVCC
关系型-ACID
3
互联网这些年 - Google十年前发表的三篇论文奠定了大数据分析处理的基石
Google十年前面临的挑战搜索引擎需要对抓取到
的结果进行管理当索引结果越来越多时保证存储和查询速度保证数万台服务器内容一致的难度越来越高
bull分布式非关系型数据库( NoSQL ) 以MongoDB Hbase为代表应对数据量爆发增长
并发访问突增以较低投入成本解决海量数据的存储线性扩展
用于内容管理搜索认证等互联网类应用和大数据处理
挑战擅长简单读写无法处理交易类数据及复杂业务逻辑数据一致性很难保证运维及开发成本高
4
互联网这些年 - Google分布式数据库的领跑者
Google于1213年发表 SpannerF1两篇论文奠定了
下一代分布式关系型数据库的理论和工程实践基石
2012年Google公布了世界上第一个全球化的数据库系统Spanner这套系统将分布在全球各地的数据中心连接到一起利用GPS和原子钟技术实现了全球规模具有一致性和实时性的数据库
TiDB
bull分布式关系型数据库( NewSQL )
以MySQL Shard OceanBase为代表支持完整的ACID特性解决分布式事务的一致性和实时性
挑战跨Shard操作性能降低无法处理批量业务逻
辑增删节点复杂数据重分布需要人工辅助
用于电商支付这样的互联网类联机交易业务并发
量高的多活数据中心1067030 1067030 1067030 1067030 1067030
5
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Oracle Sharding 应用场景及案例分析
总结与问答
1
2
3
4
2
分布式数据库
定义利用计算机网络将物理上分散的多个数据库连接起来组成一个逻辑上统一的数据库为业务应用提供完整的联机事务处理
核心技术分布式存储+事务处理+查询操作
关系型-ACID
CAP
分布式事务-
两阶段提交
强一致性-
MVCC
关系型-ACID
3
互联网这些年 - Google十年前发表的三篇论文奠定了大数据分析处理的基石
Google十年前面临的挑战搜索引擎需要对抓取到
的结果进行管理当索引结果越来越多时保证存储和查询速度保证数万台服务器内容一致的难度越来越高
bull分布式非关系型数据库( NoSQL ) 以MongoDB Hbase为代表应对数据量爆发增长
并发访问突增以较低投入成本解决海量数据的存储线性扩展
用于内容管理搜索认证等互联网类应用和大数据处理
挑战擅长简单读写无法处理交易类数据及复杂业务逻辑数据一致性很难保证运维及开发成本高
4
互联网这些年 - Google分布式数据库的领跑者
Google于1213年发表 SpannerF1两篇论文奠定了
下一代分布式关系型数据库的理论和工程实践基石
2012年Google公布了世界上第一个全球化的数据库系统Spanner这套系统将分布在全球各地的数据中心连接到一起利用GPS和原子钟技术实现了全球规模具有一致性和实时性的数据库
TiDB
bull分布式关系型数据库( NewSQL )
以MySQL Shard OceanBase为代表支持完整的ACID特性解决分布式事务的一致性和实时性
挑战跨Shard操作性能降低无法处理批量业务逻
辑增删节点复杂数据重分布需要人工辅助
用于电商支付这样的互联网类联机交易业务并发
量高的多活数据中心1067030 1067030 1067030 1067030 1067030
5
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
分布式数据库
定义利用计算机网络将物理上分散的多个数据库连接起来组成一个逻辑上统一的数据库为业务应用提供完整的联机事务处理
核心技术分布式存储+事务处理+查询操作
关系型-ACID
CAP
分布式事务-
两阶段提交
强一致性-
MVCC
关系型-ACID
3
互联网这些年 - Google十年前发表的三篇论文奠定了大数据分析处理的基石
Google十年前面临的挑战搜索引擎需要对抓取到
的结果进行管理当索引结果越来越多时保证存储和查询速度保证数万台服务器内容一致的难度越来越高
bull分布式非关系型数据库( NoSQL ) 以MongoDB Hbase为代表应对数据量爆发增长
并发访问突增以较低投入成本解决海量数据的存储线性扩展
用于内容管理搜索认证等互联网类应用和大数据处理
挑战擅长简单读写无法处理交易类数据及复杂业务逻辑数据一致性很难保证运维及开发成本高
4
互联网这些年 - Google分布式数据库的领跑者
Google于1213年发表 SpannerF1两篇论文奠定了
下一代分布式关系型数据库的理论和工程实践基石
2012年Google公布了世界上第一个全球化的数据库系统Spanner这套系统将分布在全球各地的数据中心连接到一起利用GPS和原子钟技术实现了全球规模具有一致性和实时性的数据库
TiDB
bull分布式关系型数据库( NewSQL )
以MySQL Shard OceanBase为代表支持完整的ACID特性解决分布式事务的一致性和实时性
挑战跨Shard操作性能降低无法处理批量业务逻
辑增删节点复杂数据重分布需要人工辅助
用于电商支付这样的互联网类联机交易业务并发
量高的多活数据中心1067030 1067030 1067030 1067030 1067030
5
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
互联网这些年 - Google十年前发表的三篇论文奠定了大数据分析处理的基石
Google十年前面临的挑战搜索引擎需要对抓取到
的结果进行管理当索引结果越来越多时保证存储和查询速度保证数万台服务器内容一致的难度越来越高
bull分布式非关系型数据库( NoSQL ) 以MongoDB Hbase为代表应对数据量爆发增长
并发访问突增以较低投入成本解决海量数据的存储线性扩展
用于内容管理搜索认证等互联网类应用和大数据处理
挑战擅长简单读写无法处理交易类数据及复杂业务逻辑数据一致性很难保证运维及开发成本高
4
互联网这些年 - Google分布式数据库的领跑者
Google于1213年发表 SpannerF1两篇论文奠定了
下一代分布式关系型数据库的理论和工程实践基石
2012年Google公布了世界上第一个全球化的数据库系统Spanner这套系统将分布在全球各地的数据中心连接到一起利用GPS和原子钟技术实现了全球规模具有一致性和实时性的数据库
TiDB
bull分布式关系型数据库( NewSQL )
以MySQL Shard OceanBase为代表支持完整的ACID特性解决分布式事务的一致性和实时性
挑战跨Shard操作性能降低无法处理批量业务逻
辑增删节点复杂数据重分布需要人工辅助
用于电商支付这样的互联网类联机交易业务并发
量高的多活数据中心1067030 1067030 1067030 1067030 1067030
5
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
互联网这些年 - Google分布式数据库的领跑者
Google于1213年发表 SpannerF1两篇论文奠定了
下一代分布式关系型数据库的理论和工程实践基石
2012年Google公布了世界上第一个全球化的数据库系统Spanner这套系统将分布在全球各地的数据中心连接到一起利用GPS和原子钟技术实现了全球规模具有一致性和实时性的数据库
TiDB
bull分布式关系型数据库( NewSQL )
以MySQL Shard OceanBase为代表支持完整的ACID特性解决分布式事务的一致性和实时性
挑战跨Shard操作性能降低无法处理批量业务逻
辑增删节点复杂数据重分布需要人工辅助
用于电商支付这样的互联网类联机交易业务并发
量高的多活数据中心1067030 1067030 1067030 1067030 1067030
5
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
分布式数据库两种架构
bull 读写分离的主备库
bull Oracle ADG (如iTune Store)
bull Amazon Aurora
bull 中国版MS Azure SQL Database
读写主库
只读备库
复制
Application App1
App2
App3
协调器
Shard 1 Shard 2 helliphellip
复制
6
bull Sharding 分库分表 bull 通过切片(sharding)对集中式数据库进行分
库分表把一个数据库的业务数据分成多个物理数据库Shard
bull 每个Shard 只负责自己分片数据的修改
bull 实现Sharding 需要解决一系列关键的技术问题切片策略节点路由跨节点排序分组关联分布式事务处理和Shard扩容等 Active
DataGuard
Reader Farm
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
CLI CLI CLI
APP
DB
APP
DB
APP
DB
SZ SH BJ
网络协议层
APP
DB
APP
DB
APP
DB
网络协议层
CLI CLI CLI 路由逻辑 路由逻辑 路由逻辑
路由逻辑
路由逻辑
路由逻辑
方案一 方案二
Sharding 分库分表-路由功能
方案一路由功能放在用户层路由逻辑放在client端的程序模块
中在用户客户端和应用服务器的协议层实现路由功能通过分析协议报文判断用户的请求去向哪个数据中心的服务器
互联网公司常用此架构某些银行的中间业务平台也是此架构
方式二路由功能的逻辑放在应用层在中间件上附加程序实现访问数据库的路由逻辑用户发送请求到中间件层后在中间件层加入业务逻辑进行判断和映射将请求发向正确的数据库
应用服务器集群和数据库要位于同一物理位置的数据中心
7
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Sharding 应用 vs 常规应用
bull 常规应用系统各层间松耦合通用灵活标准规范化
bull 人员分工协作(业务应用开发数据库IT运维)
应用层
DB逻辑层
DB物理层
硬件层
bull Sharding应用系统各层间紧耦合缺乏通用性
bull 业务需求切片设计尽量不跨Shard操作
bull 应用开发 bull 开发人员写访问Sharding的代码必须考虑路由 bull 所有SQL都必须加上Sharding Key等值条件
bull 数据库设计
bull 所有主表必须有Sharding Key所有子表必须包含主表Sharding Key所有表按Sharding
Key分散到各Shard中
bull 公共数据表在所有Shard中存一份要有机制维护冗余一致性
bull 考虑主从备份复制延迟
bull 人员无法明确分工
(业务开发数据库IT运维)
应用层
DB逻辑层
路由层
DB物理层
硬件层
8
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Sharding 建设和维护量
国际版MS Azure SQL DB 阿里OceanBase Google Spanner
原子钟
美国GPS卫星
bull 节点多造成灾备备份复杂
bull 增删节点复杂重分布数据多数派选举等
bull 服务器角色多故障隔离度低运维复杂
Spanner动用了GPS卫星和原子钟技术仅仅是为了全球DB获得统一的ldquoSCNrdquo
定制开发
9
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
10
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
互联网这些年 - Oracle 数据库技术发展
2008 2010 2012 2014
Oracle DB
Exadata V1
互联网 主张
Exadata X2
互联网 主张
Exadata X4
互联网 主张
Exadata X5
互联网 主张
Exadata X6
互联网 主张
混合负载 radic X radic X radic X radic X radic X
关系型 radic radic X radic X radic X radic radic F1 radic radic OceanBase
强一致 radic radic X radic X radic X radic radic Spanner radic radic Spanner
结构化 radic radic X radic X radic radic HBase radic radic HBase radic radic HBase
SQL语言 radic radic X radic radic Hive radic radic Hive radic radic Hive radic radic Hive
水平扩展 radic radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop radic radic Hadoop
1988 helliphellip 2016
ldquo对于电商支付这样的业务根本没法使用弱一致系统rdquo
mdashmdash 蚂蚁金服资深技术专家 杨传辉
2017
Oracle Sharding
Oracle 121
GA Jun2013
bull Scale-Out Servers
bull Scale-Out Storage
Oracle 122 GA 2017-03
11
Oracle 111
GA Aug 2007
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding - 数据分片 在Oracle 122中最大支持1000个shards
12
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding ndash 架构及组件
逻辑数据库
物理数据库
分片目录库
GSM
全球服务管理器
Oracle GDS(Global Data
Services)框架
Oracle GDS(Global Data Services)框架来实现自动部署和shading的管理以及拓扑复制
GDS提供了对整个sharded database访问的负载均衡和基于位置的路由功能
在 GDS框架中Global Service Manager(GSM)负责将应用请求转发到合适的shard上
shard catalog分片目录库支持跨shard的查询功能同时存储了sharded database的配置数据
底层使用Oracle表分区技术将数据水平分片存储到不同的物理数据库
每个物理数据库称为shard位于不同的服务器这些shard组成一个逻辑数据库称为sharded database (SDB)
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding ndash 架构及组件
Oracle Sharding 主要组件
Sharded database (SDB) 逻辑上是一个数据库物理上包括多个独立的数据库(Shard) SDB类似一个数据库池(pool)
Shard 位于不同的服务器独立的硬件资源(CPU内存硬盘等) Shard数据库可以是DGADG复制库保证高可用性Shard通过GSM deploy软件自动创建
Shard catalog 集中存储和管理SDB配置信息添加删除shard等配置变化都记录在Shard catalog应用跨多个shard查询由Shard catalog统一协调Shard catalog可配置为HA高可用模式
Shard directors 类似于监听器管理客户端访问的路由分配和负载均衡 管理接口通过GDSCTL (command-line utility) 命令行部署管理和监控Sharding
GSM
全球服务管理器
14
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding - 分片方式
bull 系统管理分片(System-Managed Sharding)
bull 用户不用指定数据存放在哪个shard中系统通过一致性哈希(Consistent Hash )算法将数据分区并自动分布在不同的Shard上
bull 用户定义分片(Customer-defined Sharding)
bull by Range 给分片键值分配一个范围
bull by List 给分片键值分配一个值列表
bull by Composite Sharding (组合分片)
使用两个键值by Range + Consistent Hash or by List + Consistent Hash 两级分片
15
Customers Orders Line Items
Products
Sharded
Duplicated
Sharding Key Cust_id
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Sharding技术带来的变化
12
bull 1 增加了SQL的复杂性因为开发人员必须要写更复杂的SQL来处理sharding的逻辑
bull 2 Sharding本身带来的复杂性sharding软件需要照顾分区数据平衡访问协调数据完整性
34
bull 3 单点故障一个shard损坏可能导致整张表不可访问
bull 4 失效接管服务器也更复杂因为负责失效接管的服务器必须存有失效shard上的所有数据
56
bull 5 备份也更复杂多个shard可能都需要同时备份
bull 6 维护也更复杂比如增加删除索引增减删除字段修改表定义等都变得更困难
在Oracle Sharding
中都无需担心
16
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
17
Oracle Sharding 软件安装
数据库软件安装
bull 仅安装软件所有的Shard Database以及Catalog Database所在的server均需要安装数据库软件
bull Sharding数据库将在最终部署的时候统一通过GDS创建
GSM安装
bull GSM安装分别对应逻辑拓扑中的gsm1和gsm2
Remote Scheduler Agent安装
bull 需要安装在所有的Shard节点服务器上
$export ORACLE_BASE=homedboracle
$export ORACLE_HOME=$ORACLE_BASEgsm
$export PATH=$ORACLE_HOMEbin$PATH
$gdsctl
GDSCTLgt remove shard -shard sh1
GDSCTLgt remove shard -shard sh2
GDSCTLgt remove shard -shard sh3
GDSCTLgt remove shard -shard sh4
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh1rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc03 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh2rsp
GDSCTLgtcreate shard -shardgroup shgrp1 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh3rsp
GDSCTLgtcreate shard -shardgroup shgrp2 -destination
w125pc04 -credential oracle_cred -netparamfile
homedboracleoracle12cnetca_sh4rsp
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
内容提要
分布式数据库的起源及架构
Oracle Sharding分布式数据库
Sharding 应用场景及案例分析
总结与问答
1
2
3
4
18
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
OLTP 应用 特点
1-大型计费系统
应用业务流程间无依赖或耦合度低
2-民航票务系统 高并发访问量(秒杀类)
3-互联网类金融服务 无状态或弱状态类应用
4-在线游戏公司 无批量处理
5-网站内容服务 无数据交叉或能忍受少量数据交叉带来的性能问题
6-搜索社交类应用 数据间关系较为单一或简单
7-媒体类应用 跨国家区域业务海量数据
Oracle Sharding -应用场景
19
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding 案例分析ndash LinkedIn
bull 应用系统
bull 采用Oracle数据库通过自研发的应用分片技术实现面向客户类应用的横向扩展
bull 面临的挑战和关键业务驱动
bull 数据重分布和新表添加时需人工重新配置影响应用
bull 无跨分片查询和组合分片的能力
bull Oracle Sharding 如何解决 LinkedIn的需求 bull 在线添加shard并自动重分布数据不影响应用
bull 结构简洁
bull 组合分片和跨分片查询
bull 高效的资产重用备份库
20
LinkedIn(领英)是全球最大的职业社交网站目前用户人数超过 4 亿覆盖全球 200 多个国家 LinkedIn为企业和机构提供包括招聘市场和销售在内的一系列解决方案 主要收入来自于为客户所提供的征才营销解决方案及高级帐户
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
LinkedIn-自研发的Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
SHARD1 SHARD2 SHARD3 SHARD4 SHARD5
ORACLE - DB01
ORACLE - DB03
ORACLE - DB02
helliphellip
1-2000000 2 MM ndash 4 MM 4 MM ndash 6MM 6 MM ndash 8MM 8 MM ndash 10MM
hellip
txMgr txMgr txMgr txMgr txMgr
APPLICATIONs
ShardLocator shardconfig
presented by LinkedIn at OOW 2015
使用单实例Oracle数据库
自主开发的分片架构实现水平扩展和故障隔离
应用自定义路由选择和跨shard数据库的交易查询
21
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
LinkedIn - 使用Oracle 12c Sharding Architecture
copy2015 LinkedIn Corporation All Rights Reserved
hellip hellip
Shard Group 1 - Rep factor - 1
Data Guard Standby
hellip
Shard Group 2 - Rep factor - 1
Shard Group 3 - Rep factor - 1
A
P P
A
P
P
A
P P
hellip
hellip
Oracle sharding架构替换了自主开发的分片架构
支持组合分片按客户号和地域分区
支持跨分片join查询不影响分片性能
在线添加shard并自动重分布数据不需要应用停机快速响应负载量的变化
简化了应用开发
运维简单自动部署和滚动升级
利用Data Guard实现shard数据的容灾备份和故障隔离
22
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
bull 针对应用分布式改造的基础设施设计方案
bull 综合考虑两地三中心自动化运维监控云平台资源供给
bull 前期更多在应用重构拆分业务功能域的拆分+数据拆分
bull 16年已上线运行
bull Oracle sharding改造中优势
ndash利用Oracle sharding自动配置部署
ndash对于分片目录路由复制表有开箱即用的支持
ndash通过一致性哈希避免新分片添加后大量数据的移动
ndash ADG复制技术替换应用级双写同步
某大行综合积分系统-分布式改造 2016年8月加入Oralce Sharding 122 Beta Program
23
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
某大行综合积分系统-分布式改造 -客户请求路由
application
2
客户终端
application
1
application
3
路由管理 application
转发 请求
全局路由 信息缓存
全局路由 信息数据库
24
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
Oracle Sharding vs 开源 Sharding
Oracle Sharding 开源Sharding
工作内容 工作量 工作内容 工作量
项目设计阶段 分库分表设计 路由配置 数据库主从备份配置
周级别 分库分表设计 数据库中间件路由配置 数据库主从备份设计
月级别
项目开发阶段
类似单机数据库事务由底层Oracle数据库提供支持透明分布式事务
0 事务处理机制 ndash 由应用保证 跨库跨表查询-由应用保证
月级别
扩容缩容维护
人工方式 简单命令行按需增加或删除服务器 自动方式通过API接口自动增加或删除shard服务器
人工方式 分钟级 自动方式 0
制作分库数据镜像 暂停业务 检验所有数据和原有数据的一致性 切换路由配置 上线后测试验证
开始业务(如遇到问题都需要进行相应的重试或会滚方案)
周级别月级别
TiDB
25
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
性能对比Sharding architecture vs Exadata
2016年双11支付峰值 12万笔秒
Exadata X5-2 EF 满配 直销银行存取款 gt12万笔秒
26
OceanBase 非商业数据库支持蚂蚁金服双11支付峰值
0
500000
1000000
1500000
2000000
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
IOs
Storage IOPS
0
10000
20000
30000
40000
50000
60000
70000
15
10
00
15
10
30
15
11
00
15
11
30
15
12
00
15
12
30
15
13
00
15
13
30
15
14
00
15
14
30
15
15
00
15
15
30
15
16
00
15
16
30
15
17
00
15
17
30
15
18
00
15
18
30
15
19
00
15
19
30
15
20
00
15
20
30
15
21
00
IOs
Storage IOPS (左图放大)
WriteTot-Flash
ReadTot-Flash
WriteTot-Disk
ReadTot-Disk
上限
0
10
20
30
40
50
60
70
80
90
100
15
10
00
15
10
40
15
11
20
15
12
00
15
12
40
15
13
20
15
14
00
15
14
40
15
15
20
15
16
00
15
16
40
15
17
20
15
18
00
15
18
40
15
19
20
15
20
00
15
20
40
C
PU
2 DB服务器CPU
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27
甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介
27