|
第8章 OceanBase架构初探; l. c7 \* ]2 A0 @5 Y, k
OceanBase是阿里集团研发的可扩展的关系数据库,实现了数千亿条记录、数百
+ f. \' ?: {8 w# o% s9 l/ MTB数据上的跨行跨表事务,截止到2012年8月,支持了收藏夹、直通车报表、天猫评
! W4 f3 r8 ]+ R0 n价等OLTP和OLAP在线业务,线上数据量已经超过一千亿条。
# ^6 Y6 A4 W' L# H- l, X4 \从模块划分的角度看,OceanBase可以划分为四个模块:主控服务器
9 ` N: o. X4 f# l; E! m9 H# QRootServer、更新服务器UpdateServer、基线数据服务器ChunkServer以及合并服务器+ _' H- m* j7 s
MergeServer。OceanBase系统内部按照时间线将数据划分为基线数据和增量数据,基
8 P2 i$ j8 P& `线数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增
7 e, a1 j) m; R1 U4 b1 W量数据融合到基线数据中。本章介绍OceanBase系统的设计思路和整体架构。
0 e% W9 I# O+ I" q. i" X5 s3 ^8.1 背景简介! Q2 R; q) {. W' W8 w+ @- O" D) A
淘宝是一个迅速发展的网站。全球网站排名公司Alexa提供的数据显示,2010年% f, b! X! d2 t3 C' ^8 B
4月27日,Amazon、EBay的用户占全球互联网用户的百分比分别为3.47%和2.68%,1 I3 Q, q( O8 N) ]
而淘宝的用户占全球互联网用户的百分比则达到了4.1%,淘宝网日独立访问量从此, h7 |1 Y7 K. @0 \7 z# P
超过了Amazon和EBay。
4 R: D' w, y, z. m) Z淘宝的数据规模及其访问量对关系数据库提出了很大挑战:数百亿条的记录、
* c3 \: e) {& t# ?- d数十TB的数据、数万TPS、数十万QPS让传统的关系数据库不堪重负,单纯的硬件升5 y% d# J9 `" \$ w
级已经无法使问题得到解决,分库分表也并不总是凑效。下面来看一个实际的例4 @. b9 q% U8 d: ^- f: Z' F) T' B, G
子。( _- _1 L8 {) E/ @9 k1 n/ j
淘宝收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝(即
2 h6 E, J& e( ?, B; D商品,此外用户也可以收藏感兴趣的店铺)以便下次快速访问、对比和购买等,用
1 V! i$ |* x9 t户可以展示和编辑(添加/删除)自己的收藏。
- @. \& g8 g0 _7 j淘宝收藏夹数据库包含了收藏info表(一条一条的收藏信息)和收藏item表(被
. x) |5 a0 |3 p% O+ y" d收藏的宝贝和店铺)等:
: l. m. D3 J" x( F●收藏info表保存收藏信息条目,数百亿条。
) S! U9 O, W' M9 q! ~●收藏item表保存收藏的宝贝和店铺的详细信息,数十亿条。% |1 `* M3 {( z! U' s, A# q
●热门宝贝可能被多达数十万买家收藏。, m* V! p- R3 s! ?
●每个用户可以收藏千个宝贝。
( A( X9 D0 s7 P5 \6 Q●宝贝的价格、收藏人气等信息随时变化。
4 x* M8 C& x6 j; a' F' d/ [如果用户选择按宝贝价格排序后展示,那么数据库需要从收藏item表中读取收藏$ M n( Z" ~2 G/ M* U+ D7 L
的宝贝的价格等最新信息,然后进行排序处理。如果用户的收藏条目比较多(例如 U' q) b! s/ a
4000条),那么查询对应的item的时间会较长:假设如果平均每条item查询时间是
2 P3 w1 }8 M$ y# n* C! H5ms,则4000条的查询时间可能达到20s,如果真如此,则用户体验会很差。
' L5 ~, u- U5 F; {, r9 }如果把收藏的宝贝的详细信息实时冗余到收藏info表,则上述查询收藏item表的/ L4 |# u: P3 ~7 l0 D& v
操作就不再需要了。但是,由于许多热门商品可能有几千到几十万人收藏,这些热
5 Q# p3 g$ [7 ?9 `$ ?% x门商品的价格等信息的变动可能导致收藏info表的大量修改,并压垮数据库。; T2 b7 u! h; Y! f9 V3 n
为此,阿里巴巴需要研发适合互联网规模的分布式数据库,这个数据库不仅要
. _! X* B/ U. G' w" O能解决收藏夹面临的业务挑战,还要能做到可扩展、低成本、易用,并能够应用到6 H8 i0 Q6 u6 K2 [4 B: h
更多的业务场景。为此,淘宝研发了千亿级海量数据库OceanBase,并且已经于2011- d, [/ f# |; m, {$ H( _0 C; f8 a$ ?
年8月底开源(http://oceanbase.taobao.org/)。虽然距离OceanBase开源已经超过一年 ?0 H0 v, ]4 z% ?
多的时间,但OceanBase系统还有很多的问题,其中以易用性和可运维性最为严重。
; q+ J. k8 T+ X9 pOceanBase团队一直在不断完善着系统,同时,我们也很乐意把设计开发过程中的一
% a7 b$ j: T% _9 `' Y" m些经验分享出来。 T" j% j% l7 l
# q; O. A% A( Q& Y! s+ R& c
- O! K% t7 _2 C! ]/ W- o$ p# r
|
|