苏真
2013.4
1
阿里自研数据库Oceanase实践
课程大纲
 Why OceanBase
 系统架构
 数据模型
 如何使用
2
WHY OCEANBASE
了解OceanBase的特点
• 恋爱通常是从了解开始的,想用好OceanBase,得先了解它。
• OceanBase设计目标:
 关系型数据库、结构化数据
 分布式、扩展性
 千亿级数据量
 跨行跨表事务
 支持SQL、兼容MYS...
Why OceanBase
• 传统数据库(mysql&oracle),功能完善,唯一缺点
是数据库本身不可扩展,业务高速增长时需要不
断折库折表、需要TDDL等中间层支持
 OceanBase  RDBMS + Scalability
=...
数据库进化的时代到了
• mysql和oracle为代表的传统数据库
• Nosql很热:hbase,cassandra,mongodb等
遍地开发
• 大数据时代,数据库变革时期正在到来,
谁将占据主流?
现有存储方案对照
7
数
据
规
模
事务与数据一致性
万亿记录
(十PB)
千亿记录
(百TB)
千万记录
(百GB)
十亿记录
(TB)
最终一致 单行事务 跨行跨表事务
RDBMS
Cassandra
HBase
Megastore
Oc...
不同数据库的对比
数据库类型 代表 特点
关系型数据库 mysql,oracle 支持事务、数据一致性好、功能强大,
成熟稳定。但扩展性不足
自主开发 OceanBase 支持事务、SQL。功能上接近关系型数
据库,兼顾扩展性
NoSQL类型 ...
数据库选型
• 关于开源数据库OceanBase( http://oceanbase.taobao.org/ )的应用场景:
如果你不需要事务(transaction),MongoDB等是不错的选择;
如果你的数据量很大,HBase也是不错的选...
10
系统架构
11
OceanBase设计思路
 数据存储:多机磁盘
 修改增量:单机内存
Data 基线数据
(磁盘)
修改增量
(内存)
Query 数据增删改
物理架构
12
App(Client)
ChunkServer/
MergeServer
ChunkServer/
MergeServer
ChunkServer/
MergeServer
ChunkServer/
MergeServer
Ro...
13
每日合并:修改增量
 很多数据库每天有明显的访
问低谷(e.g.,2:00am-5:00am)
Data 基线数据 修改增量
新的修
改增量
读写事务
照常进行
14
OceanBase系统架构
 使用MySQL客户端,兼容MySQL应用
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkSer...
15
OceanBase读写事务
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
ChunkSe...
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
Merg...
跨机房容灾
 在二个机房部署主备二个群集,群集之间通过
updateserver的commitlog实现自动同步
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
Me...
持续可用:RS/UPS
 RS/UPS异常,数据不丢,
服务不停
Root
Server
Update
Server
MergeServer
ChunkServer
MergeServer
ChunkServer
MergeServer
Ch...
持续可用: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
Merg...
持续可用-跨数据中心
 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位c...
持续可用-小结
 假设:硬件、软件、人随时可能故障或犯错
 OceanBase目标:用不可靠的硬件和软件提供稳定、持续可用的服务
 年可用率99.999+%(计划内停机属于不可用)
 措施
 配置服务(RS):HA
 更新增量服务(...
26
数据模型
数据模型
TABLE
sstable
sstable
sstable
chunkserver1
chunkserver2
chunkserver3
chunkserver4
chunkserver5
chunkserver6
sstable
s...
数据模型
Primary Key field1 field2 field3 … fieldn
Primary Key:
用于定位记录的唯一标识, 不可以重复
数据物理存储按Primary Key排序
Field(字段):
类型:int,doub...
基准数据和增量数据
 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+...
实例
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 c...
实例
35
C1+C2+C3组成主键,C4,C5,C6为普通字段
NOT OK
Select * from t1 where c2=x and c3 =‘xxxx’;
Select * from t1 where c3=‘xxxx’;
Sele...
 Select,update,replace,delete,insert
 where 条件过滤(and, or)
 like
 group by
 having
 order by
 limit,offset
 reverse...
OceanBase应用接口
 应用接口:MySQL兼容 (JDBC/ODBC)
APP
OceanBase
OBSQL客户端库
MySQL
客户端库
PRELOAD
38
感谢聆听
HTTPS://GITHUB.COM/ALIBABA/OCEANBASE
Upcoming SlideShare
Loading in …5
×

阿里自研数据库 Ocean base实践

1,518 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,518
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

阿里自研数据库 Ocean base实践

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

×