1、1苏真2019.4阿里自研数据库阿里自研数据库OceanaseOceanase实践实践2课程大纲l Why OceanBasel 系统架构l 数据模型l 如何使用WHY Oceanbase了解OceanBase的特点恋爱通常是从了解开始的,想用好OceanBase,得先了解它。OceanBase设计目标:l 关系型数据库、结构化数据l 分布式、扩展性l 千亿级数据量l 跨行跨表事务l 支持SQL、兼容MYSQL协议Why OceanBase传统数据库(mysql&oracle),功能完善,唯一缺点是数据库本身不可扩展,业务高速增长时需要不断折库折表、需要TDDL等中间层支持OceanBase
2、RDBMS +Scalability关系数据库:ACID&SQL持续可用+水平扩展+低成本+功能&性能数据库进化的时代到了 mysql和oracle为代表的传统数据库 Nosql很热:hbase,cassandra,mongodb等遍地开发 大数据时代,数据库变革时期正在到来,谁将占据主流?7现有存储方案对照数据规模事务与数据一致性万亿记录(十PB)千亿记录(百TB)千万记录(百GB)十亿记录(TB)最终一致单行事务跨行跨表事务RDBMSCassandraHBaseMegastoreOceanBaseDynamoBigtable不同数据库的对比数据库类型代表特点关系型数据库mysql,orac
3、le支持事务、数据一致性好、功能强大,成熟稳定。但扩展性不足自主开发OceanBase支持事务、SQL。功能上接近关系型数据库,兼顾扩展性NoSQL类型Cassandra、Hbase可扩展性好,功能单一;一般不支持事务、不支持表关联查询、数据一致性较弱、有些还没有范围查询9数据库选型关于开源数据库OceanBase(oceanbase.taobao.org/)的应用场景:如果你不需要事务(transaction),MongoDB等是不错的选择;如果你的数据量很大,HBase也是不错的选择;如果你需要事务(transaction),并且数据量不大,或者你可以接受分库(sharding)后的事务,
4、关系数据库(例如MySQL)是不错的选择;如果你需要事务(transaction),并且数据量比较大(例如1TB几百TB),或者虽然目前数据量不大,但数据增长很快,你希望免除分库分表的麻烦,那么欢迎你选择OceanBase参考如标题的等式:OceanBase=transactionality+scalability 10系统架构11OceanBase设计思路l 数据存储:多机磁盘l 修改增量:单机内存基线数据(磁盘)修改增量(内存)Query数据增删改12物理架构App(Client)ChunkServer/MergeServerChunkServer/MergeServerChunkServ
5、er/MergeServerChunkServer/MergeServerRootServer/UpdateServer(primary)RootServer/UpdateServer(secondary)RootServer/UpdateServer(read secondary)meta dataincrement database datadata merge13每日合并:修改增量l 很多数据库每天有明显的访问低谷(e.g.,2:00am-5:00am)基线数据修改增量新的修改增量读写事务照常进行14OceanBase系统架构l 使用MySQL客户端,兼容MySQL应用修改增量应用接口基
6、线数据SQLSQLSQLSQLSQLSQLSQLSQLRootServer配置管理15OceanBase读写事务修改增量应用接口基线数据SQLSQLSQLSQLSQLSQLSQLSQLl 写事务(UpdateServer):Redo log+主备同步RootServer配置管理16每日合并期间的queryl 使用新或旧基线数据,查询结果一样基线数据修改增量新的修改增量Query旧基线旧基线旧增量旧增量新增量新增量Query新基线新基线新增量新增量水平扩展-CS/MSl 新增服务器:数据自动迁移且对应用透明l 应用不再需要分库分表l 应用不再需要耗费时间配合数据库进行扩容333444555666
7、777888000222111服务器水平扩展-UPSl 备UPS线性扩展RootServer修改增量应用接口基线数据RootServerHAUpdateServerUpdateServerUpdateServerUpdateServerRootServer配置管理跨机房容灾l 在二个机房部署主备二个群集,群集之间通过updateserver的commitlog实现自动同步RootServerRootServer持续可用:RS/UPSl RS/UPS异常,数据不丢,服务不停RootServer修改增量应用接口基线数据RootServerHAUpdateServerUpdateServerUpda
8、teServerUpdateServerRootServer配置管理持续可用:CSl CS异常,数据不丢,服务不停333444555666777888000222111基线数据服务器(CS)持续可用:MSSQLSQLSQLSQLSQLSQLSQLSQLRootServerl MS异常,数据不丢,服务不停持续可用-跨数据中心l IDC异常,数据不丢,服务不停SQLSQLSQLSQLSQLSQLSQLSQLRootServerRootServer持续可用-数据校验l 磁盘读写:每条记录带64位checksuml 网络传输:每个网络包带64位checksuml 每个文件多副本(36):每个文件都有6
9、4位checksuml 修改增量多副本(2N):每个UPS内存数据都有64位checksuml Redo log:每条都带checksum及对应于UPS内存的checksum持续可用-小结l 假设:硬件、软件、人随时可能故障或犯错l OceanBase目标:用不可靠的硬件和软件提供稳定、持续可用的服务 年可用率99.999+%(计划内停机属于不可用)l 措施 配置服务(RS):HA 更新增量服务(UPS):实时热备 基线数据服务(CS):数据多副本 应用接口(MS):多实例 跨机房数据同步 数据正确性:记录/网络包、文件和内存checksum26数据模型数据模型TABLEsstablessta
10、blesstablechunkserver1chunkserver2chunkserver3chunkserver4chunkserver5chunkserver6sstablesstablesstable数据模型Primary Keyfield1field2field3fieldnPrimary Key:用于定位记录的唯一标识,不可以重复 数据物理存储按Primary Key排序 Field(字段):类型:int,double,varchar,datetime,timestamp,create_time,modify_time.表,记录,字段,数据类型。数据模型与传统表,记录,字段,数据类型
11、。数据模型与传统RDBMS一样一样记录构成:29基准数据和增量数据l OceanbaseOceanbase数据结构 增量数据:单机B+B+树 基准数据:分布式B+B+树 新的基准数据 =老的基准数据 +增量数据基线数据基线数据(Chunkserver)增量数据增量数据(Updateserver)30数据分布UpdateserverChunkserver 4Chunkserver 3Chunkserver 2Chunkserver 1Rootserver数据分片数据分片(元数据)(元数据)增量数据增量数据(B+树)树)31如何使用32完全兼容mysql客户端33实例Create table t1
12、(c1 int,c2 int,c3 varchar(20),c4 datatime,c5 int,c6 createtime,primary key(c1,c2,c3)C1+C2+C3组成主键,C4,C5,C6为普通字段C1C2C3C4C5C634实例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
13、 c4=x;Select*from t1 where c1=x and c6=x;Select sum(c5)where c1=x;C1C2C3C4C5C635实例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手册参见:oceanbase.alibaba-inc/wiki/index.php?title=SQL_User_manualC1C2C3C4C5C6l Select,update,replace,delete,insertl where 条件过滤(and,or)l likel group byl havingl order byl limit,offsetl reverse scanl aggregate(count,sum,average)支持的SQL操作OceanBase应用接口l 应用接口:MySQL兼容(JDBC/ODBC)APPOceanBaseOBSQL客户端库MySQL客户端库PRELOAD38
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。