分布式数据库技术及应用探讨 - Oracle … ·...

28
分布式数据库技术及应用探讨 许向东 甲骨文公司金融行业技术产品总监 2017-04-07 Oracle 云助力保险 IT 创新峰会

Transcript of 分布式数据库技术及应用探讨 - Oracle … ·...

Page 1: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

分布式数据库技术及应用探讨

许向东 甲骨文公司金融行业技术产品总监 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

Page 2: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

内容提要

分布式数据库的起源及架构

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

Page 3: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

分布式数据库

定义利用计算机网络将物理上分散的多个数据库连接起来组成一个逻辑上统一的数据库为业务应用提供完整的联机事务处理

核心技术分布式存储+事务处理+查询操作

关系型-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

Page 4: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

互联网这些年 - 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

Page 5: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

互联网这些年 - 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

Page 6: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

分布式数据库两种架构

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

Page 7: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 8: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 9: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 10: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

内容提要

分布式数据库的起源及架构

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

Page 11: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

互联网这些年 - 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

Page 12: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 13: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 14: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 15: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 16: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 17: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 18: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

内容提要

分布式数据库的起源及架构

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

Page 19: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 20: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 21: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 22: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 23: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 24: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

某大行综合积分系统-分布式改造 -客户请求路由

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

Page 25: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

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

Page 26: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

性能对比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

Page 27: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard

甲骨文数据库技术 httpsblogsoraclecomDatabase4CNentry12c新特性_oracle_sharding简介

27

Page 28: 分布式数据库技术及应用探讨 - Oracle … · 实现了全球规模具有一致性和实时性的数据库 TiDB •分布式关系型数据库( NewSQL ) 以MySQL Shard