ODC现已开源:与开发者共创企业级的数据库协同开发工具
OceanBase 开发者中心(OceanBase Developer Center,以下简称 ODC)是一款开源的数据库开发和数据库管理协同工具,从首个版本上线距今已经发展了三年有余,ODC 逐步由一款专为 OceanBase 打造的开发者工具演进成为支持多数据源的企业级的数据库协同开发工具,目前产品能力已覆盖 SQL 开发、变更风险管控、数据安全合规、数据生命周期管理等多个方向。
8 月 18 日,ODC 正式开源,开源协议采用 Apache License 2.0,欢迎大家加入ODC 开源社区。
在企业级的数据库协同开发中,安全和效率常常成为团队的协作难题。ODC的目标是解决这种安全与效率之间的矛盾。过去的一年中,我们投入了大量精力来构建协同管控能力,引入了研发与运维融合的理念,以及基于项目维度的协同管控方式,同时提供了数据脱敏、数据生命周期管理等一系列的安全合规和效率提升能力。接下来,将围绕刚刚发布 4.2.0 版本,简要介绍几个重要的方向。
▋ 跨终端协作:随时随地高效 SQL 协同开发
在企业级的应用场景中,SQL 协同开发和数据管理往往涉及到使用不同操作系统(Linux、Windows、Mac)的开发人员和数据库管理员。然而,这样的多样性也常常带来了协同合作的挑战,因为不同操作系统之间的差异可能会阻碍高效的团队合作。面对这一痛点,用户需要一种能够无缝跨平台的解决方案,以确保各种操作系统的用户都能够无障碍地参与到协同开发和数据管理中。
正是在这个背景下,ODC 通过现代 Web 架构为用户提供了跨终端的 SQL 开发体验,使得无论您使用的是 Linux、Windows 还是 Mac 操作系统,都能轻松参与到协同开发中。同时提供超过 25 项开发功能的强大支持,从 SQL 执行、对象管理、数据查看与编辑,甚至到 PL 调试、数据库运维、数据生成等企业级的特性,让协同变得更加高效而无缝。SQL 开发能力是 ODC 一直在建设的能力,目前该能力已经覆盖了 SQL 执行、PL 生命周期、对象管理、执行分析、数据导入导出、数据生成、数据库运维七个方向。
此外,最新的 ODC 4.2.0 版本全面升级了 SQL 开发模块的产品形态,同时提供了以下新能力,包括:
-
支持在 SQL 窗口内切换数据库,让用户可以方便地复用 SQL 窗口内容;
-
优化了 PL 调试的参数输入,支持各种入参的 PL 进行调试;
-
加强了数据库导出能力,支持导入兼容 pl/sql developer 的导出内容;
-
丰富了执行分析能力,支持4.0及以上版本的 OceanBase 查看 SQL 层面的全链路诊断。
▋ 企业级风险控制:守护 SQL 开发过程的每一次变更
当一个企业的开发团队在 10 人以内的时候,或许可以通过信任和实时沟通来控制数据库的变更风险。但是当团队规模扩大时,团队内各个成员的工作职责将会细分。比如业务可能会有多条分支,每条分支都有对应的研发、研发负责人、测试、测试负责人、DBA 等等,依靠原始的沟通方式将很难控制变更风险。
数据库是公司的核心资产,DBA 需要对数据库的稳定负责,同时项目组内的所有参与人都应该为数据库中的数据负责。但由于各个角色的专业技能及对业务理解的差异,会导致非常容易好心办坏事,可能一不小心就改错了字段或删错了数据。
面对这种情况,DBA 可以选择通过所有涉及数据库的变更都自己来操作以控制变更风险,但是这势必会导致 DBA 的工作负载过高。为了保证这些工作能按时完成,势必要增加更多的 DBA,这无疑增加了项目的成本。同时 DBA 是一个非常有技术含量的岗位,他们应该把精力投入到更有价值的地方而不是耗费在频繁、单调的变更上。
假设有这样一个平台,当一条变更发起时,先经过了解业务的同学把控、再经过业务负责人审批、再经过数据库负责人把关、再经过安全负责人审核,到最后执行的时候,这条变更的风险是不是有效地得到了控制呢?答案是肯定的,而 ODC 就是这样一个平台。
有新建项目权限的用户登录 ODC 后可以根据业务线新建项目。项目创建成功后,项目负责人需要将项目组同学都加入到该项目中并给大家分配角色。同时项目负责人还需要将该业务线用到的数据库也都加入到项目里。到这一步一个协作单元基本就构建成功了。
项目成员发起变更时首先会经过 SQL 规范检查,检查通过后再经过审批流定义的节点审批,所有节点通过后才会真正地去执行。ODC 内置了覆盖 DDL、DML、DQL 语句的开发规范,用户可以根据业务实际情况自行调整开发规范。SQL 规范检查可以自动地拦截不符合规范的变更,减少人为介入,能极大提升变更参与人的工作效率。同时 ODC 支持根据变更发起的环境、任务类型、数据库名称、SQL 检查结果等定义审批流程。ODC 的变更管控覆盖了所有可能的场景,包括 SQL 窗口、数据变更、数据出库等,以保障变更管控的全面性。
ODC 提供了全场景的风险控制能力,通过内置全面的风险控制,覆盖 SQL 开发过程的全部场景,通过访问权限、变更审核、稳定变更三个层次递进风险控制,保障生产数据库变更过程稳定、高效、可追溯。针对企业级变更管控,ODC 也提供了基于项目的协同和变更审批流程,通过 SQL 检查规则、SQL 窗口规范、风险等级识别定制符合实际业务情况的管控规则,实现数据库研发规范产品化,帮助用户降低配置成本提升协同效率。
▋ 优化数据流程:自动数据生命周期管理
随着业务长时间运行,业务库中的历史数据会越来越多。越来越多的历史数据会给业务库带来以下两个方面的负面影响:一是业务库的性能可能会因为业务表数据量太大而导致急剧下降。二是由于数据的增长对应的存储成本也会不断增加。为了解决这个问题,ODC 提供了三种解决办法。
第一种解决办法就是数据清理。如果过期的历史数据业务不再需要了,用户可以在 ODC 上发起数据清理工单,定义清理策略。任务发起成功后,ODC 会按照用户的要求定期清理表中的数据。
第二种解决办法是数据归档。如果过期的历史数据业务还是需要的,那么就需要做冷热数据分离。将表中的冷数据定期迁移到归档库中。用户需要提前准备好归档库,然后再在 ODC 上发起数据归档工单,定义归档策略。任务成功发起后,ODC 就会按用户要求进行冷热数据分离。
第三种解决办法是分区计划。这个解决办法适用于 range/range column 类型的分区表,ODC 提供了分区新建和分区清理能力。用户在 ODC 上发起分区计划工单,可以批量选择需要进行处理的表,定义分区策略。任务成功发起后,ODC 会按照用户的定义,定期地去清理和创建分区。
ODC 致力于优化企业的数据流程,实现自动化的数据生命周期管理,从而提升数据处理效率和质量。在实际操作中,ODC 提供了全面的冷热数据分离策略,通过直观的界面和工具,使开发人员能够轻松地将数据按照保留时长清理或归档,仅需短短 5 分钟,便可构建起您的冷热数据分离系统。此外,ODC 还支持高效的自动化分区维护功能,能够批量清理和创建分区,有效减轻数据库管理员(DBA)的工作负担,使自动化分区表的维护过程变得更加高效,确保数据库在可用性和性能方面保持最佳状态。
不仅如此,ODC 还提供了强大的 SQL 计划任务能力,特别适用于企业场景中的数据归档、数据清理、报表生成等任务。ODC 能够让您轻松创建、管理并自动执行 SQL 计划任务,从而保障用户的周期计算任务能够顺利执行,确保企业数据处理的稳定性和准确性。通过这些能力,ODC 致力于提供一体化的数据生命周期管理方案,从而为企业的数据流程带来更高的效率和优化。
▋ 确保安全合规:可信赖的全场景敏感数据保护
近年来国家针对个人信息安全的法案越来越多,相应地操作审计和隐私数据保护也越来约重要。针对操作审计,ODC 在很早之前就提供了操作记录能力,用户在 ODC 上的操作均会录入到该模块中。
常见的隐私数据有用户的身份证号、手机号、家庭住址等等。这些隐私数据是业务正常运行的基础,无法从业务库中的剥离。为了保证用户的数据不泄漏,必须要严格限制业务库的访问。但如果真的完全限制了势必又会引发协作效率问题。如何保证业务开发效率的同时又能保证隐私数据安全呢?ODC 给出了解决方案:数据脱敏。
ODC 支持对数据库中敏感的字段进行脱敏处理。如用户的电话号码,真实数据是 1300685abcd,使用 ODC 脱敏后可以是 130****abcd。ODC 的脱敏技术应用在了两个方面:第一就是用户的实时查询,用户在 ODC 上访问的敏感数据,展示的都是脱敏后的结果。第二就是数据出库,用户从 ODC 往外导数据时,但凡涉及到敏感数据,默认导出的都是脱敏后的数据。
目前 ODC 支持单条、批量扫描添加敏感列。若业务库中仅有几列敏感数据,可以选择手动单条添加。若业务库中敏感的数据非常多,可以配置识别规则,批量扫描出敏感列,有效提升添加效率。未来 ODC 还会提供更加智能的敏感数据保护能力,比如自动发现敏感数据,敬请期待。
ODC 将敏感数据的保护放在首要位置,为企业级的场景提供了可信赖的全场景敏感数据保护,确保用户的数据安全合规。通过数据隐私保护能力,安全管理员可以根据需要配置敏感数据规则和脱敏算法,确保敏感数据的绝对安全。即便是数据库管理员(DBA)和开发人员,经过配置后也无法直接接触敏感数据,从而极大地降低了数据泄露的风险。这种严格的数据隐私保护机制,使得企业的敏感信息在任何时候都能得到最大程度的保护。
全场景脱敏覆盖则是 ODC 在数据保护方面的又一亮点。ODC 的数据脱敏不仅适用于静态场景,更支持动态场景。无论您是在进行表数据查看、SQL 查询、结果集导出,还是数据导出,ODC 都能提供高效的数据保护。这意味着在数据处理的全过程中,敏感数据都能得到保护,从而使得企业数据的安全性得到了全方位的保障。通过这些能力,ODC 为企业提供了全场景的敏感数据保护,降低数据泄露风险,确保数据的安全和合规性。
▋ 流程与工具融合:0 代码将 ODC 与您的协同流程无缝连接
在协同流程与工具的融合方面,ODC 可以帮助用户通过 0 代码的方式将其与现有协同流程无缝连接,帮助企业实现更高效的协同工作。ODC 提供了多样的系统集成能力,这些系统集成功能包括单点登录(SSO,OAuth2/OIDC)、审批集成、SQL 审核集成、堡垒机集成、审计集成等。通过这些集成功能,ODC 能够涵盖企业管控集成的几乎所有场景,确保您的现有流程和策略能够无缝地与 ODC 结合,实现协同工作的高效性和一致性。
另外,ODC 还提供了灵活易用的集成配置功能,使得将 ODC 集成到您当前的数据库开发协同工作流程中变得更加简单。您可以轻松地通过 ODC 适配已有系统的API,而无需进行任何代码改动。这意味着您无需改变已有的系统架构,就能够高效地将 ODC 的优势与功能引入现有流程中,为您的协同工作注入全新的动力。通过这种灵活易用的集成配置,ODC 为企业协同工作带来了更大的便利和效率。
▋ 全场景协同:从数据库开发到数据管理的全生命周期
在数据库开发和数据管理方面的关键需求,ODC 解决了许多客户在协同工作中遇到的痛点。ODC 通过全场景协同的能力,帮助用户实现从数据库开发到数据管理的全生命周期的无缝连接,为企业提供了全方位的支持和协同管理。在全生命周期方面,ODC 涵盖了企业数据库开发和数据管理的全部场景,从 SQL 开发到变更风险管控,再到数据生命周期管理和数据安全。这意味着企业无论是在开发、变更、数据保护还是数据管理方面,都能借助 ODC 实现高效、无缝的协同,确保各环节的顺畅协作。
与此同时,ODC 注重多角色协同参与。开发者、DBA、数据分析师、架构师和数据安全官,每个角色都有不同的关注点和需求。ODC 充分理解并融合了每个角色的特殊需求,使得数据库开发和数据管理过程中的协同合作更加顺畅。通过将不同角色的需求融入协同工作中,ODC 降低了企业数据库协同平台的部署和使用成本,为协同工作提供了高效和灵活的解决方案。
数据库开发领域涌现了很多卓越的开源项目,ODC 希望通过开源,与社区共同打造一款帮助 Dev 和 DBA 真正实现“ONE team”的企业级的数据库协同开发工具。未来我们将持续打磨现有的产品能力,并在一些新的方向上做尝试。
-
更多的数据源:逐步引入MySQL 和 Oracle 的数据源支持,更全面地管理不同来源的数据。
-
更强大的变更:建设稳定的变更模块,包含无锁结构变更及无锁数据变更。
-
差异架构管理:实现数据库结构的全面比对与同步,确保库与库、表与表之间的对象结构变更一致化处理。
帮助用户解决企业级的数据库管控协同难题,我们一直在路上。如果你对这个开源项目感兴趣,可以点击文末“阅读原文”,前往 GitHub,深入了解更多细节,我们也欢迎以任何形式参与 ODC 社区。无论是贡献代码、提出问题、分享见解,或者仅仅是表达对这个开源项目的喜爱与支持,都将成为推动 ODC 项目发展的动力。
相关文章:

