2013年4月26日-27日,由51CTO传媒集团旗下WOT(World Of Tech)品牌主办的2013大数据全球技术峰会在北京富力万丽酒店召开。本次峰会将围绕大数据基础架构与上层应用的生态系统,解决大规模数据引发的问题,探索大数据基础的解决方案,激发数据挖掘带来的竞争力,让数据发出声音。51CTO作为本次峰会的主办方,将全程视频、图文直播报道这场数据的盛宴,更多内容请点击专题:2013大数据全球技术峰会。
OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。
在4月26日的NoSQL&NewSQL专场论坛中,支付宝高级技术专家卢黄贵先生表了主题为“OceanBase: 海量分布式关系型数据库”的演讲。
关系数据库发展
1970-72:E.F.Codd 数据库关系模式
20世纪80年代
***个商业数据库Oracle V2
SQL成为“数据库行业标准”
可扩展性
Mainframe:小型机 => 中型机 => 大型机
Sharding:全局索引? 事务? 跨库查询?
性能
Disk-based design:SSD? Memory?
开源数据库:主备同步?锁? Schema变更?
并发事务管理
使用MVCC保证写事务不阻塞只读事务
每行为每次事务保存修改历史,根据事务ID读取到指定数据
修改历史的合并,不在被读取的多个历史版本将被定期合并
Btree和Hash修改的原子性保证
写事务
0.3版,单线程写+repalce语义,在MemTable层实现SnapShot
0.4版,多线程读写事务+完备的DB语义,使用Snapshot+两阶段行互斥锁控制读写事务并发
并发日志回放
以单个事务日志作为并行的最小单位
并行回放的事务隔离性、一致性、原子性保证,并行提交的排序算法
主备同步
日志多线程回放
Innodb:记录binlog逻辑日志,备机单线程回放
Oracle:记录物理日志,备机多线程并发回放
OceanBase:记录逻辑日志(无UNDO),备机多线程并发回放
主备同步协议
Mysql:异步,不保证数据一致性
Oracle
Maximum Performance(异步)
Maximum Protection(强同步)
Maximum Availability(强同步 => 写本地)
OceanBase:改进的Oracle MA模式
数据安全主备checksum校验:保证增量数据的完全一致
tablet副本checksum 每次合并由rs做校验,保证基线数据的一致
主备集群按行进行checksum,保证主备集群一致
一致性选择
用户可以通过sql hint选择一致性
写事务必须是一致的,选择主ups
读事务可以选择不一致读,容忍一定数据延时获得更好的性能
对于一次导入,全天查询的olap应用
只读基准数据提高性能
优化技术举例
高性能网络框架:万兆网卡、减少上下文切换
无锁队列:push, pop每秒达到600万 ~ 1000万次
避免Linux gettimeofday()调用
定制化内存池:绝大部分事务执行过程中无需动态内存分配
完全避免随机写,适合SSD
定制SSD驱动?
OceanBase架构小结
OceanBase = Bigtable + MemSQL
保证数据不丢失,可扩展、高性能、低成本、持续可用
基线数据 + 修改增量,每日合并
分布式存储引擎:水平扩展 + 自动容错
数据库:MVCC,多线程并发回放,UPS定制优化
OceanBase vs 关系数据库
线性可扩展,无需分库分表
持续可用:硬件故障、软件升级、人为故障、etc
线上集群概况
30+应用,***单个应用80台服务器
线上数据无丢失,无影响业务故障
***表格:收藏夹 10031274509
***qps/tps:45000 / 2500(一次scan 60行)
单日更新数据量:5亿条(约120GB redo log)
OLAP业务
***表格:P4P 49412041894
单次请求最多行数:约500万,RT < 3秒
***导入数据量:SNS每天2TB(4台机器)
开源
获取更多信息,请访问:
http://oceanbase.alibaba-inc.com/
以上是51CTO.com记者从一线为您带来的精彩报道。后续我们还有更加精彩的独家报道,敬请关注。