我们每个月都会和大家展开一次社区进展的汇报沟通会,希望通过更多的互动交流让OceanBase 开源社区更加透明,实现信息共享,也希望能营造更加轻松的氛围,让大家可以在此畅所欲言、答疑解惑。如果您对我们的社区有任何建议,欢迎在 GitHub 上提 Issues 或 PR ,也欢迎大家称为 Contributor,共同参与社区的建设。
本月Newsletter分为以下几个部分:
- OceanBase 社区版产品规划及研发进展
- OceanBase 社区8月内容概览
- OceanBase 社区8月精彩活动及9月活动预告
- OceanBase 社区用户问题精选
OceanBase 社区版产品规划及研发进展
OCP发布3.3.0-CE BP1版本,支持白屏安装,支持ARM的镜像,优化了OBD接管的体验,并完成了一些bugfix;
OBD发布1.5.0版本,完善开发者模式下的命令(包括支持reinstall,完善mysqltest等);
oblogproxy 发布1.0.3版本,OBCDC升级到3.1.4版本,修复鉴权失败的问题;
本月组织了8场活动(包括直播):2022 OceanBase 年度发布会(1场)、从0 到1数据库内核实战教程(3场),meetup(4场,涉及郑州、北京、杭州、成都);
OceanBase 社区版发布节奏如下:
每2年一个大版本 release,每3个月一次 feature 版本, 每个月一个 bug fix 版本( bp 版本)。
- 大版本发布即为架构发生升级, 版本升级类似 MySQL 5.7 升级到 MySQL 8.0, 需要做数据迁移才能完成升级。
- feature 版本即为发布了众多 feature 或大 feature , 本地手动冷升级(本地重启)或者通过 OCP 热升级(不停服务)。
- bp 版本即为纯 bug fix 版本, 版本升级直接替换 binary 即可, 可以使用 ODP 升级或使用 OCP 热升级。
产品进展
3.1.5版本(预计2022年12月底)
https://github.com/oceanbase/oceanbase/milestone/6
4.0版本(估计2022年10月底完成开源),4.0实际上包括大量的功能改进,因为版本尚未完成开源,在milestone上没有体现:
https://github.com/oceanbase/oceanbase/milestone/3
OceanBase 社区8月内容概览
本月推荐
SQL 改写系列八:连接消除
SQL 改写系列九:外连接转内连接的常见场景与错误
面向HTAP数据库的基准评测工具研究进展
携程经验分享:OceanBase 拟真压测系统深度解析
高性能数据访问中间件 OBProxy(三):问题排查和服务运维
高性能数据访问中间件 OBProxy(四):一文讲透连接管理
内容专栏
- 专题:SQL 改写系列,已完成 9 篇
- 专题:OBProxy 系列,已完成4 篇
- 专题:OceanBase 源码解读,已完成 15 篇
- 专题:用户实践案例,已完成10篇
- 专题:OceanBase 存储层代码解读,已完成3篇
- 专题:社区故事,已完成 4 篇
更多内容可在社区专栏了解。
OceanBase 社区8月精彩活动
8月精彩活动
对话ACE第四期:分布式数据库未来发展的挑战和机遇
内核实战教程第一期|数据库系统概述,带你走近 OceanBase 研发环境!
内核实战教程第二期|带你揭开数据库存储结构的神秘面纱
内核实战教程第三期|索引如何提高查询效率,原理是什么?
内核实战教程第四期 | 带你走进数据库 SQL 引擎
9月活动预告
济南Meetup:国产分布式数据库一体化架构演进及实践
《从0 到1数据库内核实战教程》将继续完成4期;
9月1日:SQL 引擎概述(上)
9月15日:SQL 引擎概述(下)
9月22日:事务引擎概述
9月29日:内核基础模块
了解更多活动请戳此链接。
OceanBase 社区用户问题精选
问题1:我使用django进行模型迁移,在执行一句sql时异常。
执行SQL:ALTER TABLE xxx ADD COLUMN parent_id integer UNIQUE
异常: 【1235 - alter column add index not supported】
该语句在mysql 8.0.16上执行正常,请问这个问题是否有办法避免?
问题解析:加了unique 约束会当成唯一性索引,目前 OceanBase 社区版不支持,尝试下能否去掉 unique 关键字
问题2:OB主键自增的策略不是每一个表唯一对吗?
问题解析:自增是针对单个表,不是所有表全局的自增(全局唯一)
两次写入的是不同的分区,就会出现自增跳变的现象。需要说明一下,是在每个分区上是单调递增的,比如:
insert. p1 1
insert p1 2
insert p2 1000001
insert p2 1000002
此时 insert p1 不会是 3
有个变量 :auto_increment_cache_size 可以看下
问题3:在 tidb 中他们是以 region 来 raft 协议保持副本的,当创建一个表时候如果表的ID是顺序增加的话就会产生写热点。tidb建议将 id 设置为 auto_random,咱们oceanbase 是怎么解决这个问题的?咱们的 oceanbase 是以分区为单位的 paxos 多副本,我觉得一个副本 id 也应该是连续的,也会有写热点
问题解析:热点问题有两类。一是业务数据特点分布不均匀导致。OceanBase 的分区表可以用 hash 分区打散这个。一级分区不够可以选用两级分区。二是业务访问不均匀导致。比如说大账户。记录只有一笔,但是被高频访问。这个任何数据库都解决不了。只能采用一些缓解方案。比如说数据库层面读写分离、数据库前端加 cache,业务排队限流降低热点行访问。
问题4:一个集群内如果出现多版本的 server 会有什么问题吗?比如一个 3.1.2 的集群,我们加了一台 3.1.4 上去,通过加新版本机器的方式做unit迁移然后来达到升级的目的是否可以呢。现在碰到部分比较大的集群,数据量很多,迁移速度慢导致升级进度很慢。所以在思考这方面的可能性。
问题解析:比如在线升级期间,肯定是会存在这样的情况的,理解应该没有问题。通过加新版本机器的方式做unit迁移做升级的方式目前没有这样测试过,可以看看手动 unit 迁移
https://open.oceanbase.com/docs/observer-cn/V3.1.4/10000000000450090
更多用户问题及答疑请参阅GitHub。