自从 OceanBase 社区版 3.1.2 首次公开以后,有很多小伙伴对 2022 年开源社区的动作很感兴趣,为此在《深入浅出 OceanBase 》系列的第一期直播分享中,OceanBase 开源研发总监纪君祥首次公开了 「OceanBase 社区版 2022 Roadmap 」,对社区全年规划和产品内核特性做了一一说明,并针对用户的问题进行了解答。(文末附 Q&A~)
2022 RoadMap:快速奔跑的 HTAP

第一,每年一个大版本 release + 每 3 个月一次 feature 版本 + 每个月一个bug fix 版本( bp 版本);
第二,大版本发布即为架构发生升级,版本升级类似 MySQL 5.7 升级到 MySQL 8.0,需要做数据迁移操作;
第三,feature 版本即发布了众多 feature 或大 feature , 本地手动冷升级(本地重启)或者通过 OCP 热升级(不停服务);
第四,bp 版本即为纯 bug fix 版本,版本升级直接替换 binary 即可,可以使用 ODP 直接 binary 替换或使用 OCP 热升级。

内核关键特性
关于产品的整体进度,目前,内核 feature 已经完成开发,在测试回归中,整体 JSon 支持风险存在,所以不能保证一定在这个版本中能 release 出来。
ARM 支持:OBServer/OBProxy/OBD 支持 ARM 系统,但工具还没有完成适配。不过进度已经完成,银联已经在提前试用。需求方:银联、民生银行、中国联通等超过 10 人+;
JSon 支持:支持 JSon,从去年 9 月份开始研发,当前研发已经完成,且正在测试中,如果通过测试就会按计划发版,否则往后推一个版本。需求方:民生银行、携程、阳光保险等;
HBase api 支持:将内部大面积使用的 HBase api 开源出来,当前进度已经完成。需求方:贝壳、小米、CeresDB 等。性能相较默认的 hbase 2.4.6 的 sync 方式有不少提高,scan 性能 2.42 倍,insert 1.7 倍;
Table api 异步支持:从去年 9 月份开始实现, 底层线程池来异步响应用户的请求,主要提升 table api 的吞吐量在 batch api 下,性能提升 300% ~ 500%;
回收站恢复 Tenant & Database & Table& Index:flashback 恢复回收站对象;
小规格优化 2c8g:2c8g docker 运行 OceanBase;
默认创建 local 索引:已经完成;
information_schema.TABLES 增加 ENGINE 值:需求来自58 同城。
自研生态工具
OCP 社区版(3.3.0-ce) 4月30日 release
开放备份恢复功能:未来无需敲命令进行恢复
接管 OBD 部署集群功能
接管 OBProxy 集群功能
安装简化
增加检查功能。包括在接管集群时、添加主机时,都增加了部分检查,避免安装过程中报错
OMS 社区版(oms3.2.2-ce-bp2)3月30日 release
社区版 CDC 支持持久化:移植商业版功能,需求来自浦发银行,这个功能当前进度已经完成,但将 liboblog 改名为 libobcdc,涉及大量上下游协同改动,因此有可能会延后一个版本
解决超大事物 OOM 风险
提取拉取速度,降低限速阀值,防止历史clog 日志太久没有消费,而被覆盖掉
OMS 社区版(3.3.0-ce) 5月9日 release
支持 OceanBase 到 OceanBase 数据迁移和同步
支持 OceanBase 到 kafka& rocketmq 数据迁移和同步
安装易用性改进
OBDeployer(1.3.0) 3月30日
ARM 支持
一键运行 TPCC 测试
OBD 在出错的场景下打屏输出帮助链接地址
开发者中心 ODC
OceanBase 在线体验站 play.oceanbase.com 切到社区版
ob-admin 工具
提供不打印数据的 clog 解析工具 驱动
python 驱动已经完成验证
python 3.X pyMySQL
python 2.X MySQL-python
golang Go-SQL-Driver/MySQL
Unix ODBC
SQL Plan monitor
可视化展示 SQL Plan 开源流程中,预估在下个月会开放出来
生态合作
CloudCanal 合作:已经完成 MySQL → OceanBase;OceanBase → MySQL 正在研发,预估下个月完成
通过 Flink CDC 全量及增量同步对接 Flink CDC
通过 otter 双向实时同步对接 otter 广州智通人才
对接南京基石数据智能运维平台 D-smart 大师问诊软件
3.1.4
内核
data file 按需申请大小
OBServer 内核原生支持 Prometheus 监控数据输出
扩所容时,unit 进度可查询
Golang 支持 PS
多模数据库 ttl 过期数据自动删除
data_dir 参数值不准确
OCP (3.4.0-ce)
白屏化安装所有工具
OceanBase-operator 能够支持修改 OceanBase 配置
OBDeployer
能否在安装时启用 playground 方式
sql-diagnoser
诊断工具的敏捷版
可疑 SQL 诊断
一键收集和系统诊断相关 metrics
一键手机诊断日志和元数据
生态合作
2022/4 通过 Chunjun (原 flinkx )对接 Chunjun
计划每月完成一家公司对接
Q&A 环节节选
Q:OceanBase 所提供的 HBase API 是做什么的?为了接入 HBase 的数据吗?
A:OceanBase 提供了 HBase 的 API ,主要是在以下背景下产生:HBase 是一个 java 的程序。以前在每年双十一的时候,会遇到流量洪峰,而且容易出现尖峰刺的情况, 在这种情况下非常容易发生 java 的 gc,gc 特别严重的话,会 stop the world。
所以阿里也投入了人力来专门优化 HBase 的 java gc。但是不管怎么优化还是有一定的风险,即会因为 java gc而抖动。在此背景下,OceanBase 提供了 KV 的这一套能力,也就是说上层的应用可以将请求直接绕过 OceanBase 的 SQL 层,触达到 OceanBase 的存储层,直接提供了 KV 的这一套接口。
再者,因为 OceanBase 是用 C 和 C++ 写的,所以不存在有这种 java gc 问题。而且现在蚂蚁很多应用都从以前的 HBase 切换到 OceanBase 上。我们这套 HBase 的性能,相对于使用最多的 HBase 2.4.6 来说,scan 性能提升到 2.42 倍, insert 提升到 1.7 倍。整个性能非常不错,我们自己用的蛮久, 稳定性有一定的保证。
Q:能支持 Redis 协议吗?
A:我们现在暂时没有计划支持 Redis。因为 Redis 是一个内存,是一个cash。坦白讲,可能我们还是拼不过 Redis 这种 cash 的速度。
Q:HBase 能直接读取 OBKV 吗?
A:HBase 的 client 是不能够直接去读 OBKV 的。我们会有一个 HBase 专属的 java client 使用,可以读取 OBKV。
Q:咱们有没有对 MySQL 存储过程的支持计划?
A:关于对 MySQL 存储过程的支持,我们现在商业版支持,社区版暂不支持。
Q:intel 支持 numa 吗?numa 好像是amd和arm的优势?
A:numa 在 OceanBase 上已经用的比较多了。而且阿里云上很多的数据库已经都开始支持了。numa 会利用 CPU 的内存来提升性能。
Q:底层是KV?如果是读放大如何解决,以实现合并不影响线上?
A:底层不是 KV 的,我们有大量优化提升读性能的 。
Q:能简单介绍下 OceanBase 的 SQL 限流原理吗?
A:OceanBase 是通过在 SQL 上绑定 Outline 的方式来实现的, 有一个 MAX_CONCURRENT(NUM) hint ,通过 outline 绑定到 SQL 上实现 SQL 的限流。比如说你给它设置成一的时候,那在租户级别,这个 SQL 只能开一个线程跑,它的并发度只能是一。比如说这个 SQL 它的 rt 是一百毫秒的话,那它的 qps 最多只能到十。如果你想把这个 SQL 给限死的话,那你直接把并发度都改成零就可以了。
Q:可以大致介绍下双十一大促的弹性方案吗?
A:简要介绍下,大促期间会使用阿里云的资源,然后利用 OceanBase 的弹性伸缩能力,把一部分副本给它弹出去,做一个横向的扩容。
Q:除了合并可以更新统计信息外,还有什么其他方法可以更新统计信息?
A:除了合并以外,从V3.2.1版本开始支持通过 ANALYZE TABLE 命令,收集更新统计信息。
Q:降序索引什么时候支持?
A:降序索引目前用的2.2.77版本是没有支持的。
Q:动态改主键什么时候支持?
A:因为 OceanBase 是索引组织表,针对目前改主键的情况,我们内部现在还是用 OMS 同步,即把表结构提前建好,然后把数据拷贝过去,然后再做一个在线的 rename 以实现改主键。
Q:提前解行锁会不会有大规模级联回滚的风险?
A:这个有可能会出现,比如说在切主的时候,那它这个事务可能会被 kill 掉,就有可能会出现大规模级联回滚。




