SlideShare una empresa de Scribd logo
1 de 38
苏真
2013.4
1
阿里自研数据库Oceanase实践
课程大纲
 Why OceanBase
 系统架构
 数据模型
 如何使用
2
WHY OCEANBASE
了解OceanBase的特点
• 恋爱通常是从了解开始的,想用好OceanBase,得先了解它。
• OceanBase设计目标:
 关系型数据库、结构化数据
 分布式、扩展性
 千亿级数据量
 跨行跨表事务
 支持SQL、兼容MYSQL协议
Why OceanBase
• 传统数据库(mysql&oracle),功能完善,唯一缺点
是数据库本身不可扩展,业务高速增长时需要不
断折库折表、需要TDDL等中间层支持
 OceanBase  RDBMS + Scalability
= 关系数据库:ACID & SQL
> 持续可用 + 水平扩展 + 低成本 + 高性能
< 功能&性能
数据库进化的时代到了
• mysql和oracle为代表的传统数据库
• Nosql很热:hbase,cassandra,mongodb等
遍地开发
• 大数据时代,数据库变革时期正在到来,
谁将占据主流?
现有存储方案对照
7
数
据
规
模
事务与数据一致性
万亿记录
(十PB)
千亿记录
(百TB)
千万记录
(百GB)
十亿记录
(TB)
最终一致 单行事务 跨行跨表事务
RDBMS
Cassandra
HBase
Megastore
OceanBase
Dynamo
Bigtable
不同数据库的对比
数据库类型 代表 特点
关系型数据库 mysql,oracle 支持事务、数据一致性好、功能强大,
成熟稳定。但扩展性不足
自主开发 OceanBase 支持事务、SQL。功能上接近关系型数
据库,兼顾扩展性
NoSQL类型 Cassandra、
Hbase
可扩展性好,功能单一;一般不支持
事务、不支持表关联查询、数据一致
性较弱、有些还没有范围查询
数据库选型
• 关于开源数据库OceanBase( http://oceanbase.taobao.org/ )的应用场景:
如果你不需要事务(transaction),MongoDB等是不错的选择;
如果你的数据量很大,HBase也是不错的选择;
如果你需要事务(transaction),并且数据量不大,或者你可以接受分库(sharding)
后的事务,关系数据库(例如MySQL)是不错的选择;
如果你需要事务(transaction),并且数据量比较大(例如1TB~几百TB),或者虽然目
前数据量不大,但数据增长很快,你希望免除分库分表的麻烦,那么欢迎你选择
OceanBase
参考如标题的等式:OceanBase = transactionality + scalability
9
10
系统架构
11
OceanBase设计思路
 数据存储:多机磁盘
 修改增量:单机内存
Data 基线数据
(磁盘)
修改增量
(内存)
Query 数据增删改
物理架构
12
App(Client)
ChunkServer/
MergeServer
ChunkServer/
MergeServer
ChunkServer/
MergeServer
ChunkServer/
MergeServer
RootServer/
UpdateServer
(primary)
RootServer/
UpdateServer
(secondary)
RootServer/
UpdateServer
(read secondary)
meta data
increment data
base data
data merge
13
每日合并:修改增量
 很多数据库每天有明显的访
问低谷(e.g.,2:00am-5:00am)
Data 基线数据 修改增量
新的修
改增量
读写事务
照常进行
14
OceanBase系统架构
 使用MySQL客户端,兼容MySQL应用
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
修改增量
应用接口
基线数据
SQL SQL SQL SQL SQL SQL SQL SQL
Root
Server
配置管理
15
OceanBase读写事务
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
修改增量
应用接口
基线数据
SQL SQL SQL SQL SQL SQL SQL SQL
 写事务(UpdateServer):Redo log + 主备同步
Root
Server
配置管理
16
每日合并期间的query
 使用新或旧基线数据,查询结果一样
Data 基线数据 修改增量
新的修
改增量
Query 旧基线 旧增量 新增量
Query 新基线 新增量
水平扩展-CS/MS
 新增服务器:数据自动迁移且对应用透明
 应用不再需要分库分表
 应用不再需要耗费时间配合数据库进行扩容
3
3
3
4
4
4
5
5
5
6
6
6
7
77
8
8
8
0
0
0
2
2 2
1
1
1
服务器
水平扩展-UPS
 备UPS线性扩展
Root
Server
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
修改增量
应用接口
基线数据
Root
ServerHA
Update
Server
Update
Server
Update
Server
Update
Server
Root
Server
配置管理
跨机房容灾
 在二个机房部署主备二个群集,群集之间通过
updateserver的commitlog实现自动同步
Root
Server
Root
Server
持续可用:RS/UPS
 RS/UPS异常,数据不丢,
服务不停
Root
Server
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
修改增量
应用接口
基线数据
Root
ServerHA
Update
Server
Update
Server
Update
Server
Update
Server
Root
Server
配置管理
持续可用:CS
 CS异常,数据不丢,服务不停
3
3
3
4
4
4
5
5
5
6
6
6
7
77
8
8
8
0
0
0
2
2 2
1
1
1
基线数据
服务器(CS)
持续可用:MS
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
Root
Server
 MS异常,数据不丢,服务不停
持续可用-跨数据中心
 IDC异常,数据不丢,服务不停
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
SQ
L
Root
Server
Root
Server
持续可用-数据校验
 磁盘读写:每条记录带64位checksum
 网络传输:每个网络包带64位checksum
 每个文件多副本(3~6):每个文件都有64位checksum
 修改增量多副本(2~N):每个UPS内存数据都有64位checksum
 Redo log:每条都带checksum及对应于UPS内存的checksum
持续可用-小结
 假设:硬件、软件、人随时可能故障或犯错
 OceanBase目标:用不可靠的硬件和软件提供稳定、持续可用的服务
 年可用率99.999+%(计划内停机属于不可用)
 措施
 配置服务(RS):HA
 更新增量服务(UPS):实时热备
 基线数据服务(CS):数据多副本
 应用接口(MS):多实例
 跨机房数据同步
 数据正确性:记录/网络包、文件和内存checksum
26
数据模型
数据模型
TABLE
sstable
sstable
sstable
chunkserver1
chunkserver2
chunkserver3
chunkserver4
chunkserver5
chunkserver6
sstable
sstable
sstable
数据模型
Primary Key field1 field2 field3 … fieldn
Primary Key:
用于定位记录的唯一标识, 不可以重复
数据物理存储按Primary Key排序
Field(字段):
类型:int,double, varchar, datetime,timestamp, create_time,
modify_time.
表,记录,字段,数据类型。数据模型与传统RDBMS一样
记录构成:
基准数据和增量数据
 Oceanbase数据结构
 增量数据:单机B+树
 基准数据:分布式B+树
 新的基准数据 = 老的基准数据 + 增量数据
29
基线数据
(Chunkserver)
增量数据
(Updateserver)
数据分布
30
Updateserver
Chunkserver 4Chunkserver 3Chunkserver 2Chunkserver 1
Rootserver
数据分片
(元数据)
增量数据
(B+树)
31
如何使用
完全兼容mysql客户端
32
实例
33
Create table t1(
c1 int,
c2 int,
c3 varchar(20),
c4 datatime,
c5 int,
c6 createtime,
primary key (c1,c2,c3)
)
C1+C2+C3组成主键,C4,C5,C6为普通字段
C1 C2 C3 C4 C5 C6
实例
34
C1+C2+C3组成主键,C4,C5,C6为普通字段
OK
Select * from t1 where c1=x and c2 =x and c3=‘xxxx’;
Select * from t1 where c1=x and c2=x;
Select * from t1 where c1=x;
Select * from t1 where c1=x and c2=x and c4=x;
Select * from t1 where c1=x and c6=x;
Select sum(c5) where c1=x;
C1 C2 C3 C4 C5 C6
实例
35
C1+C2+C3组成主键,C4,C5,C6为普通字段
NOT OK
Select * from t1 where c2=x and c3 =‘xxxx’;
Select * from t1 where c3=‘xxxx’;
Select * from t1 where c2=x;
Select * from t1 where c5=x ;
更多OceanBase SQL手册参见:
http://oceanbase.alibaba-inc.com/wiki/index.php?title=SQL_User_manual
C1 C2 C3 C4 C5 C6
 Select,update,replace,delete,insert
 where 条件过滤(and, or)
 like
 group by
 having
 order by
 limit,offset
 reverse scan
 aggregate(count,sum,average)
支持的SQL操作
OceanBase应用接口
 应用接口:MySQL兼容 (JDBC/ODBC)
APP
OceanBase
OBSQL客户端库
MySQL
客户端库
PRELOAD
38
感谢聆听
HTTPS://GITHUB.COM/ALIBABA/OCEANBASE

Más contenido relacionado

La actualidad más candente

MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例
郁萍 王
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構
郁萍 王
 

La actualidad más candente (20)

分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
我们的MySQL
我们的MySQL我们的MySQL
我们的MySQL
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 
自助工具助Dba提升效率
自助工具助Dba提升效率自助工具助Dba提升效率
自助工具助Dba提升效率
 
高效Linux SA
高效Linux SA高效Linux SA
高效Linux SA
 
阿里开源经验分享
阿里开源经验分享阿里开源经验分享
阿里开源经验分享
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例
 
MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
MySQL 網路參考架構
MySQL 網路參考架構MySQL 網路參考架構
MySQL 網路參考架構
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化
 

Destacado

HBase Consistency and Performance Improvements
HBase Consistency and Performance ImprovementsHBase Consistency and Performance Improvements
HBase Consistency and Performance Improvements
DataWorks Summit
 
Rookie coach brochure
Rookie coach brochureRookie coach brochure
Rookie coach brochure
jrice81
 

Destacado (20)

Cassandra 2.1 簡介
Cassandra 2.1 簡介Cassandra 2.1 簡介
Cassandra 2.1 簡介
 
程序猿都该知道的MySQL秘籍
程序猿都该知道的MySQL秘籍程序猿都该知道的MySQL秘籍
程序猿都该知道的MySQL秘籍
 
Sf NoSQL MeetUp: Apache Hadoop and HBase
Sf NoSQL MeetUp: Apache Hadoop and HBaseSf NoSQL MeetUp: Apache Hadoop and HBase
Sf NoSQL MeetUp: Apache Hadoop and HBase
 
HBase Consistency and Performance Improvements
HBase Consistency and Performance ImprovementsHBase Consistency and Performance Improvements
HBase Consistency and Performance Improvements
 
Apache HBase 0.98
Apache HBase 0.98Apache HBase 0.98
Apache HBase 0.98
 
Cassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + DynamoCassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + Dynamo
 
Hadoop Summit 2012 | HBase Consistency and Performance Improvements
Hadoop Summit 2012 | HBase Consistency and Performance ImprovementsHadoop Summit 2012 | HBase Consistency and Performance Improvements
Hadoop Summit 2012 | HBase Consistency and Performance Improvements
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
 
Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2Running Cassandra on Amazon EC2
Running Cassandra on Amazon EC2
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Running Cassandra in AWS
Running Cassandra in AWSRunning Cassandra in AWS
Running Cassandra in AWS
 
Lightning Hedis
Lightning HedisLightning Hedis
Lightning Hedis
 
Facebook Messages & HBase
Facebook Messages & HBaseFacebook Messages & HBase
Facebook Messages & HBase
 
ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務
 
Rookie coach brochure
Rookie coach brochureRookie coach brochure
Rookie coach brochure
 
Increase your verticle
Increase your verticleIncrease your verticle
Increase your verticle
 
医师如何 提高人类的效力 &延缓衰老过程 通过 人体弹簧力学
医师如何 提高人类的效力 &延缓衰老过程 通过 人体弹簧力学 医师如何 提高人类的效力 &延缓衰老过程 通过 人体弹簧力学
医师如何 提高人类的效力 &延缓衰老过程 通过 人体弹簧力学
 
How To Avoid Basketball Injuries
How To Avoid Basketball InjuriesHow To Avoid Basketball Injuries
How To Avoid Basketball Injuries
 
Boys Lacrosse Practice Plans
Boys Lacrosse Practice PlansBoys Lacrosse Practice Plans
Boys Lacrosse Practice Plans
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 

Similar a 阿里自研数据库 Ocean base实践

No sql数据库杂谈—理论篇
No sql数据库杂谈—理论篇No sql数据库杂谈—理论篇
No sql数据库杂谈—理论篇
Tony Deng
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
hdhappy001
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
 

Similar a 阿里自研数据库 Ocean base实践 (20)

No sql带来了什么 孙立
No sql带来了什么   孙立No sql带来了什么   孙立
No sql带来了什么 孙立
 
No sql数据库杂谈—理论篇
No sql数据库杂谈—理论篇No sql数据库杂谈—理论篇
No sql数据库杂谈—理论篇
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案
 
Sequoia db 技术概述_sacc
Sequoia db 技术概述_saccSequoia db 技术概述_sacc
Sequoia db 技术概述_sacc
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
No sql
No sqlNo sql
No sql
 
数据库高可用架构
数据库高可用架构数据库高可用架构
数据库高可用架构
 
Stand out your presentation - 让演讲PPT脱颖而出
Stand out your presentation - 让演讲PPT脱颖而出Stand out your presentation - 让演讲PPT脱颖而出
Stand out your presentation - 让演讲PPT脱颖而出
 
Databases on AWS
Databases on AWSDatabases on AWS
Databases on AWS
 
大數據
大數據大數據
大數據
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
現代資料庫
現代資料庫現代資料庫
現代資料庫
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林
 
No sql应用场景及cassandra架构分析
No sql应用场景及cassandra架构分析No sql应用场景及cassandra架构分析
No sql应用场景及cassandra架构分析
 
Raising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi LuRaising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi Lu
 

阿里自研数据库 Ocean base实践

Notas del editor

  1. http://baike.baidu.com/view/2677528.htm
  2. Table按主键范围分成多个Tablet 每个Tablet记录主键的起始范围 Tablet分布到不同的CS上,并存放多份 Tablet按主键顺序排序