OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap

昨日, OceanBase 开源社区为大家展开了《深入浅出 OceanBase 》系列第一期直播分享:在本次直播中,OceanBase 开源研发总监 纪君祥 带来了  OceanBase 社区版 2022 Roadmap 精彩演讲 ,吸引了数百名观众线上观看,群内互动交流热火朝天。


错过了本次直播?没关系!

看过还觉得意犹未尽?

小编这就为你总结一下全文!




为什么我们要发起《深入浅出 OceanBase 》系列直播?


之前在跟社区一些朋友交流的过程中发现,不少朋友都希望 OceanBase 能够多分享更多有趣、有价值的技术点。

OceanBase 开源社区是真正属于用户的社区

当我们听到大家的反馈后,就在琢磨怎么样站在社区的角度,为大家每月一至两次精彩对话。这便是我们发起 《深入浅出 OceanBase 》系列直播的初心, 希望大家通过这个活动能更了解 OceanBase。


首先介绍 OceanBase 从过完2022年春节以来的 Monthly Report,旨在将 Oceanbase 最近一些进展和即将发版的特性跟大家展开交流。


活动预告:

1、 后续将推出《深入浅出 OceanBase 》系列, 每月2场线上分享, 2场分享中, 2个 topic 偏运维和产品, 2个偏技术解析, 产品系列如《高可用运维》、《数据同步》、《异地多活》等, 技术系列如《 SQL 系列之 优化器改写规则1/2/3/4》等等。

2、3月1日推出 《测性能,拿周边|OceanBase 3.1.2 版邀你来玩》。

3、4月份将推出 《文档捉虫系列》, 届时欢迎大家参与。


如何更及时获取官方信息以及参与社区学习呢,通过扫码即可加入 OceanBase 官方社群。

OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap-1


博客文章推荐


自春节以来,OceanBase 开源社区一共发布了40多篇干货文章,

其中以下三篇文章内容非常值得推荐:

《OceanBase 数据库系统概念》首次发布,系统精准定义 OceanBase !

高性能的连接管理和数据路由组件,OceanBase 生态工具 ODP 详解

OceanBase 存储层代码解读(三)宏块存储格式


更多内容,欢迎浏览 




2022 RoadMap 大纲

OceanBase 社区版发布节奏如下:

每年一个大版本 release,每3个月一次 feature 版本, 每个月一个 bug fix 版本( bp 版本).

  1. 大版本发布即为架构发生升级, 版本升级类似 MySQL 5.7 升级到 MySQL 8.0, 需要做数据迁移操作
  2. feature 版本即为发布了众多 feature 或大 feature , 本地手动冷升级(本地重启)或者通过 OCP 热升级(不停服务)
  3. bp 版本即为纯 bug fix 版本, 版本升级直接替换 binary 即可, 可以使用 ODP 直接 binary 替换或使用 OCP 热升级


OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap-2


OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap-3


内核关键特性:

整体进度, 内核 feature 都已经完成开发, 持续扫描商业版的 patch , 在测试回归中, 整体 JSon 支持 风险存在, 不能保证一定在这个版本中能 release 出来.

  1. ARM 支持: OBServer/OBProxy/OBD 支持 ARM 系统, 但工具还没有完成适配, 进度已经完成了, 银联已经在提前试用。需求方: 银联, 民生银行, 中国联通等超过10人+
  2. JSon 支持: 支持 JSon, 去年9月份开始研发, 当前研发已经完成, 当前还在测试中, 如果通过测试就会按计划发版, 否则往后推一个版本。需求方: 民生银行, 携程, 阳光保险等有需求.
  3. HBase api 支持: 将内部大面积使用的 HBase api 开源出来, 当前进度已经完成.。需求方: 贝壳, 小米, CeresDB 等。性能想较默认的 hbase 2.4.6 的 sync 方式 有不少提高, scan 性能2.42倍, insert 1.7倍

OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap-4

  1. Table api 异步支持: 从去年9月份开始实现, 底层线程池来异步响应用户的请求, 主要提升 table api 的吞吐量. 在 batch api下, 性能提升300% ~ 500%.
  2. 回收站恢复 Tenant & Database & Table & Index: flashback 恢复回收站对象.
  3. 小规格优化 2c8g, 2c8g docker 运行oceanbase
  4. 默认创建 local 索引 : 已经完成
  5. information_schema.TABLES 增加 ENGINE 值: 需求来自58 同城


自研生态工具

OCP 社区版(3.3.0-ce) 4月30日 release

  1. 开放备份恢复功能: 未来无需敲命令进行恢复
  2. 接管 OBD 部署集群功能
  3. 接管 OBProxy 集群功能
  4. 安装简化
  5. 增加检查功能, 接管集群时, 添加主机时, 增加部分检查, 避免安装过程中报错


OMS 社区版(oms3.2.2-ce-bp2) 3月30日 release

社区版 CDC 支持持久化: 移植商业版功能, 需求来自浦发银行, 这个功能当前进度, 已经完成开发, 但将 liboblog 改名为 libobcdc , 涉及大量上下游协同改动, 因此有可能会延后一个版本

  1. 解决超大事物OOM 风险
  2. 提取拉取速度, 降低 限速阀值, 防止历史clog 日志太久没有消费, 而被覆盖掉


OMS 社区版(3.3.0-ce) 5月9日 release

  1. 支持 OceanBase 到 OceanBase 数据迁移和同步
  2. 支持 OceanBase 到kafka & rocketmq 数据迁移和同步
  3. 安装易用性改进


OBDeployer(1.3.0) 3月30日

  1. ARM 支持
  2. OBD 在出错的场景下打屏输出帮助链接地址


