ODC,是另一个 Navicat 吗?

简介: OceanBase Developer Center 项目组核心成员,负责 ODC 开发者工具的整体研发工作。曾做过 TSDB 存储引擎、SaaS 安全软件,对数据库协同、研发效率、数据安全、云原生架构等有浓厚兴趣。

最近和市场部的同学聊天,提了一个问题给我: OceanBase 为什么要做一个类似 Navicat 的数据库开发工具?这个问题很好,不仅是用户,其实作为一个产品的实现者,在早期启动 ODC 的时候,类似的问题同样也是我们的困惑。


比如,作为一个创业阶段的数据库团队,为什么我们要投入这么多的成本去做一个数据库开发工具?为什么 ODC 桌面版需要做成 Web 架构?为什么 ODC Web 版本需要依赖 OceanBase 作为元数据库?本文会介绍 ODC 诞生的原因,回答为什么 ODC 不是另一个 Navicat,同时也分享 OceanBase 对数据库工具生态的一些想法以及对 ODC 未来的思考。



数据库厂商自研开发工具可能并不是一个最佳选择,很多做 MySQL 兼容数据库厂商并没有选择去自研一个图形化客户端,比如 AWS Aurora 推荐使用 MySQL Workbench,TDSQL 推荐使用 SQLyog、Workbench,NewSQL 数据库推荐 DBeaver、Navicat、Workbench。

为什么这么多做 MySQL 兼容的数据库厂商都没有自研数据库开发工具?基于 MySQL/PostgreSQL 内核做深度自研的数据库,可以天然的兼容 MySQL/PG 相关的生态工具,帮助用户通过更加熟悉的工具换到新的数据库环境,在为用户提供平滑切换易用性的同时,也减少了数据库团队自身的研发投入,这个可能是最有性价比的路线选择。

ODC 诞生于一个非常朴素的想法,OceanBase 在开始的第一天就坚定选择全自研路线,这个路线决定早期阶段 MySQL/PostgreSQL等大家熟知的第三方客户端工具,无法“天然”的支持 OceanBase,所以,在研发数据库的同时,我们决定要为用户提供一款简单、好用、易用的开发者工具。

很多用户知道,OceanBase 提供了两种兼容模式。OceanBase 的多租户架构,创建租户时候支持 MySQL 兼容模式和 Oracle 兼容模式,第三方客户端在早期很难做到 OceanBase 的全面兼容。比如 OceanBase MySQL 兼容模式,可以做到网络协议的兼容,这意味着用户可以通过 MySQL 兼容的客户端连接。但受限于系统视图的特殊性,无法满足 OceanBase 用户全功能管理诉求。


对于 Oracle 兼容模式来说,在 OceanBase 产品早期阶段,缺少第三方图形化客户端工具来帮助用户连接 OceanBase Oracle 模式。本质原因是 Oracle 兼容模式是语法和字典表兼容而不是网络协议兼容,需要使用 OceanBase 客户端驱动(比如 Java 使用 JDBC)才可以连接 Oracle 模式。所以大家熟知的 Oracle 客户端,比如 PL/SQL Developer,没有办法连接 OceanBase Oracle 租户。


从功能层面来说,Oracle 兼容的复杂度比 MySQL 兼容要高很多,不仅仅是数据库内核需要更多研发投入,配套的工具产品也是一样。比如 PL/SQL Developer,Oracle 有丰富的内置程序包,支持自定义类型、PL 支持编译、调试等大量功能都需要有开发工具来配套,这些功能对第三方生态工具适配带来了非常高的挑战。需要数据库内核团队和生态工具团队更加紧密的协同完成研发,比如 PL 调试,没有 GUI 客户端这个功能的生命周期就不完整。

在这样的情况下,OceanBase Developer Center (ODC 开发者工具)诞生了。


