|
第8章 OceanBase架构初探* ?6 D8 i( _+ D( O5 e
OceanBase是阿里集团研发的可扩展的关系数据库,实现了数千亿条记录、数百$ K2 e+ L2 V: t
TB数据上的跨行跨表事务,截止到2012年8月,支持了收藏夹、直通车报表、天猫评% x9 b% M: |+ R" S" _
价等OLTP和OLAP在线业务,线上数据量已经超过一千亿条。1 u* H5 q! ?0 v8 ?; G4 M
从模块划分的角度看,OceanBase可以划分为四个模块:主控服务器" [( h8 B/ {3 \) u. P4 X
RootServer、更新服务器UpdateServer、基线数据服务器ChunkServer以及合并服务器" c' d& G9 ], T4 R& I' l
MergeServer。OceanBase系统内部按照时间线将数据划分为基线数据和增量数据,基
, _' w+ m, n1 I3 l- M线数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增; f" i0 {4 u) c9 S5 }; f
量数据融合到基线数据中。本章介绍OceanBase系统的设计思路和整体架构。, B* ]/ A3 p* }1 C
8.1 背景简介
! G6 \& y/ t, c1 c# \淘宝是一个迅速发展的网站。全球网站排名公司Alexa提供的数据显示,2010年/ g" A* q; h) Z9 j3 S' x, w0 _
4月27日,Amazon、EBay的用户占全球互联网用户的百分比分别为3.47%和2.68%,
9 d: H2 U( L; r2 i3 R' A# E1 q而淘宝的用户占全球互联网用户的百分比则达到了4.1%,淘宝网日独立访问量从此9 W! k) o* x5 f; F, k' V3 o
超过了Amazon和EBay。
2 ^, p. ]2 ?- t H) i淘宝的数据规模及其访问量对关系数据库提出了很大挑战:数百亿条的记录、; v0 b2 g$ I9 h- v
数十TB的数据、数万TPS、数十万QPS让传统的关系数据库不堪重负,单纯的硬件升
! h( h4 i( T: ?' S$ K级已经无法使问题得到解决,分库分表也并不总是凑效。下面来看一个实际的例
! K4 w7 n P$ B! z/ W子。/ d m4 p/ A% y% {
淘宝收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝(即- T5 l2 B G7 q* p8 |% V# e
商品,此外用户也可以收藏感兴趣的店铺)以便下次快速访问、对比和购买等,用
% b2 q, b, [: s* B户可以展示和编辑(添加/删除)自己的收藏。
# g# t7 L% h% Y6 @: }1 X3 G5 N淘宝收藏夹数据库包含了收藏info表(一条一条的收藏信息)和收藏item表(被
4 y9 A6 ]( F) K) F3 v/ P. G收藏的宝贝和店铺)等:/ M7 q' f* W% |% w: Z6 j. `) S3 e. m
●收藏info表保存收藏信息条目,数百亿条。
% [ w O# }& [) V4 r8 m●收藏item表保存收藏的宝贝和店铺的详细信息,数十亿条。: v5 R! c, ?8 |" D( `
●热门宝贝可能被多达数十万买家收藏。. K9 B4 X4 X, g2 A0 U) L. B$ Q6 M
●每个用户可以收藏千个宝贝。
, i; {; a% {( S" T●宝贝的价格、收藏人气等信息随时变化。5 S& i1 ^4 f9 ^+ R
如果用户选择按宝贝价格排序后展示,那么数据库需要从收藏item表中读取收藏
0 c4 j2 P. m4 g- @4 @的宝贝的价格等最新信息,然后进行排序处理。如果用户的收藏条目比较多(例如
# A/ b1 n8 v2 s+ \5 K0 _( ]4000条),那么查询对应的item的时间会较长:假设如果平均每条item查询时间是) R& J( g; }- z Y& e. k
5ms,则4000条的查询时间可能达到20s,如果真如此,则用户体验会很差。: w z9 F# X) l. U6 g- w' B
如果把收藏的宝贝的详细信息实时冗余到收藏info表,则上述查询收藏item表的# I" { X& z8 Y* m
操作就不再需要了。但是,由于许多热门商品可能有几千到几十万人收藏,这些热6 _0 Q* T* c2 s7 x
门商品的价格等信息的变动可能导致收藏info表的大量修改,并压垮数据库。4 u- ^! A8 V p# n/ t8 U1 E' O0 g: l+ U
为此,阿里巴巴需要研发适合互联网规模的分布式数据库,这个数据库不仅要
R* |. D2 c# t) N/ B+ o5 [能解决收藏夹面临的业务挑战,还要能做到可扩展、低成本、易用,并能够应用到
1 z- S3 z, ]: L9 R更多的业务场景。为此,淘宝研发了千亿级海量数据库OceanBase,并且已经于2011: i2 J! o+ W( g3 A" Q) V0 V
年8月底开源(http://oceanbase.taobao.org/)。虽然距离OceanBase开源已经超过一年4 r8 _- P% r/ c0 n
多的时间,但OceanBase系统还有很多的问题,其中以易用性和可运维性最为严重。+ K3 s9 |( R' r2 {$ x2 l
OceanBase团队一直在不断完善着系统,同时,我们也很乐意把设计开发过程中的一
0 ^% S# l. F' i& [; Z些经验分享出来。
' r2 M; E9 `2 i# ~( M C) j
; }. A1 Z w/ q1 [9 d9 g0 P6 i2 ?9 B
|
|