开发者中心 ODC

OceanBase 在线体验站 play.oceanbase.com 切到社区版


ob-admin 工具:

提供不打印数据的 clog 解析工具

驱动:

  1. python 驱动已经完成验证
  2. python 3.X pyMySQL
  3. python 2.X MySQL-python
  4. golang Go-SQL-Driver/MySQL
  5. Unix ODBC


sql plan monitor

可视化展示 SQL Plan, 开源流程中, 预估在下个月会开放出来


生态合作

1.CloudCanal 合作 已经完成

MySQL --> OceanBase

OceanBase --> MySQL 正在研发, 预估 下个月完成

2.通过 Flink CDC 全量及增量同步 对接 Flink CDC

3.通过 otter 双向实时同步 对接 otter 广州智通人才

4.对接南京基石数据智能运维平台 D-smart 大师问诊软件


3.1.4

内核

  1. data file 按需申请大小
  2. OBServer 内核原生支持 Prometheus 监控数据输出
  3. 扩所容时, unit 进度可查询
  4. Golang 支持 PS
  5. 多模数据库 ttl 过期数据自动删除
  6. data_dir 参数值不准确


OCP (3.4.0-ce)

  1. 白屏化安装所有工具
  2. OceanBase-operator 能够支持修改 OceanBase 配置


OBDeployer

  1. 能否在安装时启用 playground 方式
  2. 一键运行 TPC-C 测试


sql-diagnoser

  1. 诊断工具的敏捷版
  2. 可疑 SQL 诊断
  3. 一键收集和系统诊断相关 metrics
  4. 一键手机诊断日志和元数据


生态合作

  1. 2022/4 通过 Chunjun (原 flinkx )对接 Chunjun
  2. 计划每月完成一家公司对接




Q&A 环节


1、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 的存储层,绕过 OceanBase 的 SQL 层可以直接到存储层,直接提供了 KV 的这一套接口。


再者,因为 OceanBase 是用 C 和 C++ 写的,所以不存在有这种 java gc 问题。而且现在整个蚂蚁很多应用都从以前的 HBase 切换到 OceanBase 上了。我们这套 HBase 的性能,其实相对于使用最多的 HBase 2.4.6 来说,我们  scan 性能提升到2.42倍, insert 提升到1.7倍 。整个性能非常不错,我们自己用的蛮久, 稳定性有一定的保证。


2、Q:能支持 Redis 协议?

A:我们现在暂时没有计划支持 Redis。因为 Redis 是一个内存,是一个cash。坦白讲,可能我们还是拼不过 Redis 这种 cash 的速度。


3、Q:HBase 能直接读取 OBKV 吗?


A:HBase 的 client 是不能够直接去读 OBKV 的。我们会有一个 HBase 专属的 java client,可以使用,可以读取 OBKV。


4、Q:咱们有没有对 MySQL 存储过程的支持计划?

A:关于对 MySQL 存储过程的支持,我们现在商业版支持,社区版暂不支持。


5、Q:intel 支持 numa 吗?numa 好像是amd和arm的优势?

A:numa 在 OceanBase 上已经用的比较多了。而且阿里云上很多的数据库已经都开始支持了。numa  会利用 CPU 的内存本地人亲和性来提升性能。


6、Q:底层是KV?如果是读放大如何解决,以实现合并不影响线上?

A:底层不是KV的, 我们有大量优化提升读性能的,推荐看一下 。


7、Q:能简单介绍下 OceanBase 的 SQL 限流原理吗?

OceanBase 是通过在 SQL  绑定 Outline 的方式来实现的, 有一个 MAX_CONCURRENT(NUM) hint ,通过 outline 绑定到 SQL 上实现 SQL 的限流,具体可参考 。比如说你给它设置成一的时候,那在租户级别,这个 SQL 只能开一个线程跑,它的并发度只能是一。比如说这个 SQL 它的 rt 是一百毫秒的话,那它的 qps 最多只能到十。 如果 你想把这个 SQL 给限死的话,那你直接把并发度都改成零就可以了。


8、 Q:可以大致介绍下双十一大促的弹性方案吗?

简要介绍下,大促期间会使用阿里 的资源,然后利用 OceanBase 的弹性伸缩能力,把一部分副本给它弹出去,做一个横向的扩容。


9、Q:除了合并可以更新统计信息外,还有什么其他方法可以更新统计信息?

A:除了合并以外,从V3.2.1版本开始支持通过 ANALYZE TABLE 命令,收集更新统计信息,具体可参考。


10、Q:降序索引什么时候支持?

A:降序索引目前用的2.2.77版本是没有支持的。


11、Q:动态改主键什么时候支持?

A:因为 OceanBase 是索引组织表,针对目前改主键的情况,我们内部 现在 还是用 OMS 同步,即把表结构提前建好,然后把数据拷贝过去,然后再做一个在线的 rename 以实现改主键。


12、Q:提前解行锁会不会有大规模级联回滚的风险?

A:这个有可能会出现,比如说在切主的时候,那它这个事务可能会被 kill 掉,就有可能会出现大规模级联回滚。



大家也可以直接看网页  ,本次我分享的所有内容都将 直接 公布出来,放到 OceanBase github 的 discussions 板块。



OceanBase 直播我做主!

后续直播大家想听什么主题?欢迎大家在帖子下面留言。




最后的最后,您有任何疑问都可以通过以下方式联系到我们~

联系我们

欢迎广大 OceanBase 爱好者、用户和客户随时与我们联系、反馈,方式如下:

社区版官网论坛

社区版项目网站提 Issue

OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap-5