OceanBase是阿里巴巴集团自主研发的可扩展的关系型数据库,OceanBase实现了跨行跨表的事务,支持数千亿条记录、数百TB数据上的SQL操作,截止到2012年8月为止,OceanBase数据库支持了阿里巴巴集团下多个重要业务的数据存储,支持业务包括收藏夹、直通车报表、天猫评价等,截止2013年4月份,OceanBase线上业务的数据量已经超过一千亿条。
从模块划分的角度看,OceanBase可以划分为四个模块:主控服务器RootServer、更新服务器UpdateServer、基准数据服务器ChunkServer以及合并服务器MergeServer。OceanBase系统内部按照时间线将数据划分为基准数据和增量数据,基准数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增量数据融合到基准数据中。
2013/06/19,合并最新的bugfix和特性到0.41分支上:【重要】RootServer: Chunk Server在合并失败后,如果发现其他两个副本已经成功合并,会本地直接删除失败的副本,以前的版本RootServer并没有处理主动删除replica的情况;
SQL: ob_tablet_get.cpp的reset方法没有实现完全,这个bug会导致select * from t1 as z where k1 = 1不断执行时失败;
SQL:group_min_max.test执行cs出core,原因是ob_row_store重用时有错,造成sort操作符访问到额外数据,致使比较类型出错,std::sort会core掉;
- 2013/04/28,整理提交了V0.4.1代码和相关技术文档。 - 2013/03/04,整理提交了V0.3.1代码和相关技术文档。- 使用libeasy网络框架代替了原来的tbnet,实现更高的网络处理性能
- 全面支持mysql协议(支持所有兼容libmysql库的driver,包含终端客户端mysql程序等)
- 支持SQL的客户端库
- 提供了兼容JDBC的obdatasource库,实现OB集群内负载均衡策略
- 提供了二进制兼容libmysql的libobsql库,实现OB集群内负载均衡策略
- 全面支持SQL
- DML语句:select, insert, replace, delete, update
- 支持select的大部分常用语法,包括任意复杂单表查询、集合交并差操作、受限的join、受限的子查询等
- 支持的数据类型包括int, varchar, timestamp, float, double等
- DDL语句:create table, drop table
- 支持SQL事务
- Start transaction, commit, rollback
- SELECT FOR UPDATE
- 实现了READ-COMMITED隔离级别的MVCC并发控制
- 用户权限控制
- Create user, drop user, rename user, alter user, set password等
- Grant, revoke等
- 服务器端Prepared statement
- 支持SQL语句prepare, execute, drop prepare等
- 支持兼容mysql二进制协议的prepared statement
- 其他语句
- 通过set语句支持用户自定义变量
- Show tables, show variables, show grants, show warnings, show columns, describe等
- Explain
- DML语句:select, insert, replace, delete, update
- 易用性改进
- 引入了内部表机制,很多SQL功能基于内部表实现
- Schema使用内部表管理,废除了schema配置文件
- 引入了内部trigger通知机制
- OB自身的配置使用内部表管理
- 自监控
- OB自身的监控信息可以通过查询内部表获得
- 引入了内部表机制,很多SQL功能基于内部表实现