ODC现已开源:与开发者共创企业级的数据库协同开发工具
OceanBase 开发者中心(OceanBase Developer Center,以下简称 ODC)是一款开源的数据库开发和数据库管理协同工具,从首个版本上线距今已经发展了三年有余,ODC 逐步由一款专为 OceanBase 打造的开发者工具演进成为支持多数…...

生成克隆钓鱼网站与对win7进行后渗透操作
目录 目录 前言 系列文章列表 思维导图 1,实验涉及复现环境 2,CS的介绍 2.1,CS的简介 2.2,CS的主要功能 3,CS的安装 3.1,将cobalt_strike_4.5文件夹放到kali中 3.1,放入过程中的注意事项 3.2,如图所示 4,配置工具 4.1,进入c…...

Ubuntu18中NVIDIA,cuda,cudnn,pytorch安装
注意:nvidia驱动和cuda,cudnn,pytroch,python的对应关系 linux安装pytorch(包括cuda与cudnn)_linux清华园按照pytorch1.12_BryceRui的博客-CSDN博客 安装流程:安装cuda(包括nvidia驱动) cudnn python安装…...

MATLAB中M文件编写
简介 所谓M文件就是将处理问题的各种命令融合到一个文件中,该文件以.m为扩展名。然后,由MATLAB系统编译M文件,得出相应的运行结果。M文件具有相当大的可开发性和扩展性。M文件有脚本文件和函数文件两种。脚本文件不需要输入参数,…...

