|
第8章 OceanBase架构初探
/ P% b6 g6 _! a. Q6 }- aOceanBase是阿里集团研发的可扩展的关系数据库,实现了数千亿条记录、数百+ s w& X3 y) ~2 Q4 o) \( U
TB数据上的跨行跨表事务,截止到2012年8月,支持了收藏夹、直通车报表、天猫评4 A- |7 u( t3 ]) d
价等OLTP和OLAP在线业务,线上数据量已经超过一千亿条。
! \7 z! [, C, `( l9 B从模块划分的角度看,OceanBase可以划分为四个模块:主控服务器
& D) _; A6 g- @9 l$ p, oRootServer、更新服务器UpdateServer、基线数据服务器ChunkServer以及合并服务器% Q& k0 j# c8 k' v
MergeServer。OceanBase系统内部按照时间线将数据划分为基线数据和增量数据,基
4 e) m# i6 p: b, k( J6 q线数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增9 c/ ~* I F, k: M
量数据融合到基线数据中。本章介绍OceanBase系统的设计思路和整体架构。) ?4 K' `7 R6 v2 m- _/ `
8.1 背景简介3 J' O! `+ w5 |" s+ v' R4 B
淘宝是一个迅速发展的网站。全球网站排名公司Alexa提供的数据显示,2010年, a8 R$ ?. t3 o2 O& c3 b
4月27日,Amazon、EBay的用户占全球互联网用户的百分比分别为3.47%和2.68%,
8 j& c: K0 a- @; O2 C而淘宝的用户占全球互联网用户的百分比则达到了4.1%,淘宝网日独立访问量从此
( J2 i4 l- L9 m! E* m超过了Amazon和EBay。" R7 z! P+ O- c( w4 s
淘宝的数据规模及其访问量对关系数据库提出了很大挑战:数百亿条的记录、
! G0 h- D4 A. j数十TB的数据、数万TPS、数十万QPS让传统的关系数据库不堪重负,单纯的硬件升
4 M* y% n+ Z' L% R9 }: n级已经无法使问题得到解决,分库分表也并不总是凑效。下面来看一个实际的例 e3 L8 i3 X1 C: f
子。
5 j5 D x: ~8 N) t2 Z2 N1 }, {淘宝收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝(即5 b. V) x& n; Z9 F+ H5 f6 n$ Z
商品,此外用户也可以收藏感兴趣的店铺)以便下次快速访问、对比和购买等,用
1 ^) E! Y% ^+ H0 U4 Q户可以展示和编辑(添加/删除)自己的收藏。
4 P' v% I2 r+ K淘宝收藏夹数据库包含了收藏info表(一条一条的收藏信息)和收藏item表(被
6 r% x) H* P) P( Z) {4 M收藏的宝贝和店铺)等:
1 [( `5 g: v: G4 J: X7 O/ B●收藏info表保存收藏信息条目,数百亿条。
! T7 ~* L' D8 M* K●收藏item表保存收藏的宝贝和店铺的详细信息,数十亿条。( t6 x5 P$ x2 ], j" D7 J
●热门宝贝可能被多达数十万买家收藏。7 `9 ?. ~& ?% e! R
●每个用户可以收藏千个宝贝。
. `9 W* s' Y3 N9 u5 A ^●宝贝的价格、收藏人气等信息随时变化。
* K { M2 \* C9 F! W$ f8 k7 R如果用户选择按宝贝价格排序后展示,那么数据库需要从收藏item表中读取收藏
q( T D* s: n6 X" O8 z* A的宝贝的价格等最新信息,然后进行排序处理。如果用户的收藏条目比较多(例如& X+ o4 P# i* D8 b+ c2 r$ a
4000条),那么查询对应的item的时间会较长:假设如果平均每条item查询时间是
- q( b; h9 N, u5 e- L, m5ms,则4000条的查询时间可能达到20s,如果真如此,则用户体验会很差。/ O# O5 Q Y7 H u! H7 H& Z
如果把收藏的宝贝的详细信息实时冗余到收藏info表,则上述查询收藏item表的' x" X: d# v2 Z! e# F, ]" j6 A" o
操作就不再需要了。但是,由于许多热门商品可能有几千到几十万人收藏,这些热
; P) z( e3 K) N! {- I# r门商品的价格等信息的变动可能导致收藏info表的大量修改,并压垮数据库。
% i+ f% c7 L( z0 _5 `) a为此,阿里巴巴需要研发适合互联网规模的分布式数据库,这个数据库不仅要" @1 d& \9 ]/ h9 \( `, Q* q3 |1 h
能解决收藏夹面临的业务挑战,还要能做到可扩展、低成本、易用,并能够应用到
3 h$ A- p r; k! F1 W更多的业务场景。为此,淘宝研发了千亿级海量数据库OceanBase,并且已经于2011$ d$ \, o. S" o3 Y! N( X i
年8月底开源(http://oceanbase.taobao.org/)。虽然距离OceanBase开源已经超过一年
8 ?- p" g: ^( D, J多的时间,但OceanBase系统还有很多的问题,其中以易用性和可运维性最为严重。
m9 K0 b5 l7 |" f- IOceanBase团队一直在不断完善着系统,同时,我们也很乐意把设计开发过程中的一0 Z- w; G9 }$ E/ ^4 W
些经验分享出来。
3 T$ g6 b! g' v! M+ O, g/ [$ y& B6 b. N! Z) \( o: y) s
' _5 b; _6 F, w5 c1 H2 y4 ]+ A |
|