先给出结论,ODC 并不是另一个 Navicat。ODC 提供了很多和 Navicat 、PL/SQL Developer 类似的功能,比如高效的 SQL 编写、查询结果的编辑处理、数据导入导出、可视化创建表、视图、PL 等对象、查看数据库状态、生成测试数据、PL 编译和调试 等等。作为一个数据库图形化客户端,ODC 已经能够满足大多数 OceanBase 开发者的需求。从这些功能来看,ODC 就是另一个功能范围更小的 Navicat,支持更少的数据库类型,支持更少的功能,准确的说目前 ODC 只支持 OceanBase 数据库以及 ODP Sharding 逻辑库中间件,作为数据库图形化客户端 ODC 支持的功能数量大约是 Navicat 和 PL/SQL Developer 的 30%~40% 。
但是上述功能只是 ODC 的一部分,ODC 并不仅仅是一个数据库图形化客户端,从 ODC 的完整功能来看,图形化客户端功能只占了大约三分之一。我们认为 ODC 不是另一个 Navicat 的最主要原因是产品的理念和要解决主要问题的差异。
回到本文开头我的一个困惑是 ODC 为什么是 Web 架构的?这其实是源于 ODC 产生诞生的背景,最初是在蚂蚁集团内部使用的一个平台,并不是一个客户端工具,这个点其实大家也能更容易理解为什么 OceanBase Developer Center 这样的产品名称会用于一个数据库开发工具。
蚂蚁集团经过十几年的技术演进,在数据库开发这个方向已经有一套非常成熟的协同模式,DBA 和 Developer 的占比大概是 1:600,大约 20 个 DBA 支撑着全站 10000 量级的线下线上应用,其中的核心应用覆盖 10 亿量级的用户规模。在这样的应用场景下,数据库的安全稳定运行至关重要,而如何实现数据库的安全稳定运行依托于研发规范和风险控制的系统化,而实现这一切的核心平台就是 ODC 。
OceanBase 商业化之后, ODC 也给到更多行业的客户使用,我们发现蚂蚁集团遇到过的问题在客户场景也同样存在,积累的经验也能够帮助客户解决问题。
回顾起来我们认为其实是身处这个数据快速增长的时代,很多问题都是共性的,蚂蚁集团的场景可以认为是近十几年来数据规模快速增长的一个典型示例。数量规模的快速增长,实际的构成是数据库实例数量和单库数据库容量的快速增长,这带来了数据库稳定性的风险,“烂” SQL造成的危害更严重了,冷热数据分离也变成数据存储架构的必选项。
伴随着数量规模的快速增长,行业的从业人员也在快速增长,但是不同角色并不是等比例去增长。在十几年前,一个 Oracle DBA 管理的数据库实例规模在 25 个左右,总数据规模在 5TB 左右。那么到现在的数据规模,你会发现如果按照之前的模式,DBA 数量是远远不够的,这对数据库开发协同带来了新的挑战。再有随着数据不断增长,数据违规使用、泄露带来的问题也逐渐被重视,近几年政府和行业逐渐完善相关法律法规,蚂蚁集团身处被严格监管的行业,在数据合规方面也积累了大量的经验。
上述问题和挑战总结起来包含以下三大类:系统稳定:数据量不断增长,对数据库稳定性带来风险,“烂” SQL 的代价比以往更大、数据备份恢复压力凸显;协同效率:数据库数量不断增长,DBA 工作负担越来越重,权限配置和 SQL 审核效率亟需提升;数据安全合规:政府和行业监管对数据安全合规越来越严格,企业本身对隐私数据保护也越来越重视,缺少有效的数据安全防护机制,合规风险之雷必须尽快排查。

ODC 并没有直接照搬内部系统,而是以蚂蚁集团经验为基础,并结合各行业客户的场景把已有的技术和经验转化为产品化方案。之所以这么做一方面是技术层面的原因,作为内部系统可以依赖大量中台基础设施,而支持私有化部署的商业产品则首先要去除中台依赖,另一方面是产品层面,从一个内部系统到商业化产品有一个重要的过程是做易用性提升。目前,ODC 已经解决的最主要痛点是权限管控效率、数据库变更风险控制以及数据安全合规方面的问题。并且随着这些年 OceanBase 在各个行业客户数量的增长,在金融、运营商、电商、政务、能源等很多行业的大型客户得到了验证。
下图是 ODC 产品架构,可以看出 ODC 的重点功能是在于如何安全、高效的协同开发,并且更加专注于针对 OceanBase 的适配。产品功能不仅支持私有云场景,同时也在 OceanBase Cloud 提供服务,满足不同场景客户对数据库开发效率和变更风险管控的需求。从用户视角看,ODC 作为数据库图形化客户端提供了一个 SQL 开发效率工具,作为数据库开发协同平台还帮助提升 DBA 和开发者的协同效率,保障数据库稳定运行,符合监管合规要求。

