
阿里自研数据库OceanBase实践.ppt
38页2013.4阿里自研数据库阿里自研数据库OceanaseOceanase实践实践1课程大纲lWhy OceanBasel系统架构l数据模型l如何使用2WHY Oceanbase3了解OceanBase的特点•恋爱通常是从了解开始的,想用好OceanBase,得先了解它•OceanBase设计目标:l关系型数据库、结构化数据l分布式、扩展性l千亿级数据量l跨行跨表事务l支持SQL、兼容MYSQL协议4Why OceanBase•传统数据库(mysql&oracle),功能完善,唯一缺点是数据库本身不可扩展,业务高速增长时需要不断折库折表、需要TDDL等中间层支持OceanBase RDBMS + Scalability=关系数据库:ACID&SQL>持续可用+水平扩展+低成本+高性能高性能<功能&性能5数据库进化的时代到了•mysql和oracle为代表的传统数据库•Nosql很热:hbase,cassandra,mongodb等遍地开发•大数据时代,数据库变革时期正在到来,谁将占据主流?6现有存储方案对照数据规模事务与数据一致性万亿记录(十PB)千亿记录(百TB)千万记录(百GB)十亿记录(TB)最终一致单行事务跨行跨表事务RDBMSCassandraHBaseMegastoreOceanBaseDynamoBigtable7不同数据库的对比数据库类型代表特点关系型数据库mysql,oracle支持事务、数据一致性好、功能强大,成熟稳定。
但扩展性不足自主开发OceanBase支持事务、SQL功能上接近关系型数据库,兼顾扩展性NoSQL类型Cassandra、Hbase可扩展性好,功能单一;一般不支持事务、不支持表关联查询、数据一致性较弱、有些还没有范围查询8数据库选型•关于开源数据库OceanBase( )的应用场景:如果你不需要事务(transaction),MongoDB等是不错的选择;如果你的数据量很大,HBase也是不错的选择;如果你需要事务(transaction),并且数据量不大,或者你可以接受分库(sharding)后的事务,关系数据库(例如MySQL)是不错的选择;如果你需要事务(transaction),并且数据量比较大(例如1TB~几百TB),或者虽然目前数据量不大,但数据增长很快,你希望免除分库分表的麻烦,那么欢迎你选择OceanBase参考如标题的等式:OceanBase = transactionality + scalability 9系统架构10OceanBase设计思路l数据存储:多机磁盘l修改增量:单机内存Data==基线数据(磁盘)++修改增量(内存)Query数据增删改11物理架构App(Client)ChunkServer/MergeServerChunkServer/MergeServerChunkServer/MergeServerChunkServer/MergeServerRootServer/ UpdateServer(primary)RootServer/ UpdateServer(secondary)RootServer/ UpdateServer(read secondary)meta dataincrement database datadata merge12每日合并:修改增量l很多数据库每天有明显的访问低谷(e.g.,2:00am-5:00am)Data==基线数据++修改增量新的修改增量++读写事务照常进行13OceanBase系统架构l使用MySQL客户端,兼容MySQL应用修改增量应用接口基线数据SQLSQLSQLSQLSQLSQLSQLSQLRootServer配置管理14OceanBase读写事务修改增量应用接口基线数据SQLSQLSQLSQLSQLSQLSQLSQLl写事务(UpdateServer):Redo log + 主备同步RootServer配置管理15每日合并期间的queryl使用新或旧基线数据,查询结果一样Data==基线数据++修改增量新的修改增量++Query旧基线旧基线==++旧增量旧增量++新增量新增量Query新基线新基线==++新增量新增量16水平扩展-CS/MSl新增服务器:数据自动迁移且对应用透明l应用不再需要分库分表l应用不再需要耗费时间配合数据库进行扩容333444555666777888000222111服务器17水平扩展-UPSl备UPS线性扩展RootServer修改增量应用接口基线数据RootServerHAUpdateServerUpdateServerUpdateServerUpdateServerRootServer配置管理18跨机房容灾l在二个机房部署主备二个群集,群集之间通过updateserver的commitlog实现自动同步RootServerRootServer19持续可用:RS/UPSlRS/UPS异常,数据不丢,服务不停RootServer修改增量应用接口基线数据RootServerHAUpdateServerUpdateServerUpdateServerUpdateServerRootServer配置管理20持续可用:CSlCS异常,数据不丢,服务不停333444555666777888000222111基线数据服务器(CS)21持续可用:MSSQLSQLSQLSQLSQLSQLSQLSQLRootServerlMS异常,数据不丢,服务不停22持续可用-跨数据中心lIDC异常,数据不丢,服务不停SQLSQLSQLSQLSQLSQLSQLSQLRootServerRootServer23持续可用-数据校验l磁盘读写:每条记录带64位checksuml网络传输:每个网络包带64位checksuml每个文件多副本(3~6):每个文件都有64位checksuml修改增量多副本(2~N):每个UPS内存数据都有64位checksumlRedo log:每条都带checksum及对应于UPS内存的checksum24持续可用-小结l假设:硬件、软件、人随时可能故障或犯错lOceanBase目标:用不可靠的硬件和软件提供稳定、持续可用的服务Ø年可用率99.999+%(计划内停机属于不可用)l措施Ø配置服务(RS):HAØ更新增量服务(UPS):实时热备Ø基线数据服务(CS):数据多副本Ø应用接口(MS):多实例Ø跨机房数据同步Ø数据正确性:记录/网络包、文件和内存checksum25数据模型26数据模型TABLEsstablesstablesstablechunkserver1chunkserver2chunkserver3chunkserver4chunkserver5chunkserver6sstablesstablesstable27数据模型Primary Keyfield1field2field3…fieldnPrimary Key: 用于定位记录的唯一标识, 不可以重复 数据物理存储按Primary Key排序 Field(字段): 类型:int,double, varchar, datetime,timestamp, create_time, modify_time.表,记录,字段,数据类型。
数据模型与传统表,记录,字段,数据类型数据模型与传统RDBMS一样一样记录构成:28基准数据和增量数据lOceanbase数据结构Ø增量数据:单机B+树Ø基准数据:分布式B+树Ø新的基准数据=老的基准数据+增量数据基线数据基线数据(Chunkserver)增量数据增量数据(Updateserver)29数据分布UpdateserverChunkserver 4Chunkserver 3Chunkserver 2Chunkserver 1Rootserver数据分片数据分片(元数据)(元数据)增量数据增量数据((B+树)树)30如何使用31完全兼容mysql客户端32实例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为普通字段C1C2C3C4C5C633实例C1+C2+C3组成主键,C4,C5,C6为普通字段OKSelect * 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;C1C2C3C4C5C634实例C1+C2+C3组成主键,C4,C5,C6为普通字段NOT OKSelect * 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手册参见:C1C2C3C4C5C635lSelect,update,replace,delete,insertlwhere 条件过滤(and, or)llikelgroup bylhavinglorder byllimit,offsetlreverse scanlaggregate(count,sum,average)支持的SQL操作36OceanBase应用接口l应用接口:MySQL兼容 (JDBC/ODBC)APPOceanBaseOBSQL客户端库MySQL客户端库PRELOAD37 感谢聆听38。