企业数字化神经网络
随着数字化时代的到来,数据已经成为企业战略性资源和重要的生产要素。企业数字化转型的核心是充分开发和利用数据资源,以数据为驱动,对业务流程进行重构与创新,从而提升企业的核心竞争力。业务系统是企业数据资源的源头࿰…...

C++this指针
本文旨在讲解C中this关键字,以及其相关作用! 定义 this 是 C 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。 this的介绍 下面来看一下关于this这个关键字的实例࿰…...

【初阶C语言】操作符1--对二进制的操作
前言:本节内容介绍的操作符,操作的对象是二进制位。所以前面先介绍整数的二进制位 一、二进制位介绍 1.二进制介绍 (1)整数的二进制表示形式有三种:原码、反码和补码。 (2)原码、反码和补码的…...
安装pyscipopt
安装pyscipopt Conda会自动安装SCIP,因此所有内容都可以通过单个命令安装: GitHub - scipopt/PySCIPOpt: Python interface for the SCIP Optimization Suite conda create --name myenv python3.8 # 创建新环境 conda activate myenv # 激活新环境 …...

原生js实现的轮盘抽奖案例
来到大学也是有二年了,吃饭最多的地方就是在食堂,经过这么久的时间,已经几乎是把每个窗口的菜都吃腻了,所以我打算做个轮盘抽奖的形式来决定我每天要吃些什么。 目录 实现效果图: 静态搭建 js代码 1.实现此功能的思路…...