image.png

一个成熟好用的数据库应该有怎样的数据库工具和应用生态?简单来说各种各样的支持数据库的生态工具越多越好,越易用越好,包括商业的开源的,包括 数据研发、报表、应用开发 等通用工具,包括 ERP、OA 等通用应用,包括各行各业的解决方案等等。换位思考,站在 ISV、有自研能力的客户角度,需要的也不仅仅是成熟完整的产品,同样也需要有丰富的基础类库和 API,能够以较低的成本把一些数据库厂商才掌握的使用方式集成到 ISV/客户自己的产品/解决方案中去。
如何做好数据库开发工具生态,作为数据库厂商我们需要回答一个问题  “原厂做大一统还是让第三方产品更好用” ,显然让其他产品更好用是更加有效的一种方式。
现阶段第三方生态工具支持 OceanBase 的产品从数量和支持的功能范围来说还不能满足 OceanBase 客户的需求,我们在很多基础功能方面仍然只能选择自研工具产品来支持。当然也不是说未来 OceanBase 自己就不做 ODC 了,Oracle 的 SQL Developer、微软的 SSMS 都提供了完整的数据库开发运维功能,原厂提供基本的工具能力是必须的,这也是给开发者、ISV 和客户对 OceanBase 数据库的产品能力做一个示范。
我们也看到,除了原厂产品,还有比如 PL/SQL Deverloper 事实上成为了国内 Oracle 客户的首选,Redgate 为 SQL Server 提供了一系列企业级数据库监控、数据安全等功能,在 MySQL 已有数十种开源免费客户端广受欢迎的同时,商业化的 Navicat、DataGrip 也受到了大量开发者的关注和喜爱。

实际上我们也在不断投入开发者生态,比如通过给 DBeaver 社区贡献代码来支持 OceanBase 达到了基本能用的程度,类似的还有 Flyway、Canal、Chunjun 等等。除了开源软件也有更多商业软件支持 OceanBase,比如 Navicat 去年开始支持 OceanBase MySQL 模式,2023年3月1日发布的 Navicat 16.1.9 开始支持 OceanBase Oracle 模式,Navicat 的用户连接 OceanBase 有了另一个选择,这里也表达对 Navicat 感谢,我们后续也会更紧密的合作。适配一款新的数据库过程中其实遇到的问题还挺多的,接下来我们会投入资源来让适配 OceanBase 的过程更加简单,期待越来越多的生态工具能够适配 OceanBase,并且是深度适配,支持尽可能多的功能。
总的来说 OceanBase 在工具生态领域想做的一些事情,就是让开发者使用 OceanBase 更简单,也让相关生态工具适配 OceanBase 的过程更加简单。

