暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

首度公开!OceanBase 开源负责人纪君祥聊 社区版 2022 Roadmap

原创 OceanBase数据库 2022-04-10
1124

自从 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 掉,就有可能会出现大规模级联回滚。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论