最经典的解析LSA数据库(第六课)
初步认识OSPF的大致内容(第三课)_IHOPEDREAM的博客-CSDN博客 1 OSPF 工作过程 建立领居表 同步数据库 今天来 说一说数据库概念 计算路由表 2 什么是数据库? 数据库是一个组织化的数据集合,用于存储、管理和检索数据。它是一个可访问的集合&#x…...

C++基础入门
文章目录 前言一、C历史及发展1.C是什么2.C历史 二、开始C1.基础类型1.第一个简单的C程序2.命名空间1.命名空间的介绍2.命名空间的使用3.命名空间的using声明与using指示 3.初识输入输出操作4.引用1.引用概念2.引用的使用1.引用做参数2.引用做返回值 3.引用和指针的区别4.const…...
【每日随笔】驾驭人性 ② ( 员工立场问题 | 立场转变 | 吴越同舟 | 老板如何与员工结成利益共同体 )
文章目录 一、员工立场问题二、立场转变三、吴越同舟四、老板如何与员工结成利益共同体 一、员工立场问题 人的潜力是很大的 , 肩上抗 100 斤 水泥 和 肩上抗 100 斤黄金 , 能一样吗 , 扛着黄金绝对能扛回家 ; 员工 不愿意 与公司一条心是正常的 , 员工 拿的是 死工资 , 公司赚…...

