OceanBase 0.4:从API到SQL 日照 rizhao.ych@alipay.com
日程 系统架构 SQL介绍 后续规划
关系数据库的背后 数据总量很大,但每天更新量相对较小 Alibaba 2012双十一交易笔数1.1亿笔,假设对于某个业务,1笔交易操作10次数据库: 写事务数:1.1亿 * 10 = 11亿 修改增量:11亿*100B = 110GB
设计理念 查询 修改 基线数据 修改增量 数据 + =
系统架构 OceanBase = GFS + MemSQL (in-mem db) SQL 基线数据 配置管理 Root Server MergeServer ChunkServer 基线数据 UpdateServer 配置管理 Root Server UpdateServer 修改增量 UpdateServer 应用接口 OceanBase = GFS + MemSQL (in-mem db)
读写事务 基线数据 修改增量 应用接口 配置管理 SQL Update Server Root Server MergeServer ChunkServer 基线数据 Root Server 修改增量 配置管理 应用接口
合并过程不影响读写服务 每日合并 基线数据 修改增量 数据 新的修改增量 + + =
为什么选择SQL OB 0.3(API) OB 0.4(SQL) 30+应用,300多台服务器 单表超过1000亿条,最大集群主备各40台机器 胖客户端:线上客户端版本管理? OB 0.4(SQL) 瘦客户端:标准协议 方便使用,运维工具齐全
Mysql协议支持 Client通过Listener获取MS地址 Client通过普通MS读写数据 Client与MS(包括Listener)走Mysql协议 获取MS列表 Client Listener MergeServer 读写数据 MergeServer MergeServer MergeServer
Mysql客户端连接OB Mysql客户端连接任意一台MS
Java客户端 JDBC Spring配置 <bean id = “groupDataSource” class = “com.alipay.oceanbase.ObGroupDataSource” init-method = “init”> <property name=”username” value=”user” /> <property name=”passwd” value=”pass” /> <property name=”dbName” value=”test” /> <property name=”configURL” value=ob_addr_url /> </bean>
支持的SQL功能 标准SQL语法 DDL语句:create/drop/alter table DML语句:insert/delete/update/select Insert/delete/update目前仅支持单行 单表select Join操作:等值Join 事务 start transaction/commit/rollback; select…for update “Golden Bug”:replace语句 避免SQL解析:prepare / execute
单UPS写性能 某线上业务模拟场景 1. update c=c-1 if c > 0; 2. insert
读性能 单MS&CS:16 core CPU(超线程) 单UPS:30W+ QPS(千兆网卡,24核) 性能不够? 命中Cache:3.8W QPS / Machine 全部读SSD:1.5W QPS / Machine 单UPS:30W+ QPS(千兆网卡,24核) 性能不够? 增加ChunkServer UPS上万兆网卡,更多核的CPU 等待OB团队性能优化。。。
自动化测试 功能、容灾框架 持续压测环境 connection conn1; create table t1(pk int primary key, c1 varchar); insert into t1 values(2,'2_abc'),(3,'3_abc'),(4,'4_abc'),(5,'5_abc'); update t1 set c1='9_UPDATE' where pk=9; select * from t1; let $a=deploy_get_value(ob1.get_master_ups); deploy ob1.stop_master_ups; sleep 30; let $b=deploy_get_value(ob1.get_master_ups); select * from t1;
运维功能 系统表(内部表) 学习Oracle和Mysql 配置,Schema,内部状态,监控信息 性能视图 运维功能 一键安装 配置项:alter system / show parameters 用户权限:create/drop user; grant/revoke 表格:create/drop/alter table 管控中心:监控/报警/OB Plus/文档中心
应用无缝升级 根据是否为写入集群以及读流量比例选择0.3或者0.4集群。 流量逐步切入0.4,支持异常回滚 If (选择的集群为0.3集群) { // 调用0.3的API接口 } else { / 将API请求转化为0.4版本的SQL调用; }
不足 SQL功能不足 运维功能不足 应用维护二级索引 不支持复杂Join 不支持Decimal,Sequence 不支持性能视图 缺乏运维工具 DBA不熟悉
里程碑 2013.Q4: SQL(v0.5) 2012.3: OLAP(v0.3) 2011.2: 2012.11:SQL(v0.4) 2010.6:项目启动 2011.2: 第一个应用 2011.10: 双集群 2012.3: OLAP(v0.3) 2012.11:SQL(v0.4)
后续规划 SQL功能 复杂查询 二级索引 OLAP:大表join,… 运维功能:性能视图,… 每日合并优化 多UpdateServer …
Q&A