OceanBase 开发者大会将会于 3 月 25 日在北京召开,在下午的「数据管理与服务技术专场」,我将分享的主题为《数据库协同开发的现状和发展趋势》,聊聊 ODC 的未来和思考,期待在现场和大家面对面的交流。如果您对此感兴趣,欢迎扫描下方二维码或点击文末“阅读原文”报名 OceanBase DevCon 2023。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
7月前
|
存储 API 数据库
阿里云ESSD AutoPL云盘解析:性能、场景适配与计费指南
阿里云ESSD AutoPL云盘以ESSD云盘为基础构建,它在延续ESSD云盘原有各项功能与卓越性能的基础上,创新性地实现了云盘容量和性能的分离。用户在为ESSD AutoPL云盘配置存储容量时,能够依据实际业务需求,灵活自定义云盘的预配置性能以及性能突发模式。本文为大家介绍ESSD AutoPL云盘的特点、适用应用场景、具体规格、所支持的实例规格族、计费规则,以及配置和计费方面的示例,以供选择参考。
356 3
阿里云ESSD AutoPL云盘解析:性能、场景适配与计费指南
|
JavaScript 前端开发 物联网
全面解析鸿蒙相关概念:鸿蒙、开源鸿蒙、鸿蒙 Next 有何区别
程序员晚枫近期研究了鸿蒙系统相关概念,主要包括 OpenHarmony、HarmonyOS 和 HarmonyOS NEXT。OpenHarmony 是开源项目,适用于物联网设备;HarmonyOS 由华为开发,兼容安卓应用,用于手机和平板等;HarmonyOS NEXT 剔除安卓生态,采用纯鸿蒙技术,专注原生应用开发。三者在技术架构、应用场景和开发工具上各有特点,共同推动鸿蒙生态系统的发展。
3122 5
全面解析鸿蒙相关概念:鸿蒙、开源鸿蒙、鸿蒙 Next 有何区别
|
6月前
|
存储 弹性计算 关系型数据库
2026阿里云服务器地域选择指南:节点特性与适配策略解析
阿里云服务器在全球布局 29 个地域、92 个可用区,覆盖中国内地、海外及中国香港等关键区域,不同地域在网络延迟、产品兼容性、合规要求上差异显著。地域选择并非单纯以 “速度快” 为唯一标准,需结合用户分布、业务架构、合规需求等多维度综合判断。本文结合官方技术规范与实测数据,详解地域选择的核心逻辑、节点特性及典型场景适配方案,为业务部署提供客观参考。
|
7月前
|
弹性计算 数据库连接
阿里云服务器ECS按流量收费标准,公网带宽1GB流量0.8元/GB(中国大陆地域)
阿里云ECS按流量计费,中国大陆多数地域0.8元/GB,青岛0.72元/GB,中国香港1.0元/GB,美国0.5元/GB,日本0.6元/GB,韩国0.8元/GB。仅公网出方向流量收费,内网及入向流量免费,支持设置峰值带宽,按小时结算,多地域价格差异明显,适合流量波动大的业务场景。
1822 2
|
8月前
|
安全 开发者 Docker
Docker
Docker以轻量级容器技术重塑软件开发,实现应用构建、交付与运行的一体化。它打破环境差异,提升资源利用率,推动微服务与云原生架构发展,构建高效CI/CD流水线,成为现代软件开发的核心基石。(238字)
|
NoSQL 网络安全 Redis
RedisDesktopManager免费软件下载,Redis桌面管理器(又名RDM),redis管理器
Redis桌面管理器(RDM)是一款支持Windows、Linux和MacOS的开源Redis数据库管理工具,提供易于使用的GUI界面,支持SSL/TLS加密、SSH隧道及云服务集成。本文档介绍了RDM的安装方法,并详细列出了Redis常用命令分类教程,包括键操作、字符串、哈希、列表、集合、有序集合、发布/订阅、事务及服务器管理等核心功能,帮助用户快速上手Redis开发与管理。
3677 1
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
974 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
存储 机器学习/深度学习 人工智能
【AI系统】完全分片数据并行 FSDP
本文深入探讨了AI框架中针对权重数据、优化器数据和梯度数据的分布式并行实现,特别是在PyTorch框架下的具体方案。文章首先回顾了通用数据并行和分布式数据并行的概念,重点讨论了同步与异步数据并行的差异。接着,文章详细介绍了如何在PyTorch中实现弹性数据并行,特别是完全分片数据并行(FSDP)的机制,包括其如何通过分片模型状态和剩余状态来减少内存消耗,提高训练效率。此外,文章还探讨了混合精度训练、损失缩放和内存消耗估算等关键技术,为理解和实施高效的分布式训练提供了全面的指导。
1083 9
【AI系统】完全分片数据并行 FSDP
|
机器学习/深度学习 人工智能 算法
AI在医疗影像诊断中的应用与未来展望####
本文深入探讨了人工智能(AI)在医疗影像诊断领域的最新进展、当前应用实例及面临的挑战,并展望了其未来的发展趋势。随着深度学习技术的不断成熟,AI正逐步成为辅助医生进行疾病早期筛查、诊断和治疗规划的重要工具。本文旨在为读者提供一个全面的视角,了解AI如何在提高医疗效率、降低成本和改善患者预后方面发挥关键作用。 ####
|
存储 Java 数据库
Java “ClassCastException”解决
Java中的“ClassCastException”是在运行时尝试将对象强制转换为与其实际类型不兼容的类型时引发的异常。解决方法包括:1. 检查类型转换前使用`instanceof`关键字进行类型判断;2. 确保对象的实际类型与目标类型一致;3. 审查代码逻辑,避免不必要的类型转换。
1415 4