读书是获得知识最便宜的手段。
OceanBase是阿里集团研发的可扩展性关系型数据库,实现了数千亿条记录、数百TB数据上的跨行跨表事务。
OceanBase的目标是支持数百TB的数据量以及数十万TPS、数百万QPS的访问量。
一、OceanBase系统架构:
1、客户端:使用OceanBase的方式与MySQL完全相同,支持JDBC、C客户端访问,基于MySQL数据库开发的应用可以直接迁移至OceanBase。
2、RootServer:管理集群中的所有服务器,子表数据分布及副本管理,RootServer一般一主一备,主备之间强制数据同步。
主要功能:集群管理、数据分布以及副本管理。RootServer主备之间可通过Linux HA实现高可用,主备之间共享VIP。
3、UpdateServer:存储OceanBase系统的增量更新数据,一般为一主一备,主备之间可采用不同的同步模式。
主要功能:集群中唯一能够接受写入的模块,UpdateServer更新操作首先写入内存表,当内存表超过一定值时,可以生成快照文件并转存为SSD中。
4、ChunkServer:存储OceanBase系统的基线数据,一般存储两份到三份,可配置。
主要功能:存储多个子表,提供读取服务,执行定期合并以及数据分发。
5、MergeServer:接收并解析用户的SQL请求,经过词法分析、语法分析、查询优化等一系列操作后转发给相应的ChunkServer或者UpdateServer,如果请求的数据分布来多台ChunkServer上,还需要对多台ChunkServer返回的数据进行合并。客户端可直接访问MergeServer。
主要功能:协议解析、SQL解析、请求转发、结果合并、多表操作等,MergeServer先解析客户端请求的MySQL协议,提取用户发送的SQL语句,接着进行词法分析和语法分析,生成SQL语句的逻辑查询计划和物理查询计划,最后根据物理计划调用内部各种操作,请求各子表数据转发给对应的ChunkServer,如果是写操作,还会转发给UpdateServer。
二、OceanBase读写事务流程
用户读写请求都发给MergeServer,MergeServer解析这些读写事务的内容,如:词法和语法分析、schema检查等,对于只读事务,由MergeServer发给相应的ChunkServer分别执行再合并每个ChunkServer的执行结果,对于读写事务,由MergeServer预处理后,发给UpdateServer执行。
三、OceanBase扩展
OceanBase融合了分布式存储系统和关系型数据库这两种技术,UpdateServer相当于一个高性能内存数据库,底层采用关系型数据库技术实现,ChunkServer相当于一个分布式文件存储系统,类似Google GFS。
四、存储介质对比
类别 | 每秒读写(IOPS)次数 | 每GB价格(元) | 随机读取 | 随机写入 |
---|---|---|---|---|
内存 | 千万级 | 150 | 友好 | 友好 |
SSD盘 | 35000 | 20 | 友好 | 写入放大问题 |
SAS磁盘 | 180 | 3 | 磁盘寻道 | 磁盘寻道 |
SATA磁盘 | 90 | 0.5 | 磁盘寻道 | 磁盘寻道 |