「4.0体验站」第二篇由 OceanBase 社区版深度用户、社区文档贡献者夏克老师撰写,作者有多年从事金融行业核心系统设计开发的工作经验,服务于某交易所子公司,现阶段负责国产数据库调研,近期陆续获得了 OBCA、PCTA、OGCA、DCA、GDCA 等认证,欢迎大家评论区探讨交流!
在 2022 云栖大会上,OceanBase 社区版 4.0(代号:小鱼) 正式亮相发布,其与企业版拥有同等性能,更兼容、更易用,2 分钟内即可完成快速部署,这也意味着,业内首个兼容 MySQL 的单机分布式一体化数据库正式上线。
这次发布的 4.0 版本于 OceanBase 和用户而言具有重大意义,在发布的当晚,我们就在社区收到几位老朋友的测评分享,也在多个社群内看到大家积极咨询,这让我们倍感欣慰。也正因此,经考量之后,决定在近期将选取部分新老用户朋友“4.0测评体验”陆续发布在我们的微信公众号,欢迎大家参与到OceanBase的「4.0体验站」栏目中来。
Ps:您的测评体验分享还可以同步参与我们的有奖征文哦~详情戳《更易用的OceanBase|生态工具征文大赛正式开启!》
以下为测评正文:
前两天看到 OceanBase 社区版 4.0 在 2022 云栖大会正式发布,不禁有些感慨:我关注并接触 OceanBase 已半年有余,第一次与 OceanBase 相识是通过OceanBase 第二届技术征文大赛,当时投稿了一篇题为《Hello OceanBase!开启OceanBase 二次开发》 的文章,文章最后,我对 OceanBase 提了一些建议,今天回头来看,真心想给 OceanBase 点一个大大的赞,赞 OceanBase 对用户体验的关注,赞国产数据库人砥砺前行、不负韶华的信念!
点赞 OceanBase,让反馈有回响
先回顾一下当初的建议:
近2~3个月一直在研究众多国产数据库,包括 OceanBase、TiDB、OpenGauss/MogDB、达梦等,OLTP、OLAP、HTAP 都有,从使用的角度还是想给 OceanBase 提几个小的建议。
环境搭建相对比较复杂。希望有一个一键搭建 demo 集群的小功能,方便用户快速上手;
建议提供低配版配置。分布式数据库很吃资源,对于设备简陋的小伙伴想上手,门槛较高,经常遇到一些资源方面的问题导致部署失败;
OceanBase 如何提供用户扩展接口?虽然听起来有点鸡肋,但是往往可以解决一些企业级的应用的需求,在功能上也会加分;
在企业版中,Oracle 租户驱动接口可以再丰富一些。
OceanBase 4.0,我发现的新变化
以下我将从部署、资源、扩展性、接口/驱动四个方面切入,分享我在体验 OceanBase 4.0 时看到的新变化以及建议。
▋ 更快地部署
建议1:环境搭建相对比较复杂。希望有一个一键搭建 demo 集群的小功能,方便用户快速上手。
国产分布式数据库普遍难部署,让初学者望而却步,而 OceanBase 4.0 只需两步就能完成 demo 的安装部署。由于工作原因,我在这一年接触的国产数据库不下 10 种,能分分钟就部署好的数据库很少,尤其是分布式数据库的部署往往会花费较长时间,而且经常会遇到各种问题,一些小伙伴可能在这个阶段就会选择放弃。我认为成熟的数据库产品不应该再有过去“酒香不怕巷子深”的想法,尤其是现在国产数据库“卷”的程度,已经不能再让用户穿街过巷地去寻找了。
我是如何两分钟完成 OceanBase 4.0 部署的?
步骤 1: 下载并安装 all-in-one package,OceanBase 4.0 提供了统一的安装包,有在线和离线两种安装方式。这一点相比 3.x 版本带来了巨大的变化,过去我们要分别下载 obclient, obd, obproxy, observer 等等才能完成部署,4.0 版本可以直接用all-in-one安装包安装部署。
步骤 2: 使用 obd demo 快速部署单机体验环境。相比过去的方式,4.0 变得更简单了,只要用一个命令,就可以拉起 OceanBase 社区版 4.0,更方便的是在这个 demo 环境中已经集成了 prometheus、grafana 等作为 DBA 最常用的监控工具。
评测&建议
评测: OceanBase 的安装部署过程可以达到同类竞品的一流水准,分布式数据库领域里,这几乎是我见过最简易的方式,得分:4.5 分。
建议: 整体上使用 obd demo 已经可以达到快速上手的标准,但还可以做的更好,比如:
- 可以在单机上通过 obd 部署 3 节点的集群,每个 observer 使用不同的端口;
- 使用 Docker Compose 部署 3 节点的集群(这个功能我正在做)。
以上两点需要考虑的还是资源问题。虽然 OceanBase 4.0 的一项重要变化就是小规格,但是毕竟 3 节点是 treble 了资源。
▋ 更小的规格
建议2:建议提供低配版配置。分布式数据库很吃资源,对于设备简陋的小伙伴想上手,门槛较高,经常遇到一些资源方面的问题导致部署失败。
资源问题是 OceanBase 3.X 版本的突出痛点,而 OceanBase 4.0 带来的重要变化里,有一项就是小规格。我个人习惯是在 PC 上通过 docker 或者 WSL 去搞一套环境,随手就可以玩一玩,但在 3.X 版本时显然会比较麻烦,经常会遇到由于资源不足导致启动失败的情况。
而对于 OceanBase 4.0 版本,从我的实际运行体验看:在 4C8G 的规格下基本可以正常使用(目前主流的 PC 配置一般可以达到 8C16G)。这一新变化将在很大程度上帮助更多喜欢 OceanBase 的用户随时随地搞起来,让分布式数据库的门槛变得更低。
下图是 OceanBase 官方文档中提供的部署环境建议:
评测&建议
评测: OceanBase 4.0 在规格上有了很大改进,这个毋庸置疑。但单机部署 4C16G 实际上还是有优化空间的,得分:4.0 分。
建议: OceanBase 4.0 运行时资源使用的进步就不说了,这里提两个其他资源相关的建议:
- 让源码编译,也能支持更小的规格: 作为一个开发人员,往往喜欢去撸撸源码,可能还会去提 issue 和 PR,所以经常会对源码进行编译。而编译就不是 4C8G 可以解决的了,OceanBase 编译脚本中使用了并行编译 make -j$CPU_CORES,每个 clang 编译进程最大使用内存约 2G,按照我 PC 的配置 12C16G 进行编译的话(12*2=24G),内存使用会超出实际物理内存大小,经常会发生 OOM,导致编译失败,不得不手动修改编译脚本,减少并行编译的进程数量;
- 源码编译时间可以再缩短: 相信咱们 OceanBase 内部开发的服务器配置一定很好,或者大部分编译是通过持续集成来做的,可能不一定会遇到编译时间过长的问题,但作为一个开源的项目,一定是要面向社区用户的,所以一次完整编译花费 1~2 小时的时间(和编译boost库或linux内核的时间差不多)对用户而言是不太友好的。我建议优化编译时间可以通过合理规划模块层级,避免重复引用头文件。此外,目前看 OceanBase 代码结构中头文件中引用了很多依赖头文件,是否可以通过“类前置声明”等手段,把依赖头文件尽量放在 .cpp 中。个人觉得编译时间优化还是有很大的空间。
此外,OceanBase 4.0 在扩展性和接口/驱动方面仍有进一步优化改善的空间。
▋ 期待更好的扩展性
建议3:OceanBase 如何提供用户扩展接口?虽然听起来有点鸡肋,但是往往可以解决一些企业级的应用的需求,在功能上也会加分;
这个问题目前在我看来 OceanBase 4.0 的突破并不明显,该功能实际上是源于企业的真实业务需求,在金融行业和电信行业我都实际开发过这类扩展数据库的代码。无论是 Oracle 数据库,还是现在很多国产数据库基本上都支持了这个功能。
以 PostgreSQL 系的国产数据库举例,基本上都继承了 PostgreSQL 高度扩展的特性,给用户提供了更多的可能性。PostgreSQL 的插件数以百计,是活跃社区的主要力量之一,通过插件,用户可以间接实现一些对 Oracle 的兼容改造、可以实现数据库的监控工具、可以实现 CDC 工具、可以实现外部表的访问——FDW 等等。
当然,对于开源数据库来说可以通过修改源码的方式增加用户定义的函数,就像《Hello OceanBase!开启OceanBase二次开发》 这篇文章里面提到的方法,但是这种方式有三个比较明显的弊端:
- 没有标准化的接口,需要修改多处代码,工作量大,实现相对复杂;
- 修改是浸入式的,如果版本更新,需要重新合并用户自行修改的代码,升级成本高;
- 往往这种需求源于企业级应用,大多情况是使用企业版的 OceanBase,企业版不开源,方案不可行。
▋ 期待更多的接口/驱动
建议4:企业版中 Oracle 租户驱动接口可以再丰富一些。
在 OceanBase 社区版中,MySQL 租户的驱动还是很丰富的,基本上兼容了 MySQL 协议的所有接口。我在这里主要想说说企业版的一些问题。
在企业级应用中,OceanBase 4.0 提供了目前最主流的三种驱动,即 Java、Python 和 C,其中 Python 是通过 JDBC 来实现的,并没有原生 Python 驱动。虽然,目前企业主流的开发语言还是 Java 和 C/C++,但是只有这两种语言是无法满足企业需求的,像 Golang、Rust、JavaScript 等语言已经成为现代企业信息化建设开发语言的重要组成部分,OceanBase 应当提供更丰富的接口/驱动,方便用户使用。
OceanBase 4.0,值得期待和选择
经过近一周的体验,我感知到的 OceanBase 社区版 4.0,是一个充分倾听用户诉求的版本,可以说是利用社区和生态的成功案例。 不过作为开源项目,OceanBase 仍有需要改进的地方,比如,开源社区本身是要吸引更多的开发者加入,宣传产品的同时要让更多的用户,尤其是开发者自发地向社区做出贡献;同时可以设立更多的 SIG 组和用户组(比如用户需求的 SIG 组、金融行业的用户组等等),用户可以有针对性地向社区提出需求,有能力的用户(或组织)甚至可以提交自己实现的功能代码(如果插件功能提供了,用户也可以实现自己的插件来丰富 OceanBase 的生态)。可能是我要求有些苛刻了,不过坦白讲,OceanBase 4.0 确实给了我很多惊喜和对 OceanBase 未来版本演进的期待。
最后,向国内包括 OceanBase 在内的所有砥砺前行的数据库厂商致敬!也向包括我在内的所有对国产数据库要求苛刻的用户致敬!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。