C++(QT)画图行车
通过鼠标在窗口上点击形成多个点的连线,绘制一辆汽车沿着绘制的连线轨迹前进。要求连线点数大于20.可以通过清除按钮清除已经绘制的连线,并可以重新绘制一条轨迹连线。当车辆行驶到轨迹终点时,自动停止。(汽车实在可用方块代替&am…...

Unity中Shader抓取屏幕并实现扭曲效果(优化)
文章目录 前言一、在之前顶点着色器的输入中,放弃了使用结构体传入,而是直接从应用程序阶段传入参数,这样写的话,对于程序来说,不方便扩张,所以需要对其进行修改实现1、定义结构体用于传入顶点坐标系2、因为…...
肖sir__设计测试用例方法之_(白盒测试)
白盒测试技术 一、定义: 白盒测试也叫透明盒测试,检查程序内部结构及路径一是否符合规格说明,二是否符合其代码规范。 因此,也叫结构测试或者逻辑驱动测试。 二、白盒测试常见方法: a、语句覆盖; b、判断覆…...

GoT:用大语言模型解决复杂的问题
GoT:用大语言模型解决复杂的问题 摘要介绍背景和符号表示语言模型和上下文学习Input-Output(IO)Chain of thought(CoT)Multiple CoTTree of thoughts(ToT) GoT框架推理过程思维变换聚合变换&…...
nginx服务和uwsgi服务如何设置开机自启动
上次学到了在云服务器下如何部署Django项目,用到了nginx服务和uwsgi服务,需要手工启动这2个服务的命令。 现在考虑如何设置开机自启动,为什么要这样考虑?因为服务器万一出问题,意外重启了,那我们部署的Dja…...

算法-分治算法
文章来源: https://blog.csdn.net/weixin_45630258/article/details/126425400 欢迎各位大佬指点、三连 一、分治 1、定义:分治,也就是分而治之。 它的一般步骤是: ① 将原问题分解成若干个规模较小的子问题(子问题…...
react 实现监听逻辑
需求: 在一个页面下有多个子tab在某些tab 下,或者父节点的数据更新的时候,其他子tab 或者父节点也要同步更新 进程: 正常情况下会把所有用到的数据都移动到父节点,修改行为也都放在父节点但如果这样的话父节点的数据…...
vue项目一个页面包含多个时间选择器的处理方案
描述:vue项目中如果在一个页面使用多个时间选择器组件时,不同的时间选择器需要分别分开工作 解决方案一 原本是想直接每一个时间选择器都安排一套相对独立的维生系统,但是到后面发现繁琐至极,而且报错,果断放弃&#…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...