|
第8章 OceanBase架构初探
& p3 p; E7 k& Y5 GOceanBase是阿里集团研发的可扩展的关系数据库,实现了数千亿条记录、数百, ~6 K9 m! k* o' i
TB数据上的跨行跨表事务,截止到2012年8月,支持了收藏夹、直通车报表、天猫评: i: b G& A& c: J9 C
价等OLTP和OLAP在线业务,线上数据量已经超过一千亿条。
& i+ w' `8 R& b5 y2 y% z2 X. a/ j( Q从模块划分的角度看,OceanBase可以划分为四个模块:主控服务器
* K4 \# l' S2 F3 l2 H" P/ D) PRootServer、更新服务器UpdateServer、基线数据服务器ChunkServer以及合并服务器% X8 \+ p$ w* e% m
MergeServer。OceanBase系统内部按照时间线将数据划分为基线数据和增量数据,基6 f$ q* V' o2 I- f* ~
线数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增( _- Y5 \' e) t3 S1 I! o& P, H4 s
量数据融合到基线数据中。本章介绍OceanBase系统的设计思路和整体架构。" z& [. W* ?' H* s6 V7 b7 v
8.1 背景简介
5 c S- j: D( r- |淘宝是一个迅速发展的网站。全球网站排名公司Alexa提供的数据显示,2010年5 m% u [# C% f/ ^1 H7 b
4月27日,Amazon、EBay的用户占全球互联网用户的百分比分别为3.47%和2.68%,3 J7 p7 p1 Z1 _
而淘宝的用户占全球互联网用户的百分比则达到了4.1%,淘宝网日独立访问量从此
& m, E8 w8 ^$ Y. ^& O超过了Amazon和EBay。; Q9 `- ~" ` @6 z# l" `) `
淘宝的数据规模及其访问量对关系数据库提出了很大挑战:数百亿条的记录、
9 ]( K9 B2 _; R% R2 v0 T9 U数十TB的数据、数万TPS、数十万QPS让传统的关系数据库不堪重负,单纯的硬件升) g. Q3 |8 x. @8 t) b( b, U5 ?
级已经无法使问题得到解决,分库分表也并不总是凑效。下面来看一个实际的例! Y2 H) D! m1 e" D7 k" D8 c# h
子。
/ B# S+ {: _; v/ c- M3 Z6 v" u淘宝收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝(即0 D) M. V1 G. k1 m
商品,此外用户也可以收藏感兴趣的店铺)以便下次快速访问、对比和购买等,用
# Z' D; Q6 p1 B. z( ~户可以展示和编辑(添加/删除)自己的收藏。
5 M* ^2 R2 m, o8 M( V1 T淘宝收藏夹数据库包含了收藏info表(一条一条的收藏信息)和收藏item表(被. Q# l. R7 p. Q; v! J
收藏的宝贝和店铺)等:( b# U4 C5 {1 H6 D7 l V
●收藏info表保存收藏信息条目,数百亿条。& P6 L y9 v& K; ]/ s
●收藏item表保存收藏的宝贝和店铺的详细信息,数十亿条。. R8 g: ?) [4 g
●热门宝贝可能被多达数十万买家收藏。
1 l4 p% E, T/ p& b●每个用户可以收藏千个宝贝。3 Y1 f7 U( O8 z! [% |4 ?
●宝贝的价格、收藏人气等信息随时变化。
! l* D9 I4 F' ]( a) V8 Q" t如果用户选择按宝贝价格排序后展示,那么数据库需要从收藏item表中读取收藏! b5 Y( U5 S% d
的宝贝的价格等最新信息,然后进行排序处理。如果用户的收藏条目比较多(例如$ T" @' I6 e; K( [4 U5 Z7 W
4000条),那么查询对应的item的时间会较长:假设如果平均每条item查询时间是
0 C2 P( s: {" n( ?5ms,则4000条的查询时间可能达到20s,如果真如此,则用户体验会很差。2 z- j1 C/ ?3 g% R0 ]: {
如果把收藏的宝贝的详细信息实时冗余到收藏info表,则上述查询收藏item表的" v. j3 Z* J9 v9 W; q, ^
操作就不再需要了。但是,由于许多热门商品可能有几千到几十万人收藏,这些热
- D1 V/ f: @! H4 ?门商品的价格等信息的变动可能导致收藏info表的大量修改,并压垮数据库。
: A! C0 H" }5 ]) q& i: T为此,阿里巴巴需要研发适合互联网规模的分布式数据库,这个数据库不仅要
/ q" N3 p9 B' ~2 T2 u- o! p能解决收藏夹面临的业务挑战,还要能做到可扩展、低成本、易用,并能够应用到) ]' g1 G! \3 J- x& z3 U" L4 p: ^
更多的业务场景。为此,淘宝研发了千亿级海量数据库OceanBase,并且已经于2011
' @# C7 C$ \. @4 |' V# J. t年8月底开源(http://oceanbase.taobao.org/)。虽然距离OceanBase开源已经超过一年7 E5 }3 j$ N ]: y$ W$ \% I" Q
多的时间,但OceanBase系统还有很多的问题,其中以易用性和可运维性最为严重。. H$ z6 C7 h: k6 n7 I9 w/ J3 l
OceanBase团队一直在不断完善着系统,同时,我们也很乐意把设计开发过程中的一
% a' z" Y' w$ ?些经验分享出来。. _2 b8 u5 z% c2 A$ R; M* I
4 |+ c; D5 Q/ G9 p3 a/ a, ~8 h5 M% t, @; e, n
|
|