• 1. OceanBase 0.4:从API到SQL日照 rizhao.ych@alipay.com
  • 2. 可扩展 大数据(>100TB) 增加/减少服务器 持续可用 易用 SQL,ACID 高性能 TPS ( > 100k ), QPS ( > 1M ) 低成本 我们需要怎样的存储方案?
  • 3. 数据总量很大,但每天更新量相对较小 Alibaba 2012双十一交易笔数1.1亿笔,假设对于某个业务,1笔交易操作10次数据库: 写事务数:1.1亿 * 10 = 11亿 修改增量:11亿*100B = 110GB 数据库业务的背后
  • 4. 设计理念数据=基线数据+修改增量查询修改
  • 5. 系统架构OceanBase = GFS + MemSQL (in-mem db)MergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerSQLSQLSQLSQLSQLSQLSQLSQLRoot ServerUpdateServerUpdateServerUpdateServer修改增量应用接口基线数据配置管理
  • 6. Update ServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServer修改增量应用接口基线数据SQLSQLSQLSQLSQLSQLSQLSQLRoot Server配置管理读写事务
  • 7. 每日合并数据=基线数据+修改增量新的修改增量+合并过程不影响读写服务
  • 8. 持续可用: ChunkServer333444555666777888000222111基线数据 (ChunkServer)
  • 9. 持续可用: UpdateServerRoot ServerUpdate ServerUpdate Server
  • 10. 持续可用: 多集群MergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerSQLSQLSQLSQLSQLSQLSQLSQLRoot ServerRoot ServerUpdateServerUpdateServerUpdateServerUpdateServerUpdateServerUpdateServer
  • 11. 支持的SQL功能Oceanbase = “超大的MySQL” SQL:DML(insert/delete/update/replace),DQL(单表查询,等值连接) 事务:read-committed,行锁 Prepared Statement,多版本并发控制(MVCC) 系统函数 应用开发 JDBC/ODBC Spring/iBatis PHP / Python
  • 12. OB 0.3(API) 30+应用,400多台服务器 单表超过1000亿条,最大集群80台 问题 客户端“补丁”多 客户端线上版本维护复杂 OB 0.4(SQL) SQL 92标准,适当兼容Oracle / MySQL 易用,运维工具齐全为什么选择SQL
  • 13. MySQL协议兼容Mysql客户端连接OceanBase
  • 14. 应用无缝升级根据是否为写入集群以及读流量比例选择0.3或者0.4集群。 流量逐步切入0.4,支持异常回滚 If (选择的集群为0.3集群) { // 调用0.3的API接口 } else { / 将API请求转化为0.4版本的SQL调用; }
  • 15. 运维功能系统表(内部表) 配置,Schema,内部状态,监控信息 性能视图 运维功能 一键安装 配置项:alter system / show parameters 用户权限:create/drop user; grant/revoke 表格:create/drop/alter table 管控中心
  • 16. 性能优化网络框架 重头开发Libeasy(万兆网卡 > 1M 请求/秒) 内存优化 Lock-free内存B树 小请求执行过程不加锁 快速内存压缩/解压缩算法 主备复制 OceanBase异步复制技术 并发日志回放技术
  • 17. 单UPS写性能某线上业务模拟场景 1. update c=c-1 if c > 0; 2. insert
  • 18. 读性能单MS&CS:16 core CPU(超线程) 命中Cache:3.8W QPS / Machine 全部读SSD:1.5W QPS / Machine 单UPS:30W+ QPS(千兆网卡,24核) 性能不够? 增加ChunkServer UPS上万兆网卡,更多核的CPU
  • 19. 质量保证接口、功能、容灾框架 压测、benchmark、线上模拟,。。。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;
  • 20. 不足MergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerMergeServer ChunkServerSQLSQLSQLSQLSQLSQLSQLSQLRoot ServerUpdateServerUpdateServerUpdateServerUpdateServer性能、容量单点瓶颈每日合并过程中TPS/QPS & RT2次网络来回
  • 21. 里程碑2010.6:项目启动2011.2: 第一个应用2011.10: 双集群2012.3: OLAP(v0.3)2013.03:SQL(v0.4)2013.Q4: SQL(v0.5)
  • 22. 后续规划改进SQL功能 二级索引 Decimal,更多系统函数,… OLAP:大表join,… 运维功能:性能视图,… 每日合并优化 多UpdateServer …
  • 23. Q&A