<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.cdmgr.com/blog</id>
    <title>CloudDM企业级数据管理工具 Blog</title>
    <updated>2025-09-19T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.cdmgr.com/blog"/>
    <subtitle>CloudDM企业级数据管理工具 Blog</subtitle>
    <icon>https://www.cdmgr.com/img/dm.ico</icon>
    <entry>
        <title type="html"><![CDATA[SQL 审核工具深度体验（一）： CloudDM vs Archery vs Yearning vs Bytebase]]></title>
        <id>https://www.cdmgr.com/blog/data_management/sql_review_tool_vs</id>
        <link href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs"/>
        <updated>2025-09-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[从工单场景出发横向对比 CloudDM、Archery、Yearning、Bytebase]]></summary>
        <content type="html"><![CDATA[<p>数据库变更是日常开发和运维里绕不开的活。为了降低线上环境出故障的风险，通常会配合工单系统来发布变更，这样流程可控，也能减少低级错误。
市面上能选的工具不少，有开源的，也有商业化的。这次我挑了四款比较常见的：<strong>Yearning、Archery、Bytebase</strong>，还有 <strong>CloudDM</strong>，从工单场景出发做了一轮体验和横向对比，给大家一些参考。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="测评方法">测评方法<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E6%B5%8B%E8%AF%84%E6%96%B9%E6%B3%95" class="hash-link" aria-label="测评方法的直接链接" title="测评方法的直接链接">​</a></h2>
<p>不同工具的功能侧重点不一样，如果各方面都测，反而看不出差别。所以我主要关注最常见的两个场景：<strong>业务上线</strong>和<strong>数据订正</strong>。测试用的版本主要是<strong>社区版/免费版</strong>。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="业务上线">业务上线<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E4%B8%9A%E5%8A%A1%E4%B8%8A%E7%BA%BF" class="hash-link" aria-label="业务上线的直接链接" title="业务上线的直接链接">​</a></h3>
<p>功能上线通常包括两部分：程序包和数据库脚本。程序包这块一般由 CI/CD 流程接管，这里不展开。数据库变更脚本经常包括一条或多条需要执行的 SQL 语句，以 DDL 为主。在这个场景下，我准备了两个测试点：</p>
<ul>
<li>DDL 需要符合一定的规则；</li>
<li>工单里可以处理 DDL/DML 混合语句。</li>
</ul>
<div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">-- 添加表</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">create table biz_model (</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  id             bigint NOT NULL AUTO_INCREMENT,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  created_time   datetime  COMMENT 'Creation timestamp',</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  updated_time   datetime  COMMENT 'Last update timestamp',</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  content        varchar(50)  NOT NULL COMMENT 'biz body',</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  PRIMARY KEY (id)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-- 初始化数据</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">insert into biz_model (id, created_time, updated_time, content) </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">values (1, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content1 ...' );</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">insert into biz_model (id, created_time, updated_time, content) </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">values (2, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content2 ...' );</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">insert into biz_model (id, created_time, updated_time, content) </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">values (5275, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content3 ...' );</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-- 修改老表</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">alter table admin_user</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  add biz_id varchar(50)  NOT NULL COMMENT 'biz id';</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="数据订正">数据订正<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E6%95%B0%E6%8D%AE%E8%AE%A2%E6%AD%A3" class="hash-link" aria-label="数据订正的直接链接" title="数据订正的直接链接">​</a></h3>
<p>数据订正也比较常见，有时候是有 bug，有时候是运维需要。重点是生产库不能停，在持续写入的情况下修改数据有一定概率会失败。因此在这个场景中，我准备了三个测试点：</p>
<ul>
<li>订正需要修复的数据</li>
<li>出于某些原因，数据订正语句可能会报错</li>
<li>批量化更新大量数据</li>
</ul>
<div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">-- 修复一条数据</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">update biz_model set content = 'abc' where id = 1;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-- 修复一条数据（模拟 SQL 报错）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">update biz_model set content = null where id = 5275;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-- 批量更新数据</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">update admin_user set biz_id = 0 where created_time &gt; '2025-01-01';</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="对比一览">对比一览<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%AF%B9%E6%AF%94%E4%B8%80%E8%A7%88" class="hash-link" aria-label="对比一览的直接链接" title="对比一览的直接链接">​</a></h2>
<p>先上对比表，直接看测试体验的结果：</p>
<table border="1" cellspacing="0" cellpadding="6"><thead><tr><th>分类</th><th>功能</th><th>CloudDM</th><th>Archery</th><th>Yearning</th><th>Bytebase</th></tr></thead><tbody><tr><td rowspan="3">数据源</td><td>可管理的数据源</td><td><b>18 种</b></td><td><b>14 种</b></td><td><b>1 种</b></td><td><b>24 种</b></td></tr><tr><td>支持审核的数据源</td><td><b>18 种</b></td><td><b>3 种</b></td><td><b>1 种</b></td><td><b>7 种</b></td></tr><tr><td>查询控制台</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td></tr><tr><td rowspan="2">工单递交</td><td>DDL/DML 混合语句</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✔️</b></td></tr><tr><td>分析查询计划</td><td><b>✖️</b></td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td></tr><tr><td rowspan="7">SQL 审核</td><td>SQL 规则</td><td><b>60+</b></td><td><b>10+</b></td><td><b>40+</b></td><td><b>100+</b></td></tr><tr><td>自定义规则</td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✖️</b></td><td><b>✖️</b></td></tr><tr><td>规则参数配置</td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✔️</b></td><td><b>✔️</b></td></tr><tr><td>审核分级</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✔️</b></td></tr><tr><td>禁止递交问题工单</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td></tr><tr><td>提示所在行</td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✖️</b></td><td><b>✔️</b></td></tr><tr><td>SQL 审核结果回溯</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✔️</b></td></tr><tr><td rowspan="3">审批流程</td><td>内置审批</td><td><b>✔️</b></td><td><b>✔️</b></td><td><b>✔️</b></td><td>收费</td></tr><tr><td>自定义审批流</td><td><b>✖️</b></td><td><b>✔️</b></td><td><b>✔️</b></td><td>收费</td></tr><tr><td>流程引擎</td><td>内置<br>钉钉<br>飞书<br>企业微信</td><td>内置</td><td>内置</td><td>内置</td></tr><tr><td rowspan="4">工单执行</td><td>执行方式</td><td>立即/定时/手动</td><td>立即/定时/手动</td><td>立即/定时</td><td>立即/定时</td></tr><tr><td>事务模式</td><td>可选</td><td>不支持</td><td>不支持</td><td>默认（不可选）</td></tr><tr><td>工单调试</td><td><b>✔️</b></td><td><b>✖️</b></td><td><b>✖️</b></td><td><b>✖️</b></td></tr><tr><td>工单失败后回滚方式</td><td>需要事务模式</td><td>生成语句</td><td>生成语句</td><td>事务</td></tr></tbody></table>
<p>下面来具体聊聊每款产品的使用体验，主要围绕 <strong>工单递交</strong>、<strong>SQL 审核</strong>、<strong>审批流程与工单执行</strong> 这几个环节展开。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm">CloudDM<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#clouddm" class="hash-link" aria-label="CloudDM的直接链接" title="CloudDM的直接链接">​</a></h2>
<p>在 <a href="https://www.cdmgr.com/" target="_blank" rel="noopener noreferrer">CloudDM</a> 中，对数据库的操作分成三类：<strong>数据查询</strong>、<strong>CI/CD</strong> 和 <strong>工单</strong>。默认情况下，查询控制台只能执行查询语句，DDL/DML 需要通过工单才能执行。如果需要，也可以修改环境策略，让它成为一个 SQL 客户端。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-49c4e3d7b8cfb8933b794ba251d72787.png" width="1878" height="962" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单">创建工单<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h3>
<p>CloudDM 创建工单时，允许 DDL/DML 在同一个工单中混合使用。子账号如果在可视化操作过程中没有对应权限，系统会帮助用户快速创建对应的工单，方便继续走流程。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-b24846ae55334716fc25f58d16cebeeb.png" width="2584" height="1160" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-85d4244d7134dda3e7c3d356d81fe6c5.png" width="1936" height="1116" class="img_ev3q"></p>
<p>通过修改环境策略，CloudDM 可以禁止环境中数据源的工单功能，在只提供查询的环境中，可以更好地保证数据库的安全。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-0ef9ed612e7be30a22672b1025b93b4e.png" width="4708" height="1696" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sql-审核">SQL 审核<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#sql-%E5%AE%A1%E6%A0%B8" class="hash-link" aria-label="SQL 审核的直接链接" title="SQL 审核的直接链接">​</a></h3>
<p>CloudDM 内置了 <strong>60</strong> 多条规则，并且基本适用于支持的 <strong>18</strong> 种数据源。比较极客的是，CloudDM 的所有规则全部使用特定的 <strong>DSL</strong> 语言来编写，并且支持自定义新的规则。这意味着除了内置规则之外，还可以根据自己特殊需要使用 DSL <strong>编写个性化规则</strong>，免去二次开发的烦恼。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-5747e2dcef94f617d70f370fa25afce4.png" width="1714" height="1070" class="img_ev3q"></p>
<p>工单创建时，CloudDM 会自动检查 SQL，并明显地提示检查结果，标出问题 SQL 所在行。有多条语句的情况下，定位问题很快，改起来也方便。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-97093c5cba34ec6accae2e839f1d46cc.png" width="1652" height="946" class="img_ev3q"></p>
<p>在对工单进行 SQL 审核时，CloudDM 提供了两个安全级别。如果 SQL 命中了等级较高的 <strong>阻塞</strong> 级，就不能创建工单，只有 <strong>提示</strong> 级时可以选择强制递交工单。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-2aa9652047c695c7d0746c6069dedf5d.png" width="1614" height="874" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="审批流程">审批流程<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="审批流程的直接链接" title="审批流程的直接链接">​</a></h3>
<p>CloudDM 有一个内置简易审批程序，可以提供审批的基本功能，也可以对接 <strong>钉钉</strong>、<strong>飞书</strong>、<strong>企业微信</strong>作为外部审批流程引擎，完成复杂的审批流程。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-a17ac796db295cf26c734124d9a222c3.png" width="1762" height="748" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="工单执行">工单执行<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B7%A5%E5%8D%95%E6%89%A7%E8%A1%8C" class="hash-link" aria-label="工单执行的直接链接" title="工单执行的直接链接">​</a></h3>
<p>CloudDM 支持以事务方式执行工单，并提供 <strong>手动、立即、定时</strong> 三种执行模式。选择“已手动完成”意味着 DBA 可以自行处理工单，而不是完全交给系统。这在面对大型数据库或复杂 SQL 时更灵活，可以降低 DBMS 系统带来的不确定性。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-16ffd3e72cba15916ac8259c91e28d70.png" width="1898" height="764" class="img_ev3q"></p>
<p>CloudDM 支持工单调试功能，在“数据订正”场景里，即使遇到预设的报错，也可以人工介入处理，再继续执行后续 SQL，而不是简单地中断执行。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-910db4315836e568fb17c35db39fb342.png" width="1936" height="950" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="小结">小结<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B0%8F%E7%BB%93" class="hash-link" aria-label="小结的直接链接" title="小结的直接链接">​</a></h3>
<p><strong>亮点</strong></p>
<ul>
<li>UI 交互和权限控制结合得不错，操作体验顺滑，也有安全管控措施。</li>
<li>SQL 审核可以精确定位问题语句所在行，方便排错。</li>
<li>审批可以对接钉钉、飞书、企业微信，适合团队协作。</li>
<li>工单执行方式灵活（立即 / 定时 / 手动），还能选事务模式。</li>
<li>支持工单调试，执行的时候碰到错误 SQL 可以人工介入后继续执行。</li>
</ul>
<p><strong>不足</strong></p>
<ul>
<li>在工单递交时没有整合查询计划信息。</li>
<li>回滚 SQL 需要手动补充，不够自动化。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="bytebase">Bytebase<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#bytebase" class="hash-link" aria-label="Bytebase的直接链接" title="Bytebase的直接链接">​</a></h2>
<p><a href="https://www.bytebase.com/" target="_blank" rel="noopener noreferrer">Bytebase</a> 在产品上有 <strong>SQL 编辑器、工单</strong> 两种模式。SQL 编辑器可以执行 SQL 语句，而工单用于管控变更发布。Bytebase 的设计中，数据库变更主要依托于 Git 的 CI/CD，同时也提供了页面递交工单。通过页面递交工单的入口在 CI/CD 中通过创建变更计划来实现，分为 <strong>Schema 变更</strong>、<strong>数据变更</strong> 两类。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-744798e82e3b90c855266329ec1cd9b3.png" width="1990" height="788" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单-1">创建工单<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95-1" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h3>
<p>Bytebase 有两种创建工单的方式，一种基于可视化 UI 交互，另一种是纯 SQL 递交。通过 SQL 递交工单时 Bytebase 支持混合 DDL/DML 语句。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/12-c77d80e168bae302a5c0f33f2fed984f.png" width="1810" height="928" class="img_ev3q"></p>
<p>在 Bytebase 创建工单时，SQL 审核默认是非必须环节，即便工单中包含严重的 SQL 错误也可以正常递交工单。因此建议在安全策略中启用 “禁止提交包含错误告警的工单” 选项，防止不符合规范的 SQL 被递交。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/13-cc204f7800fc5b15187a2876a16ab86f.png" width="2336" height="978" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sql-审核-1">SQL 审核<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#sql-%E5%AE%A1%E6%A0%B8-1" class="hash-link" aria-label="SQL 审核的直接链接" title="SQL 审核的直接链接">​</a></h3>
<p>Bytebase 内置了 <strong>111</strong> 条审核规则，其中部分可以在不同数据源之间共用，用户可以在 <strong>7</strong> 种数据源下配置它们。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/14-f545146c951f3737192c9e7d68b5431b.png" width="2256" height="1034" class="img_ev3q"></p>
<p>Bytebase 在递交工单时可以手动对 SQL 进行检查，需要先 “运行检查”，再点击“检查结果图标”，方可查看检查结果，结果中会显示问题 SQL 所在行。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/15-27f142d6fb4b9ea9140cf30023955dc6.png" width="2050" height="1002" class="img_ev3q"></p>
<p>需要注意的是，Bytebase 在进行 SQL 检测时使用自身存储的元信息数据。若在产品之外执行了 DDL 语句，会导致其内部存储的元信息和真实数据库不一致，这种不一致会进一步影响 Bytebase 功能可用性，例如 SQL 在检测环节出现幻觉。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/16-cee0b065b69e6a1c8136edae57177326.png" width="1586" height="1086" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="审批流程-1">审批流程<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B-1" class="hash-link" aria-label="审批流程的直接链接" title="审批流程的直接链接">​</a></h3>
<p>Bytebase 不支持外部流程引擎，但可以在内部定义审批流程。另外社区版不支持审批功能，需要购买企业版以解锁该功能。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/18-b2850a66eabda703dbd3cab20368da4e.png" width="1924" height="844" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="工单执行-1">工单执行<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B7%A5%E5%8D%95%E6%89%A7%E8%A1%8C-1" class="hash-link" aria-label="工单执行的直接链接" title="工单执行的直接链接">​</a></h3>
<p>Bytebase 提供了 <strong>立即</strong>、<strong>定时</strong> 两种工单执行方式，虽然没有明确提示，但在实际体验过程中发现 Bytebase 在执行工单 SQL 时会默认启用事务。当工单失败，整个变更会被回滚，由于 DDL 回滚操作需要数据库的支持，因此用户需要谨慎对待 DDL/DML 混合情况的工单。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/19-9aec2b821e4afa8f449159d22e8011cf.png" width="1800" height="932" class="img_ev3q"></p>
<p>Bytebase 不支持工单调试，并默认以事务方式执行。这意味着在我们设计的 “数据订正” 场景中，报错出现后，需要手动将原始工单进行拆分处理。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/20-e8e94df17ef58968cf20c42c58ad7b5f.png" width="1780" height="838" class="img_ev3q"></p>
<p>Bytebase 支持同一个工单的 SQL 同时在多个数据库作为执行目标，这个功能可以避免在多环境中递交多个工单。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/21-af394953b8b67df209e8ffa5fa4c7945.png" width="1810" height="754" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="小结-1">小结<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B0%8F%E7%BB%93-1" class="hash-link" aria-label="小结的直接链接" title="小结的直接链接">​</a></h3>
<p><strong>亮点</strong></p>
<ul>
<li>工单模式和编辑器模式分工明确，更聚焦不同场景下的需求。</li>
<li>可视化生成 SQL 并提交工单，可以降低写错 SQL 的概率。</li>
<li>审核结果能精准定位问题 SQL 行，方便排查。</li>
<li>可以将多个数据库作为目标，简化多环境发布流程。</li>
</ul>
<p><strong>不足</strong></p>
<ul>
<li>产品会存储数据库元信息，当多种工具结合运维数据库时容易出现问题。</li>
<li>社区版本不支持审批功能，并且产品不支持对接钉钉、飞书等外部审批引擎。</li>
<li>工单不能调试，在数据订正场景中遇到错误后需要手动拆分工单。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="archery">Archery<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#archery" class="hash-link" aria-label="Archery的直接链接" title="Archery的直接链接">​</a></h2>
<p><a href="https://archerydms.com/" target="_blank" rel="noopener noreferrer">Archery</a> 是开源免费的数据库审核工具，它对数据库的操作分为 <strong>SQL 查询</strong> 和 <strong>SQL 上线</strong>，并且包含一定的 <strong>数据库运维</strong> 能力。查询控制台只支持查询类语句，并且不支持查看数据库对象。所有 DDL、DML 语句都需要通过工单才能执行。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/22-b5a124669217743149052faae7db15c7.png" width="1902" height="1096" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单-2">创建工单<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95-2" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h3>
<p>在 Archery 中工单递交允许 DDL/DML 混合使用。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/23-b10c75c237be8473b90490d34bcc4b9c.png" width="1812" height="720" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sql-审核-2">SQL 审核<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#sql-%E5%AE%A1%E6%A0%B8-2" class="hash-link" aria-label="SQL 审核的直接链接" title="SQL 审核的直接链接">​</a></h3>
<p>在提交工单时，Archery 会清晰地提示 SQL 审核结果，并在支持的情况下会将查询计划及每条 SQL 语句集合在一起展示。若 SQL 命中高等级的 Error 规则，工单将无法递交；而命中 Warning 级规则时，系统会提示，但仍可继续递交工单。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/24-f85bd3e05236ec9975d2bb42afb7e5c7.png" width="1458" height="1072" class="img_ev3q"></p>
<p>受限于 goInception 的数据源支持，Archery 在 SQL 审核上仅支持 MySQL、Oracle 和 MongoDB，审核规则数量有限且不支持自定义配置。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/25-558e48a5120719a7807823c0e7891537.png" width="2892" height="1920" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="审批流程-2">审批流程<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B-2" class="hash-link" aria-label="审批流程的直接链接" title="审批流程的直接链接">​</a></h3>
<p>Archery 无法接入外部流程引擎，但可以通过内部特有的方式定义基于权限组的简单审批流程，工单会在不同权限组之间流转，用户可以加入特定权限组参与审批。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/26-2b3f058b67dced6dead2589cd2dcc399.png" width="2164" height="740" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="工单执行-2">工单执行<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B7%A5%E5%8D%95%E6%89%A7%E8%A1%8C-2" class="hash-link" aria-label="工单执行的直接链接" title="工单执行的直接链接">​</a></h3>
<p>Archery 在工单执行时提供“手动完成”选项，允许 DBA 自己处理工单，而不是完全依赖系统。对于大型数据库或复杂 SQL，这提供了更灵活的操作方式，能有效降低 DBMS 系统带来的不确定性。（该功能默认关闭，需要手动开启）</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/27-85ac389c6b37007e43d0a6ac56352c3a.png" width="1704" height="1062" class="img_ev3q"></p>
<p>Archery 不能调试工单，也不具备事务模式，这意味着在处理强一致性的“数据订正”工单时，DBA 需要格外谨慎。在 “数据订正” 场景中，预先设置的报错场景触发后，Archery 需要创建新的工单来进行后续处理。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/28-03dc5337281c490edaec3784d3872a26.png" width="2048" height="1274" class="img_ev3q"></p>
<p>受限于 goInception 的数据源支持，对于 MySQL、Oracle、MongoDB 以外的数据源，Archery 会将工单内容当作一条语句交给数据库处理。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/29-3bc10185b02a3e086975c017ef118c42.png" width="1694" height="960" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="小结-2">小结<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B0%8F%E7%BB%93-2" class="hash-link" aria-label="小结的直接链接" title="小结的直接链接">​</a></h3>
<p><strong>亮点</strong></p>
<ul>
<li>全部功能开源且免费，在遵守开源协议的前提下可以自由定制。</li>
<li>在工单中可以混合使用 DDL/DML，在变更发布需要初始化数据的时候会方便很多。</li>
<li>SQL 审核结果中整合了查询计划，有助于识别潜在风险 SQL。</li>
</ul>
<p><strong>不足</strong></p>
<ul>
<li>受限于 goInception 组件，完整功能只支持 MySQL、Oracle 和 MongoDB。不能配置审核规则，也无法在控制台查看完整的规则列表。</li>
<li>工单无法调试，数据订正场景中出现错误时，只能创建新工单来继续处理剩余 SQL，操作不够顺畅。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="yearning">Yearning<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#yearning" class="hash-link" aria-label="Yearning的直接链接" title="Yearning的直接链接">​</a></h2>
<p>在 <a href="https://yearning.io/" target="_blank" rel="noopener noreferrer">Yearning</a> 中，对数据库的操作都通过工单来实现，包括数据库的查询。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/30-a508943ba660e76293867a181e1bda42.png" width="1690" height="1100" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单-3">创建工单<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95-3" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h3>
<p>Yearning 默认限制每个 DDL 工单只能包含一条语句，需要在规则中将这个限制改为允许执行多条 DDL，否则实际使用中会比较麻烦。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/31-837620dc94bb98afc3f3774fcc8a7570.png" width="1902" height="812" class="img_ev3q"></p>
<p>Yearning 不支持 DDL/DML 语句混合，需要把它们拆成单独的工单分别执行。虽然在需要混合语句的情况下，这种限制会带来一定的不便，但在不同的场景下，拆分或者合并都有各自合理的依据。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/32-97ed4b82e9b5e1215bdd4b3492fdae71.png" width="1774" height="1054" class="img_ev3q"></p>
<p>需要格外注意的是，Yearning 工单递交时 “是否回滚” 这个选项的真正动作是生成回滚语句，而不是工单以事务方式执行在遇到错误后自动回滚事务。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/33-67a21aa9909685b226f35cadaaae9372.png" width="2116" height="736" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sql-审核-3">SQL 审核<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#sql-%E5%AE%A1%E6%A0%B8-3" class="hash-link" aria-label="SQL 审核的直接链接" title="SQL 审核的直接链接">​</a></h3>
<p>Yearning 内置 46 条审核规则，其中大部分针对 DDL。目前不支持自定义规则。你可以通过创建 SQL 规范或在全局模式中启用已有规则。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/34-44246bdc7ba2232dd17c3cd33d8b01e4.png" width="2128" height="1044" class="img_ev3q"></p>
<p>启用 SQL 规则校验后，Yearning 在提交工单时会对 SQL 进行检查，只有通过审核的 SQL 才能提交。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/35-3cf2f37c65b6ebd9930baf4d3b312271.png" width="2052" height="1090" class="img_ev3q"></p>
<p>在 Yearning 中，SQL 规范是绑定在数据源上的，如果同一个环境中多个数据源想使用相同的规则，就需要为每个数据源进行单独设置。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/36-80e0ba79ace2202f7c054e4fde026580.png" width="1722" height="1056" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="审批流程-3">审批流程<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B-3" class="hash-link" aria-label="审批流程的直接链接" title="审批流程的直接链接">​</a></h3>
<p>Yearning 不支持外部流程引擎，但可以通过内置流程引擎进行简单节点定义。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/37-156e0663f725d6be86a19dc6e412efa3.png" width="1650" height="1042" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="工单执行-3">工单执行<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B7%A5%E5%8D%95%E6%89%A7%E8%A1%8C-3" class="hash-link" aria-label="工单执行的直接链接" title="工单执行的直接链接">​</a></h3>
<p>在“数据订正”场景中，Yearning 能在预设的报错语句处成功中止执行。但它不支持报错后的后续处理，如果是一批需要一对一更新的数据，遇到报错后只能新建工单来继续执行剩余 SQL。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/38-10b215212264a5183489f2136693afc5.png" width="1964" height="812" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="小结-3">小结<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E5%B0%8F%E7%BB%93-3" class="hash-link" aria-label="小结的直接链接" title="小结的直接链接">​</a></h3>
<p><strong>亮点</strong></p>
<ul>
<li>上手门槛很低，基本不需要看文档，仅凭探索就可以上手操作，这一点非常棒。</li>
<li>产品非常聚焦，以工单驱动，没有多余复杂的功能，上手体验很轻松。</li>
</ul>
<p><strong>不足</strong></p>
<ul>
<li>相比其他几款产品，功能比较单一。</li>
<li>和其他产品一样，缺少工单调试功能，在数据订正出错时只能再建一个工单处理剩余部分。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/sql_review_tool_vs#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>这四款 SQL 审核工具在功能和体验上各有优缺点，总体来说：</p>
<ul>
<li><strong>服务支持</strong>：所有产品都有免费的社区版本可用，同时 CloudDM、Bytebase 背后有商业公司支撑，提供长期的更新与支持保障。</li>
<li><strong>查询控制台</strong>：在查询控制台简单体验中，CloudDM、Bytebase 用户体验较为友好，可以很好适配开发环境和生产环境的实际需求。</li>
<li><strong>数据源支持</strong>：除 Yearning 外所有产品都支持多种数据源。</li>
<li><strong>开放性</strong>：Archery、Yearning、Bytebase 有开源版本可供选择，但功能限制较多，CloudDM 虽然不开源，但开放的功能是最全面的。</li>
<li><strong>工单处理</strong>：CloudDM、Archery 允许在平台中标记工单已完成，DBA 可以根据工单内容，自己手动处理 SQL，这个设计给了 DBA 更大的灵活空间来应对一些特殊数据库。</li>
<li><strong>回滚</strong>：CloudDM 可选是否开启事务；Bytebase 不能选择但默认为事务模式；Archery、Yearning 提供了生成逆向 SQL 的能力。</li>
</ul>
<p>接下来，我还会继续体验测试其他 SQL 审核工具并分享出来，欢迎持续关注。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[强强联合｜CloudDM 与达梦数据库完成产品兼容互认证]]></title>
        <id>https://www.cdmgr.com/blog/announcement/dameng_compatible</id>
        <link href="https://www.cdmgr.com/blog/announcement/dameng_compatible"/>
        <updated>2025-07-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 与达梦数据库正式完成产品兼容互认证]]></summary>
        <content type="html"><![CDATA[<p>近日，杭州开云集致公司推出的一站式多数据源开发管理工具 CloudDM 与武汉达梦数据库股份有限公司自主研发的 <strong>达梦数据系列数据库产品</strong> 正式完成 <strong>产品兼容性互认证</strong>。</p>
<p>双方技术团队进行了严格的测试，测试结果表明，CloudDM 能够无缝连接并高效管理达梦数据库，支持可视化创建/修改表、可视化创建/查看视图/触发器/函数等多种高级功能，<strong>两款产品在功能方面实现了深度兼容，系统运行稳定高效</strong>。</p>
<p>这一认证的完成具有多重意义。技术层面，验证了 CloudDM 对国产数据库的支持能力，特别是针对达梦数据库的特性适配更加完善。生态层面，推动了国产数据库工具链的成熟。同时，为企业用户提供了更可靠的 <strong>国产化数据库管理解决方案</strong>，降低存储和运维成本。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/dameng_compatible_certificate-63dce8440c1922ef9d7ea1513359bd34.png" width="1082" height="1570" class="img_ev3q"></p>
<p>CloudDM 是 ClouGence 公司推出的一站式多数据源开发管理工具，专注企业数据安全，注重安全性、稳定性和用户体验。<strong>产品通过简单且高效的交互来保证开发使用上的便利性，在团队协作过程中利用工作流推进数据库变更在不同环境中的变化，是一款便于使用、安心管理、降低担忧的数据安全管理平台</strong>。目前，CloudDM 支持 MySQL、DB2 等多种数据源，并提供常用 SQL 规则校验，为数据库变更安全保驾护航。同时，CloudDM 还支持 SSO 统一身份认证、基于角色的访问控制、与主流 OA 平台衔接的工单审批流程等，满足企业跨团队协作的需求。</p>
<p>达梦数据库作为国产数据库的代表产品，<strong>以其通用性、高性能、高可用、跨平台和高可扩展等特点，在党政机关、金融、电信、能源等多个关键行业得到广泛应用</strong>。达梦数据库采用创新的体系架构，兼顾了海量数据处理和安全性。DM8 作为最新一代产品，融合了分布式、弹性计算与云计算的优势，对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进。其多样化架构充分满足不同场景需求，支持超大规模并发事务处理和事务-分析混合型业务处理，动态分配计算资源，实现更精细化的资源利用和更低成本的投入。</p>
<p>随着数字化转型的深入，特别是在信创产业快速发展的背景下，国产基础软件的协同创新显得尤为重要。达梦数据库作为信创生态的核心成员，与 CloudDM 的深度兼容将有力推动自主可控技术体系的建设。<strong>未来，CloudDM 与达梦数据库将加深合作，探索多维度的产品使用场景，持续加大技术投入，不断优化细节，推动国产数据库在性能、功能和用户体验等方面达到新的高度</strong>。</p>]]></content>
        <author>
            <name>刘琳玉</name>
        </author>
        <category label="产品动态" term="产品动态"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 CloudDM 可视化操作 MySQL]]></title>
        <id>https://www.cdmgr.com/blog/tutorials/mysql_management</id>
        <link href="https://www.cdmgr.com/blog/tutorials/mysql_management"/>
        <updated>2025-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文展示了如何使用可视化工具 CloudDM 个人版管理和操作 MySQL 数据库和数据表]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-个人版简介">CloudDM 个人版简介<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#clouddm-%E4%B8%AA%E4%BA%BA%E7%89%88%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="CloudDM 个人版简介的直接链接" title="CloudDM 个人版简介的直接链接">​</a></h2>
<p>CloudDM 个人版是 ClouGence 公司推出的一款一站式数据库管理工具，可以方便地访问和管理 MySQL、Oracle、PostgreSQL、阿里云 RDS、Greenplum、TiDB、Redis、StarRocks、Doris、SelectDB、SQL Server、ClickHouse、OceanBase 、PolarDB-X 、IBM Db2 等多种不同类型的数据库。通过 CloudDM 丰富的数据源支持可以避免在多个专业工具之间切换，从而提高工作效率。</p>
<p>它是本地化的应用程序，没有后台进程。和 DataGrip、Navicat 一样在安装完成后，只需要双击应用程序图标，便可以方便地管理位于本地计算机或远程计算机上的数据库。已支持 Windows、Linux 和 MacOS 操作系统。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-界面介绍">CloudDM 界面介绍<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#clouddm-%E7%95%8C%E9%9D%A2%E4%BB%8B%E7%BB%8D" class="hash-link" aria-label="CloudDM 界面介绍的直接链接" title="CloudDM 界面介绍的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-f8f8b511b49cc0aa9580c7209fb0f903.png" width="1482" height="846" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="连接-mysql-数据库">连接 MySQL 数据库<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E8%BF%9E%E6%8E%A5-mysql-%E6%95%B0%E6%8D%AE%E5%BA%93" class="hash-link" aria-label="连接 MySQL 数据库的直接链接" title="连接 MySQL 数据库的直接链接">​</a></h2>
<p>切换到 <strong>数据源管理</strong>，然后点击 <strong>新增数据源</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-513a77bf647f5e75586c7a318e2cba8f.png" width="2090" height="1184" class="img_ev3q"></p>
<p>选择 MySQL 数据库，然后输入对应信息，连接数据库。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-8c79fe594b7240ec5047026ea264f910.png" width="2004" height="1318" class="img_ev3q"></p>
<p>在 <strong>查询设置</strong> 中，可以通过 <strong>修改参数配置</strong> 对连接信息进行修改。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-6f912087f2b39d94a2b21340dd566d13.png" width="2232" height="670" class="img_ev3q"></p>
<p>切回 <strong>数据查询</strong>，可以看到刚刚新增的数据源。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-c105c9851204ed7793118631d84909ef.png" width="2404" height="462" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="管理数据库">管理数据库<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E7%AE%A1%E7%90%86%E6%95%B0%E6%8D%AE%E5%BA%93" class="hash-link" aria-label="管理数据库的直接链接" title="管理数据库的直接链接">​</a></h2>
<p>CloudDM 支持创建和删除 Schema。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建-schema">创建 Schema<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E5%88%9B%E5%BB%BA-schema" class="hash-link" aria-label="创建 Schema的直接链接" title="创建 Schema的直接链接">​</a></h3>
<p>在 Schema 层级的标签栏右键，点击 <strong>新建 Schema。</strong></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-20c35ee321a75affdd9abb37b2dab573.png" width="2200" height="1268" class="img_ev3q"></p>
<p>在对话框中填写 Schema 名，点击 <strong>生成 SQL 语句</strong> 后，点击 <strong>立即执行</strong> 即可。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-c90f1467b47b40f30447b23a89cbb464.png" width="1704" height="998" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="管理数据库表">管理数据库表<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E7%AE%A1%E7%90%86%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8" class="hash-link" aria-label="管理数据库表的直接链接" title="管理数据库表的直接链接">​</a></h2>
<p>目前，CloudDM 支持各类数据库表的管理操作，包括创建表、删除表、修改表、清空表，同时对 MySQL 的 DDL 支持比较齐全，可以满足各类场景。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建表">创建表<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E5%88%9B%E5%BB%BA%E8%A1%A8" class="hash-link" aria-label="创建表的直接链接" title="创建表的直接链接">​</a></h3>
<p>在表标签页右键，点击 <strong>新建表</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-81e1c15cf153b279be1aa23e7d8e80df.png" width="1986" height="1162" class="img_ev3q"></p>
<p>对表相关信息进行编辑，此处可以设置表的一些基本信息、列相关信息、主键信息、索引信息。设置完成后点击保存。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-f8d297fd91adb27c96fa0d03695b4452.png" width="2460" height="1176" class="img_ev3q"></p>
<p>对生成的 SQL 点击 <strong>立即执行</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-59b2fc26caec6bc231ff42fea0db79e1.png" width="1974" height="1252" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="修改表">修改表<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E4%BF%AE%E6%94%B9%E8%A1%A8" class="hash-link" aria-label="修改表的直接链接" title="修改表的直接链接">​</a></h3>
<p>在需要修改的表标签上右键，点击 <strong>设计表</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-c4ffa988025c187a3b4aeb886ec82b96.png" width="2418" height="1264" class="img_ev3q"></p>
<p>中间的操作和 <strong>新建表</strong> 类似，修改表信息，然后点击保存，对生成的 SQL 点击 <strong>立即执行</strong> 即可。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/12-e2d060bd97aebea8ef16e1544741ef2f.png" width="2068" height="1360" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="删除表">删除表<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E5%88%A0%E9%99%A4%E8%A1%A8" class="hash-link" aria-label="删除表的直接链接" title="删除表的直接链接">​</a></h3>
<p>在需要删除的表标签上右键，点击 <strong>删除</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/13-f8aa0802bf17f8897180e06a95d6e934.png" width="2546" height="1220" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="清空表">清空表<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E6%B8%85%E7%A9%BA%E8%A1%A8" class="hash-link" aria-label="清空表的直接链接" title="清空表的直接链接">​</a></h3>
<p>顾名思义，点击该按钮，该表的数据会被清空。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/14-06b1cbb499194d5202989c03861705cd.png" width="2494" height="1194" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="编辑表数据">编辑表数据<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E7%BC%96%E8%BE%91%E8%A1%A8%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="编辑表数据的直接链接" title="编辑表数据的直接链接">​</a></h2>
<p>CloudDM 支持编辑表数据，操作包括数据条件查询、插入数据、修改数据、删除数据。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="查询数据">查询数据<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E6%9F%A5%E8%AF%A2%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="查询数据的直接链接" title="查询数据的直接链接">​</a></h3>
<p>在 CloudDM 中，支持普通的分页查询，还支持拼接 where 条件查询以及排序条件。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/15-d2b3ab5a23904aafadb68fc621faf29e.png" width="2138" height="1402" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="更新数据">更新数据<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E6%9B%B4%E6%96%B0%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="更新数据的直接链接" title="更新数据的直接链接">​</a></h3>
<p>在 CloudDM 中，绿色标识代表新增，红色标识代表删除，黄色标识代表修改。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/16-a1a9e6af3a8032eb86d47747471f5f9f.png" width="1852" height="1138" class="img_ev3q"></p>
<p>点击 <strong>提交</strong> 按钮，系统会生成对应的 SQL。点击 <strong>立即执行</strong>，即可对表单数据进行修改。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/17-f1cfe9cb41bda3b033e98c3591e693fc.png" width="2086" height="1240" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建触发器">创建触发器<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E5%88%9B%E5%BB%BA%E8%A7%A6%E5%8F%91%E5%99%A8" class="hash-link" aria-label="创建触发器的直接链接" title="创建触发器的直接链接">​</a></h2>
<p>在需要创建触发器的表上右键，点击 <strong>新建触发器</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/18-e941d438b254aeed411cf9feb4b668f3.png" width="1916" height="1252" class="img_ev3q"></p>
<p>配置完成后，点击 <strong>生成 SQL 语句</strong>，在 SQL 生成完成后，点击 <strong>立即执行</strong>，即可创建触发器。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/19-15954941a8527e9e5f7fd20dbc78ba68.png" width="1802" height="864" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/20-12f77e946e5f72214a8975b1abeedb20.png" width="2374" height="1002" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="转换-ddl">转换 DDL<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E8%BD%AC%E6%8D%A2-ddl" class="hash-link" aria-label="转换 DDL的直接链接" title="转换 DDL的直接链接">​</a></h2>
<p>在需要进行 DDL 转换的表右键 <strong>获取 DDL 语句</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/21-63c30a7689d9d977185fcfc646ddbbfc.png" width="1872" height="1160" class="img_ev3q"></p>
<p>选择 <strong>生成 DDL 语句</strong>，并选择对端数据源，便可转化为对应数据源的 DDL 语句。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/22-4a3f672ab270fedb9424e8671df25d2f.png" width="2404" height="1422" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/tutorials/mysql_management#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>本文展示了如何管理和操作 MySQL 数据库和数据表，全程使用可视化工具 CloudDM 个人版，希望对大家有所帮助。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="使用教程" term="使用教程"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 CloudDM 和钉钉流程化管理数据库变更审批]]></title>
        <id>https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review</id>
        <link href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review"/>
        <updated>2025-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 接入钉钉，支持实时通知与移动办公，满足广大企业用户的实际需求。]]></summary>
        <content type="html"><![CDATA[<p>CloudDM 是一个专为团队协同工作打造的数据库数据管控平台，在管控数据库安全变更的过程中，为提高效率，CloudDM 接入钉钉，支持实时通知与移动办公，满足广大企业用户的实际需求。</p>
<p>本文将介绍如何使用 CloudDM 和钉钉实现高效的数据库变更审批。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="接入钉钉">接入钉钉<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E6%8E%A5%E5%85%A5%E9%92%89%E9%92%89" class="hash-link" aria-label="接入钉钉的直接链接" title="接入钉钉的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建钉钉应用">创建钉钉应用<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E5%88%9B%E5%BB%BA%E9%92%89%E9%92%89%E5%BA%94%E7%94%A8" class="hash-link" aria-label="创建钉钉应用的直接链接" title="创建钉钉应用的直接链接">​</a></h3>
<ol>
<li>登录 <a href="https://open-dev.dingtalk.com/" target="_blank" rel="noopener noreferrer">钉钉开发者后台</a>)，选择相应的组织，进入后台页面。</li>
<li><a href="https://open.dingtalk.com/document/isvapp/obtain-developer-permissions" target="_blank" rel="noopener noreferrer">获取开发者权限</a>)，如已有权限则略过。</li>
<li>点击 <strong>应用开发</strong> &gt; <strong>钉钉应用</strong> &gt; <strong>创建应用</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-37572a386a8be53166c47ca8863e28a5.png" width="2354" height="562" class="img_ev3q"></li>
<li>填写应用的基础信息，并点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-269be726bd4581e6993346c42b5c3e4d.png" width="2342" height="1140" class="img_ev3q"></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="配置应用">配置应用<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8" class="hash-link" aria-label="配置应用的直接链接" title="配置应用的直接链接">​</a></h3>
<ol>
<li>点击 <strong>权限管理</strong>，批量申请以下权限：<!-- -->
<ul>
<li>邮箱等个人信息</li>
<li>成员信息读权限</li>
<li>根据手机号获取成员基本信息权限</li>
<li>通讯录部门成员读权限</li>
<li>审批流数据管理权限</li>
<li>工作流实例写权限</li>
<li>工作流模板读权限</li>
<li>工作流实例读权限
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-21de6c4282326f744e93483dd78faa17.png" width="2614" height="1268" class="img_ev3q"></li>
</ul>
</li>
<li>点击 <strong>凭证与基础信息信息</strong>，复制 <strong>AgentId</strong>, <strong>Client ID</strong>, <strong>Client Secret</strong>。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-55ef4ea4c5867c8e8690a0be8c0a819b.png" width="1752" height="854" class="img_ev3q"></li>
<li>回到 CloudDM 平台，点击 <strong>配置</strong> &gt; <strong>个人偏好</strong>。填写参数 <strong>dingApprovalConfigAk</strong>, <strong>dingApprovalConfigSk</strong>, <strong>dingAgentId</strong>，并修改 <strong>dingEnableApprovalService</strong> 参数值为 true。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-e180a8b8f0a75c0655bb0a568ee12ec5.png" width="2368" height="1154" class="img_ev3q"></li>
<li>回到钉钉开放平台，点击 <strong>事件订阅</strong> &gt; <strong>已完成接入，验证连接通道</strong>。在 <strong>审批事件</strong> 中，通过 <a href="https://open.dingtalk.com/document/orgapp/event-subscription-overview#8dcdbb72adhxy" target="_blank" rel="noopener noreferrer">订阅设置</a> 只订阅对应模版的事件。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-5fbd0f7f4a5ed56ee4bf707a53f448e9.png" width="2144" height="1050" class="img_ev3q"></li>
<li>点击 <strong>版本管理与发布</strong> &gt; <strong>创建新版本</strong>。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-4925685d00e40c60db81fef028da0ee3.png" width="2138" height="1046" class="img_ev3q"></li>
<li>填写版本基础信息，应用可见范围选择 <strong>全部员工</strong>，并点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-3c88c13a45b63d037c891857d4ba5bd3.png" width="1938" height="948" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建钉钉表单">创建钉钉表单<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E5%88%9B%E5%BB%BA%E9%92%89%E9%92%89%E8%A1%A8%E5%8D%95" class="hash-link" aria-label="创建钉钉表单的直接链接" title="创建钉钉表单的直接链接">​</a></h2>
<ol>
<li>进入钉钉 OA 审批管理后台，点击 <strong>创建新表单</strong>。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-d0a286934e04d4cf5108b6d35ea87c2a.png" width="2042" height="1196" class="img_ev3q"></li>
<li>在 <strong>表单设计</strong> 的步骤，添加如下控件且均不要开启必填选项：<!-- -->
<ul>
<li>标题（单行输入框）</li>
<li>目标数据源（单行输入框）</li>
<li>需求描述（多行输入框）</li>
<li>执行 SQL（多行输入框）</li>
<li>回滚 SQL（多行输入框）</li>
<li>预计受影响行数（数字输入框）
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-810432e76b24f54f3fb8913b9f11c4c7.png" width="2370" height="1302" class="img_ev3q"></li>
</ul>
</li>
<li>在 <strong>流程设计</strong> 的步骤，设置各节点的审批人及审批方式。只支持指定审批人或系统自动选择，不支持发起人自选。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-2cabd2db725c00fef61ba4488ef66f2c.png" width="2062" height="1136" class="img_ev3q"></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="启用工单">启用工单<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E5%90%AF%E7%94%A8%E5%B7%A5%E5%8D%95" class="hash-link" aria-label="启用工单的直接链接" title="启用工单的直接链接">​</a></h3>
<ol>
<li>在 CloudDM 平台上方导航栏，点击 <strong>查询设置</strong>。</li>
<li>在 <strong>环境</strong> 页签下，为对应的环境开启工单功能。</li>
<li>在弹出的对话框中选择引擎为 <strong>钉钉流程</strong>，模板为刚才在钉钉创建的模版。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/12-ed8b1a236fd214347cb8f2892be1d379.png" width="1976" height="958" class="img_ev3q"></li>
</ol>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="可能遇到的问题">可能遇到的问题<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E5%8F%AF%E8%83%BD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98" class="hash-link" aria-label="可能遇到的问题的直接链接" title="可能遇到的问题的直接链接">​</a></h4>
<ul>
<li>网络异常：请检查部署 CloudDM 的服务器能否连接到外网。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/13-59866e8e762d00d69d803fa56afdf989.png" width="2306" height="1148" class="img_ev3q"></li>
<li>配置错误：请检查 <strong>配置</strong> -&gt; <strong>个人偏好</strong> 的配置是否正确。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/14-8e8e803a23986317801dc2b8f7c852a8.png" width="1876" height="938" class="img_ev3q"></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单">创建工单<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h2>
<ol>
<li>在上方导航栏点击 <strong>工单</strong>，提交工单。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/15-1650c24f631a7588967a6eb150eb693b.png" width="2222" height="1084" class="img_ev3q"></li>
<li>填写工单信息后，提交工单<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/16-19bc2a15e097cdad49dc3269d0f50c9f.png" width="2150" height="1042" class="img_ev3q"></li>
<li>点击右上角的 <strong>钉钉审批</strong>，便可直接跳转到钉钉对应的审批单进行操作。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/17-259590f4292dae0fc5fdd2f98f4d5f30.png" width="2292" height="1114" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/18-fb59134fb0e88789a22e7abc18b3974a.png" width="1806" height="998" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="钉钉审批小操作">钉钉审批小操作<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E9%92%89%E9%92%89%E5%AE%A1%E6%89%B9%E5%B0%8F%E6%93%8D%E4%BD%9C" class="hash-link" aria-label="钉钉审批小操作的直接链接" title="钉钉审批小操作的直接链接">​</a></h2>
<ul>
<li>工单发起人可以点击左下方的催办进行催单。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/19-bcbe4ea444d127666f136ac6df7d8ff2.png" width="2006" height="1108" class="img_ev3q"></li>
<li>可以通过多种方式通知审批人进行审批。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/20-79840c9c1616ff9a45ff23d3d9751f68.png" width="1808" height="1350" class="img_ev3q"></li>
<li>对于存在疑问的工单还可以快速建群讨论。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/21-46b4ab7f11dc03840384e37ee91fd7a7.png" width="2008" height="1112" class="img_ev3q"></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="效果展示">效果展示<a href="https://www.cdmgr.com/blog/tutorials/dingtalk_sql_review#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA" class="hash-link" aria-label="效果展示的直接链接" title="效果展示的直接链接">​</a></h2>
<p>通过审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/22-3967c723ac60d472452195e9735bbc52.png" width="8426" height="2208" class="img_ev3q"></p>
<p>拒绝审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/23-272519e3874e08629c0d0b32436a9874.png" width="8422" height="2208" class="img_ev3q"></p>]]></content>
        <author>
            <name>刘琳玉</name>
        </author>
        <category label="使用教程" term="使用教程"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 CloudDM 和飞书流程化管理数据库变更审批]]></title>
        <id>https://www.cdmgr.com/blog/tutorials/feishu_sql_review</id>
        <link href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review"/>
        <updated>2025-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 接入飞书，支持实时通知与移动办公，满足广大企业用户的实际需求。]]></summary>
        <content type="html"><![CDATA[<p>CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中，为提高效率，方便用户使用，CloudDM 接入了主流 OA 协同办公系统（包括钉钉、飞书、企业微信），支持实时通知与移动办公，满足广大企业用户的实际需求。</p>
<p>本文将介绍如何使用 CloudDM 和飞书实现高效的数据库变更审批。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="接入飞书">接入飞书<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E6%8E%A5%E5%85%A5%E9%A3%9E%E4%B9%A6" class="hash-link" aria-label="接入飞书的直接链接" title="接入飞书的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建飞书应用">创建飞书应用<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E5%88%9B%E5%BB%BA%E9%A3%9E%E4%B9%A6%E5%BA%94%E7%94%A8" class="hash-link" aria-label="创建飞书应用的直接链接" title="创建飞书应用的直接链接">​</a></h3>
<ol>
<li>登录 <a href="https://open.feishu.cn/app" target="_blank" rel="noopener noreferrer">飞书开发者后台</a>，选择相应的组织，进入后台页面。</li>
<li>点击 <strong>创建企业自建应用</strong>，填写应用基础信息，并点击 <strong>创建</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-a7e008d95d3a52b35f56e54fa1c78c10.png" width="1982" height="970" class="img_ev3q"></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="配置飞书应用">配置飞书应用<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E9%85%8D%E7%BD%AE%E9%A3%9E%E4%B9%A6%E5%BA%94%E7%94%A8" class="hash-link" aria-label="配置飞书应用的直接链接" title="配置飞书应用的直接链接">​</a></h3>
<ol>
<li>点击 <strong>权限管理</strong>，批量开通：</li>
</ol>
<ul>
<li>审批所有权限</li>
<li>通讯录所有权限
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-69763aa99b62f00a3ee573ed1abe1077.png" width="2358" height="1154" class="img_ev3q"></li>
</ul>
<ol start="2">
<li>点击 <strong>凭证与基础信息</strong>，复制 <strong>App ID</strong>、<strong>App Secret</strong>，为 CloudDM 配置作准备。<br>
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-0dd6b4caf784f3317a0f8eb52639685c.png" width="2052" height="1000" class="img_ev3q"></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建审批模板">创建审批模板<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E5%88%9B%E5%BB%BA%E5%AE%A1%E6%89%B9%E6%A8%A1%E6%9D%BF" class="hash-link" aria-label="创建审批模板的直接链接" title="创建审批模板的直接链接">​</a></h3>
<ol>
<li>进入 <a href="https://www.feishu.cn/approval/admin/approvalList" target="_blank" rel="noopener noreferrer">飞书审批管理后台</a>，点击 <strong>审批管理</strong> &gt; <strong>创建审批</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-a69ea925cee496c30fa2efbbb54ef292.png" width="2006" height="974" class="img_ev3q"></li>
<li>点击 <strong>创建自定义审批</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-ebd47da6c71d54e3031794fb4aa0bbab.png" width="2226" height="1086" class="img_ev3q"></li>
<li>在 <strong>表单设计</strong> 的步骤，添加如下控件且均不要开启必填选项：<!-- -->
<ul>
<li>标题（单行文本）</li>
<li>目标数据源（单行文本）</li>
<li>需求描述（多行文本）</li>
<li>执行 SQL（多行文本）</li>
<li>回滚 SQL（多行文本）</li>
<li>预计受影响行数（数字文本）
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-680cc361397e7873220cd3a86be802fb.png" width="2112" height="1064" class="img_ev3q"></li>
</ul>
</li>
<li>在 <strong>流程设计</strong> 的步骤，设置各节点的审批人及审批方式。只支持指定审批人或系统自动选择，不支持发起人自选。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-f9fd8925e098a14091c4ddaddaa746c3.png" width="1894" height="930" class="img_ev3q"></li>
<li>配置完成后，右上角点击 <strong>发布</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-6ef23ec2e2413296fca8a59bee75fa2a.png" width="1942" height="948" class="img_ev3q"></li>
<li>创建完成后，回到审批管理页面，点击修改图标。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-3c03b5bdad0ec71380f3aee50b2ff296.png" width="2332" height="1182" class="img_ev3q"></li>
<li>在页面上方的地址栏中，复制 definitionCode。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-946d183434e914facc1597b0875c576a.png" width="2086" height="1108" class="img_ev3q"></li>
<li>进入 <a href="https://open.feishu.cn/document/server-docs/approval-v4/event/event-interface/subscribe" target="_blank" rel="noopener noreferrer">开发文档</a>，点击 <strong>尝试一下</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-cb1813de666c90c6307d92a8a8ba7d52.png" width="2180" height="1102" class="img_ev3q"></li>
<li>填入刚才复制的 definitionCode，点击 <strong>开始调试</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/12-5090b50ea3241c122dd0e28a6d45830c.png" width="2124" height="1078" class="img_ev3q"></li>
<li>出现以下结果则说明订阅事件成功。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/13-fd975ef740f1e34c56655304fc3a0742.png" width="2276" height="1158" class="img_ev3q"></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="配置-clouddm">配置 CloudDM<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E9%85%8D%E7%BD%AE-clouddm" class="hash-link" aria-label="配置 CloudDM的直接链接" title="配置 CloudDM的直接链接">​</a></h3>
<ol>
<li>回到 CloudDM 平台，点击 <strong>配置</strong> &gt; <strong>个人偏好</strong>。</li>
<li>将 <strong>App ID</strong> 复制到 <strong>feishuApprovalAppID</strong>、<strong>App Secret</strong> 复制到 <strong>feishuApprovalAppSecret</strong>、<strong>definitionCode</strong> 复制到 <strong>feishuApprovalTemplateList</strong>（如有多个审批模版码，使用<code>,</code>分隔），并修改 <strong>feishuEnableApprovalService</strong> 参数值为 true。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/14-0059ece76efb78b37368418e8cbd9b02.png" width="1998" height="986" class="img_ev3q"></li>
<li>回到飞书开放平台，在左侧导航栏点击 <strong>事件与回调</strong>。<!-- -->
<ol>
<li>订阅方式选择 <strong>使用长连接接收事件</strong>，点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/15-514f368c0d564d0778f8ef069661af3b.png" width="2146" height="1092" class="img_ev3q"></li>
<li>点击 <strong>添加事件</strong>。添加 <strong>审批实例状态变更</strong> 和 <strong>审批任务状态变更</strong> 事件。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/16-73fec1f4b290f69756f20a20b4b3baaa.png" width="2158" height="1088" class="img_ev3q"></li>
</ol>
</li>
<li>点击 <strong>版本管理与发布</strong> &gt; <strong>创建版本</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/17-880985348a29cec981d68ad6ce1807bd.png" width="2336" height="1168" class="img_ev3q"></li>
<li>填写版本基础信息，应用可用范围选择 <strong>所有员工</strong>，并点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/18-efcd64719348454613cd73c54a82836e.png" width="1940" height="984" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单">创建工单<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h2>
<ol>
<li>在 CloudDM 平台上方导航栏，点击 <strong>查询设置</strong>。</li>
<li>在 <strong>环境</strong> 页签下，为对应的环境开启工单功能。</li>
<li>在弹出的对话框中选择引擎为 <strong>飞书流程</strong>，模板为刚才在飞书创建的模版。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/19-1eddb40de51ac86ff77b0dc5587adb2f.png" width="2104" height="1064" class="img_ev3q"></li>
<li>在上方导航栏点击 <strong>工单</strong>，并 <a href="https://www.cdmgr.com/docs/approval/approval_submit">提交工单</a>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/20-3eb3dc0592a253c9ad97bc51eeadd631.png" width="2248" height="1090" class="img_ev3q"></li>
<li>提交工单后，点击右上角 <strong>飞书审批</strong>，即可跳转到飞书审批页面。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/21-360c56e032995b3e8839df8c23174af1.png" width="2166" height="1054" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="效果展示">效果展示<a href="https://www.cdmgr.com/blog/tutorials/feishu_sql_review#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA" class="hash-link" aria-label="效果展示的直接链接" title="效果展示的直接链接">​</a></h2>
<p>通过审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/22-ad1454cbee23d60fe009cd0f2ee233b8.jpeg" width="8766" height="2208" class="img_ev3q"></p>
<p>拒绝审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/23-4433724f55b052cc909d785c072be60f.jpeg" width="8792" height="2208" class="img_ev3q"></p>]]></content>
        <author>
            <name>刘琳玉</name>
        </author>
        <category label="使用教程" term="使用教程"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 CloudDM 和企业微信流程化管理数据库变更审批]]></title>
        <id>https://www.cdmgr.com/blog/tutorials/wecom_sql_review</id>
        <link href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review"/>
        <updated>2025-03-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 接入企业微信，支持实时通知与移动办公，满足广大企业用户的实际需求。]]></summary>
        <content type="html"><![CDATA[<p>CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中，为提高效率，方便用户使用，CloudDM 接入了主流 OA 协同办公系统（包括钉钉、飞书、企业微信），支持实时通知与移动办公，满足广大企业用户的实际需求。</p>
<p>本文将介绍如何使用 CloudDM 和企业微信实现高效的数据库变更审批。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="前置要求">前置要求<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E5%89%8D%E7%BD%AE%E8%A6%81%E6%B1%82" class="hash-link" aria-label="前置要求的直接链接" title="前置要求的直接链接">​</a></h2>
<p>部署 CloudDM Console 的服务器能够被外网访问。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建企业微信应用">创建企业微信应用<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E5%88%9B%E5%BB%BA%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E5%BA%94%E7%94%A8" class="hash-link" aria-label="创建企业微信应用的直接链接" title="创建企业微信应用的直接链接">​</a></h2>
<ol>
<li>登录 <a href="https://work.weixin.qq.com/wework_admin/frame#apps" target="_blank" rel="noopener noreferrer">企业微信后台管理</a>。</li>
<li>点击 <strong>创建应用</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-9ce8831cb2fb483872195b8da177c35e.png" width="2356" height="1158" class="img_ev3q"></li>
<li>填写应用基础信息，并设置可见范围，点击 <strong>创建应用</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-3f3a9eaf8592ef75f939d06a801ea4d0.png" width="2316" height="1132" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="配置回调信息">配置回调信息<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E9%85%8D%E7%BD%AE%E5%9B%9E%E8%B0%83%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="配置回调信息的直接链接" title="配置回调信息的直接链接">​</a></h2>
<ol>
<li>点击 <strong>设置 API 接收</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-1571680ffe1325b3dd5aa5861b530fd8.png" width="2172" height="1078" class="img_ev3q"></li>
<li>在 CloudDM 登入主账号。在 <strong>配置</strong> &gt; <strong>操作审计</strong> 中找到主账号的 uid 并复制。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-07e94b5b29dda8d7d63796cfbab1d7e1.png" width="2186" height="1112" class="img_ev3q"></li>
<li>回到企业微信后台管理平台，随机获取 <strong>Token</strong>，<strong>EncodingAESKey</strong>。设置 URL 为 CloudDM Console 部署机器域名+/callback/event?puid=<code>上一步操作中复制的puid</code>&amp;platform=WECHAT&amp;eventType=APPROVAL
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-5c57cc21bd35dfe55d6cbc931fa1bc5d.png" width="2342" height="1166" class="img_ev3q"></li>
<li>在上方导航栏中点击 <strong>我的企业</strong>。获取 <strong>企业ID</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-b5cf788729c489562bb8fd17de6db296.png" width="2250" height="1100" class="img_ev3q"></li>
<li>回到 CloudDM 界面。在 <strong>配置</strong> &gt; <strong>个人偏好</strong> 中将之前获取的 <strong>Token</strong> 填入 <strong>wechatApprovalToken</strong>，<strong>EncodingAESKey</strong> 填入 <strong>EncodingAESKey</strong>，<strong>企业ID</strong> 填入 <strong>wechatApprovalCorpId</strong>，并开启 <strong>wechatEnableApprovalService</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-cd73a416074836f0655642c793723293.png" width="1956" height="954" class="img_ev3q"></li>
<li>返回企业微信后台管理平台的 <strong>API 接收消息</strong> 页面，点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-890ebfc24490aa055d9b7499cbb228ff.png" width="2204" height="1080" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建审批模版">创建审批模版<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E5%88%9B%E5%BB%BA%E5%AE%A1%E6%89%B9%E6%A8%A1%E7%89%88" class="hash-link" aria-label="创建审批模版的直接链接" title="创建审批模版的直接链接">​</a></h2>
<ol>
<li>回到 <strong>应用管理</strong>，选择 <strong>审批</strong> 应用。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-ed3cd6bd8406871e2c8f6142344b7397.png" width="2426" height="1192" class="img_ev3q"></li>
<li>点击 <strong>添加模版</strong>，选择自定义模版。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-2e0b358c5f6e11475686963680546930.png" width="2182" height="1074" class="img_ev3q"></li>
<li>按顺序添加如下控件且均不要开启必填选项：<!-- -->
<ul>
<li>标题（文本）</li>
<li>目标数据源（文本）</li>
<li>需求描述（多行文本）</li>
<li>执行 SQL（多行文本）</li>
<li>回滚 SQL（多行文本）</li>
<li>预计受影响行数（文本）
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-2a688af113cac2feabf9354c9ec2d7a2.png" width="2278" height="1120" class="img_ev3q"></li>
</ul>
</li>
<li>点击下一步后，设置 <strong>审批流程</strong>。根据需要设置审批流程，流程节点需使用指定审批人方式。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/12-85044fe517a35ab1ba0cef0abda38dd4.png" width="1988" height="982" class="img_ev3q"></li>
<li>配置完成后，在最下方点击 <strong>保存</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/13-7f900969321aeec85a5c5e16e9366a20.png" width="2302" height="1124" class="img_ev3q"></li>
<li>保存完成后，回到 <strong>审批</strong> 应用页面，开启模版回调通知和审批应用。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/14-8f8d4b35c60a2295693d76c5a2a9b20d.png" width="2304" height="1122" class="img_ev3q"></li>
<li>在模版管理，点击编辑需要使用的模版，在页面上方的地址栏中获取 <strong>审批模版码</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/15-c47077b14c7dd881992319aacfb2d65d.png" width="1994" height="1058" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="配置-api-调用信息">配置 API 调用信息<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E9%85%8D%E7%BD%AE-api-%E8%B0%83%E7%94%A8%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="配置 API 调用信息的直接链接" title="配置 API 调用信息的直接链接">​</a></h2>
<ol>
<li>回到创建的应用，获取 <strong>AgentId</strong>、<strong>Secret</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/16-33c068983200ce817946b5cc5905b917.png" width="1996" height="1020" class="img_ev3q"></li>
<li>回到 CloudDM 界面。在 <strong>配置</strong> &gt; <strong>个人偏好</strong> 中将 <strong>AgentId</strong> 复制到 <strong>wechatApprovalCorpId</strong>，<strong>Secret</strong> 复制到 <strong>wechatApprovalSecret</strong>，<strong>审批模版码</strong> 复制到 <strong>wechatApprovalTemplateList</strong>（如有多个审批模版码，使用<code>,</code>分隔），点击 <strong>保存</strong>。</li>
<li>在企业微信应用管理页面最下方，将部署 CloudDM Console 的服务器配置 <strong>企业可信IP</strong>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/17-9798fd09895a8f17b9b93c3aa7853929.png" width="2092" height="996" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="创建工单">创建工单<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E5%88%9B%E5%BB%BA%E5%B7%A5%E5%8D%95" class="hash-link" aria-label="创建工单的直接链接" title="创建工单的直接链接">​</a></h2>
<ol>
<li>在 CloudDM 平台上方导航栏，点击 <strong>查询设置</strong>。</li>
<li>在 <strong>环境</strong> 页签下，为对应的环境开启工单功能。</li>
<li>在弹出的对话框中选择引擎为 <strong>微信流程</strong>，模板为刚才在飞书创建的模版。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/18-ca364d70b428366d56e6e457e69e49ff.png" width="2116" height="1062" class="img_ev3q"></li>
<li>在上方导航栏点击 <strong>工单</strong>，并 <a href="https://www.cdmgr.com/docs/approval/approval_submit">提交工单</a>。
<img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/19-3e53ac409c77354474696d7133a99dd0.png" width="2338" height="1132" class="img_ev3q"></li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="效果展示">效果展示<a href="https://www.cdmgr.com/blog/tutorials/wecom_sql_review#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA" class="hash-link" aria-label="效果展示的直接链接" title="效果展示的直接链接">​</a></h2>
<p>通过审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/20-521f5a5e0c66a75cf652c0e43fbe7b6d.png" width="2886" height="1100" class="img_ev3q"></p>
<p>拒绝审批</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/21-4c5583193db3dcfc8f9f3516acbf6ef9.png" width="2338" height="906" class="img_ev3q"></p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="使用教程" term="使用教程"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CloudDM 强化 StarRocks 可视化数据管理能力]]></title>
        <id>https://www.cdmgr.com/blog/data_management/starrocks_visual_management</id>
        <link href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management"/>
        <updated>2025-03-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 个人版在修改 StarRocks 表结构方面进一步优化，大幅提升 StarRocks 表结构设计效率]]></summary>
        <content type="html"><![CDATA[<p>CloudDM 个人版是一款数据库数据管理客户端工具，支持 <a href="https://forum.mirrorship.cn/t/topic/10747" target="_blank" rel="noopener noreferrer">StarRocks 可视化建表</a>，创建表时可选择分桶、配置数据模型。
目前版本持续更新，在修改 StarRocks 表结构方面进一步优化，大幅提升 StarRocks 表结构设计效率。当前 CloudDM 支持：</p>
<ul>
<li>可视化设计表</li>
<li>查看索引</li>
<li>筛选查看外部表</li>
</ul>
<p>下面依次展示如何修改表结构、查看索引及区分外部表。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何修改表结构">如何修改表结构<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9%E8%A1%A8%E7%BB%93%E6%9E%84" class="hash-link" aria-label="如何修改表结构的直接链接" title="如何修改表结构的直接链接">​</a></h2>
<p>使用 <a href="https://www.cdmgr.com/docs/intro/product_intro">CloudDM</a>，添加完 StarRocks 数据源之后，右键需要修改的表，点击 <strong>设计表</strong>。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-9dae8804603f3719daa6894e8cc3d00c.png" width="2300" height="1344" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="修改表名">修改表名<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E4%BF%AE%E6%94%B9%E8%A1%A8%E5%90%8D" class="hash-link" aria-label="修改表名的直接链接" title="修改表名的直接链接">​</a></h3>
<p>在结构设计器中选择 <strong>基本信息</strong>，可直接修改表名。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-da866f009c220f6b87c182d118cb3bfe.png" width="2206" height="1288" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="修改字段">修改字段<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E4%BF%AE%E6%94%B9%E5%AD%97%E6%AE%B5" class="hash-link" aria-label="修改字段的直接链接" title="修改字段的直接链接">​</a></h3>
<p>在结构设计器中选择 <strong>列</strong>，然后选择一个存在的列，在右侧可以配置列的信息。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-3ecdd4aff8487944ceb4ae9b09e1b21c.png" width="2048" height="1200" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="添加字段">添加字段<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E6%B7%BB%E5%8A%A0%E5%AD%97%E6%AE%B5" class="hash-link" aria-label="添加字段的直接链接" title="添加字段的直接链接">​</a></h3>
<p>在结构设计器中选择 <strong>列</strong>，然后点击 <strong>增加</strong> 按钮新建一个列，在右侧可以配置列的信息。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-c0ab2e7046112473516ee715c0de88bf.png" width="2064" height="1202" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="修改列名">修改列名<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E4%BF%AE%E6%94%B9%E5%88%97%E5%90%8D" class="hash-link" aria-label="修改列名的直接链接" title="修改列名的直接链接">​</a></h3>
<p>CloudDM 个人版会识别 StarRocks 版本，对于 StarRocks 3.3 以上版本，允许修改列名。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-c2c0ac581edddbc412647504fbbd2113.png" width="1734" height="1014" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-9eaf951f4acbfa510530bc7e52c8c9a6.png" width="2210" height="1294" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何查看索引">如何查看索引<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E7%B4%A2%E5%BC%95" class="hash-link" aria-label="如何查看索引的直接链接" title="如何查看索引的直接链接">​</a></h2>
<p>右键需要查看索引的表，点击 <strong>设计表</strong>，即可查看索引信息。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-bf47d9012b5ec084f3c4bb674fa246cb.png" width="2036" height="1188" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-89b168ff531778915d54b9f3c566ae2d.png" width="2282" height="1332" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="区分外部表">区分外部表<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E5%8C%BA%E5%88%86%E5%A4%96%E9%83%A8%E8%A1%A8" class="hash-link" aria-label="区分外部表的直接链接" title="区分外部表的直接链接">​</a></h2>
<p>可单独筛选查看外部表。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-be4adde4389395a0ef413590b33b0c08.png" width="2214" height="1296" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/starrocks_visual_management#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>本文我们介绍了如何使用 CloudDM 可视化设计 StarRocks 表，以及区分外部表。感兴趣的话，欢迎试用。</p>]]></content>
        <author>
            <name>刘琳玉</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CloudDM 接入主流 OA 系统，简化工单审批流程]]></title>
        <id>https://www.cdmgr.com/blog/data_management/integrate_with_oa</id>
        <link href="https://www.cdmgr.com/blog/data_management/integrate_with_oa"/>
        <updated>2025-01-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用数据库数据管理工具 CloudDM，轻松衔接企业 OA 系统审批流程，节约时间及管理成本，显著提升团队的开发协作效率]]></summary>
        <content type="html"><![CDATA[<p>数据库数据管控平台在维护企业数据安全、数据库规范方面不可或缺，这一点毋庸置疑。
但在实际使用数据库数据管理系统时，常常面临一个问题：工单审批流程集中在数据管理系统，然而并非所有员工都使用这个系统，导致审批困难、效率低下。
当然，可以强制相关员工加入该系统，但这会增加时间及管理成本，并非最佳的解决方法。</p>
<p>实际上，大多数企业都有自己的协同办公系统，如钉钉、飞书等主流平台。这些平台集成了各类日常办公操作，如考勤、审批等，大大提升了办公效率。将企业 OA 系统接入数据库数据管理系统，既无需员工额外下载一个软件，又方便办公事务的集中管理，是简化工单审批流程的必行之道。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-接入-oa-系统">CloudDM 接入 OA 系统<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#clouddm-%E6%8E%A5%E5%85%A5-oa-%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="CloudDM 接入 OA 系统的直接链接" title="CloudDM 接入 OA 系统的直接链接">​</a></h2>
<p>CloudDM 是一款全自研数据库数据管控平台，专注企业组织数据安全。为提升用户体验，CloudDM 最近支持接入钉钉、飞书和企业微信三款 OA 系统，实现了 OA 系统与 CloudDM 的无缝衔接，让工单审批流程更加简便高效。</p>
<p>通常，将 OA 系统接入数据库数据管理软件，会出现各种各样的问题，如：</p>
<ul>
<li>网络出错，导致回调消息丢失，状态不同步。</li>
<li>调用接口失败，但是无法定位问题根源。</li>
<li>付费 API 过量使用，导致不必要的花费。</li>
</ul>
<p>CloudDM 作为一款专为企业级用户设计的数据库数据管控软件，充分考虑了上述问题，并从用户的角度出发，设置了各种解决方案：</p>
<table><thead><tr><th><strong>问题</strong></th><th><strong>解决方案</strong></th></tr></thead><tbody><tr><td>API 网络异常</td><td>在 API 调用过程中如遇网络错误，系统将自动记录相关信息，并安排在下一次执行重试。对于需要及时响应的操作，系统会向用户提供清晰的错误提示。</td></tr><tr><td>信息不同步</td><td>网络波动可能导致消息不同步。CloudDM 将定期检查所有待审批工单的状态，通过调用接口获取最新的审批信息。这一检查频率可以在配置中调整。用户也可以在工单详情页面手动刷新，直接从 API 获取最新的状态更新。</td></tr><tr><td>模版被删除</td><td>若尝试创建审批时发现模版已被删除，系统将自动把工单状态设置为失败，并在工单详情界面显示相应的错误信息。</td></tr><tr><td>其他异常</td><td>对于其他类型的错误，如无法找到匹配的用户信息或系统异常等无法推进流程的错误，系统会明确提示错误原因，并将工单状态设置为失败，以避免不必要的 API 调用次数。</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-第三方审批流程特点">CloudDM 第三方审批流程特点<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#clouddm-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%AE%A1%E6%89%B9%E6%B5%81%E7%A8%8B%E7%89%B9%E7%82%B9" class="hash-link" aria-label="CloudDM 第三方审批流程特点的直接链接" title="CloudDM 第三方审批流程特点的直接链接">​</a></h2>
<p>CloudDM 的第三方审批流程有两大特点：<strong>一致性</strong>、<strong>便捷性</strong>。</p>
<p><strong>一致性</strong>: 无论是通过 CloudDM 内置的审批流程还是整合其他 OA 系统，用户的操作体验都是统一的，几乎感觉不到不同审批系统间的差异，极大地提升了操作的流畅性和效率。</p>
<p><strong>便捷性</strong>: 用户只需进行简单的配置，即可在任一平台上发起审批流程。CloudDM 与外部 OA 系统都将实时同步最新的审批状态。用户无需在不同系统间切换，在一个平台上即可掌握审批进度。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何接入外部-oa-系统">如何接入外部 OA 系统<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#%E5%A6%82%E4%BD%95%E6%8E%A5%E5%85%A5%E5%A4%96%E9%83%A8-oa-%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="如何接入外部 OA 系统的直接链接" title="如何接入外部 OA 系统的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="钉钉">钉钉<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#%E9%92%89%E9%92%89" class="hash-link" aria-label="钉钉的直接链接" title="钉钉的直接链接">​</a></h3>
<p>请参考 <a href="https://www.cdmgr.com/docs/integrations/approval/dingtalk_approval">接入钉钉审批</a>，完成相关配置。配置成功后，可实现 CloudDM 与钉钉的无缝衔接。</p>
<ul>
<li>流程同步：CloudDM 与钉钉的审批页面实时同步审批流最新状态。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-d87f7ab3363071a907a7cff442a893af.png" width="7878" height="2308" class="img_ev3q"></p>
<ul>
<li>快速跳转：在 CloudDM 点击 <strong>钉钉审批</strong>即可直接跳转到钉钉对应的审批单，方便用户进行催单等操作。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-e1161c671f7816dd27b3c0a6f0013079.png" width="7878" height="2308" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="飞书">飞书<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#%E9%A3%9E%E4%B9%A6" class="hash-link" aria-label="飞书的直接链接" title="飞书的直接链接">​</a></h3>
<p>请参考 <a href="https://www.cdmgr.com/docs/integrations/approval/feishu_approval">接入飞书审批</a>，完成相关配置。配置成功后，可实现 CloudDM 与飞书的无缝衔接。</p>
<ul>
<li>流程同步<!-- -->:CloudDM<!-- --> 与飞书的审批页面实时同步审批流最新状态。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-7656e428eea43af12a8db48ff32f1077.png" width="8372" height="2208" class="img_ev3q"></p>
<ul>
<li>快速跳转：在 CloudDM 点击 <strong>飞书审批</strong>即可直接跳转到飞书对应的审批单，方便用户进行催单等操作。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-a14f34836683985f6cb946d13699fd50.png" width="8862" height="2208" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="企业微信">企业微信<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1" class="hash-link" aria-label="企业微信的直接链接" title="企业微信的直接链接">​</a></h3>
<p>请参考 <a href="https://www.cdmgr.com/docs/integrations/approval/wechat_approval">接入企业微信</a>，完成相关配置。配置成功后，可实现 CloudDM 与企业微信的无缝衔接。</p>
<ul>
<li>流程同步：CloudDM 与企业微信的审批页面实时同步审批流最新状态。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-c52ecbdc7845d8fc4479b040e8c51778.png" width="8404" height="2208" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/integrate_with_oa#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>使用数据库数据管理工具 <strong>CloudDM</strong>，轻松衔接企业 OA 系统审批流程，节约时间及管理成本，显著提升团队的开发协作效率。如果您对此感兴趣，欢迎免费体验产品。</p>]]></content>
        <author>
            <name>刘琳玉</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CloudDM 升级全新 SQL 审核架构，适配多种数据源]]></title>
        <id>https://www.cdmgr.com/blog/data_management/sql_review_upgrade</id>
        <link href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade"/>
        <updated>2024-12-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CloudDM 的 SQL 审核架构延续统一性、开放性、自由性的特点，在此基础上进行了重大技术升级，适配复杂编程场景及查询需求。]]></summary>
        <content type="html"><![CDATA[<p>对于任何一款数据库管理工具，SQL 审核都占据重要地位，因为它直接关系到数据库的安全性和业务稳定性。
通过 SQL 审核，可以有效发现并纠正 SQL 编写不当的问题，从而避免可能引发的数据库故障，如性能下降或数据泄露等严重后果‌。</p>
<p>CloudDM 是 ClouGence 公司推出的面向团队使用的数据库管理工具，支持云上、云下、多云多环境。目前支持 <strong>15</strong> 种数据源。未来更多数据源将逐步开放。对于 SQL 审核，CloudDM 提供了 <strong>59 个内置规则</strong>，并且 <strong>97%</strong> 以上规则同时适用于多种数据源。</p>
<table><thead><tr><th><strong>支持的数据源</strong></th><th style="text-align:center"><strong>内置查询规则</strong></th><th style="text-align:center"><strong>内置脱敏规则</strong></th></tr></thead><tbody><tr><td>MySQL</td><td style="text-align:center"><strong>53</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>PostgreSQL</td><td style="text-align:center"><strong>35</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>Greenplum</td><td style="text-align:center"><strong>35</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>OceanBase for MySQL</td><td style="text-align:center"><strong>52</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>PolarDB-X</td><td style="text-align:center"><strong>41</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>TiDB</td><td style="text-align:center"><strong>49</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>阿里云 AnalyticDB MySQL 版</td><td style="text-align:center"><strong>39</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>阿里云 RDS for MySQL</td><td style="text-align:center"><strong>53</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>阿里云 RDS for PostgreSQL</td><td style="text-align:center"><strong>35</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>阿里云 PolarDB for MySQL</td><td style="text-align:center"><strong>53</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>阿里云 PolarDB-X</td><td style="text-align:center"><strong>41</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>亚马逊 AWS MySQL</td><td style="text-align:center"><strong>53</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>亚马逊 AWS PostgreSQL</td><td style="text-align:center"><strong>35</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>微软 Azure for MySQL</td><td style="text-align:center"><strong>53</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr><tr><td>微软 Azure for PostgreSQL</td><td style="text-align:center"><strong>35</strong> 个</td><td style="text-align:center"><strong>5</strong> 个</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-sql-审核架构特点">CloudDM SQL 审核架构特点<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#clouddm-sql-%E5%AE%A1%E6%A0%B8%E6%9E%B6%E6%9E%84%E7%89%B9%E7%82%B9" class="hash-link" aria-label="CloudDM SQL 审核架构特点的直接链接" title="CloudDM SQL 审核架构特点的直接链接">​</a></h2>
<p>CloudDM 的 SQL 审核架构具有三大特点：<strong>统一性、开放性、自由性</strong>。</p>
<p><strong>统一性</strong>，是指技术架构层面 CloudDM 会通过 SQL 解析器将 SQL 的特征抽取为特定的审核数据模型。无论何种数据源都遵循同一个原则并使用相同的审核数据模型。这样做有两个好处：</p>
<ul>
<li>最大化减少技术实现差异，保证 SQL 审核功能的稳定性。</li>
<li>后续自定义规则时，降低学习门槛。</li>
</ul>
<p><strong>开放性</strong>，是指 CloudDM 中的所有规则，包括内置的众多规则，无一例外，全部通过其特有的 <strong>Rule Script</strong> 脚本来编写实现，并且所有内置规则的脚本全部 <strong>免费</strong>、<strong>开源</strong>。</p>
<p>CloudDM 不会藏有任何黑魔法。得益于 CloudDM 强大的 <strong>Rule Script</strong> 脚本引擎及统一的模型架构，所有规则都以高度透明的形式呈现出来。</p>
<p><strong>自由性</strong>，是指用户可以利用 <strong>Rule Script</strong> 脚本自由编写符合自己需要的 SQL 规则，并将其应用到不同环境中。当内置规则不满足需求时，用户可以在此基础上自由改写。也正是由于所有内置规则的脚本全部 <strong>免费</strong>、<strong>开源</strong>，用户才可以自由扩展、定制和改进。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="sql-审核架构全新升级">SQL 审核架构全新升级<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#sql-%E5%AE%A1%E6%A0%B8%E6%9E%B6%E6%9E%84%E5%85%A8%E6%96%B0%E5%8D%87%E7%BA%A7" class="hash-link" aria-label="SQL 审核架构全新升级的直接链接" title="SQL 审核架构全新升级的直接链接">​</a></h2>
<p>CloudDM 的 SQL 审核引擎架构在 <strong>Rule Script 脚本引擎</strong> 和 <strong>审核数据模型</strong> 方面都做出了重大升级：</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="脚本引擎">脚本引擎<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#%E8%84%9A%E6%9C%AC%E5%BC%95%E6%93%8E" class="hash-link" aria-label="脚本引擎的直接链接" title="脚本引擎的直接链接">​</a></h3>
<p>上一代 SQL 审核架构的脚本引擎参考了 <strong>BASIC</strong> 语言并面向规则脚本开发而设计，脚本语言支持如下能力：</p>
<ul>
<li>程序逻辑控制：<strong>多条语句顺序执行</strong>、<strong>IF 条件分支</strong>、<strong>ELSEIF 多条件分支</strong>。</li>
<li>丰富的表达式运算符：<strong>算数运算</strong>、<strong>比较运算</strong>、<strong>位运算</strong>、<strong>逻辑运算</strong>、<strong>匹配运算</strong>（CloudDM 特有）。</li>
<li>通用的类型系统：<strong>布尔</strong>、<strong>数值</strong>、<strong>字符串</strong>、<strong>时间</strong>、<strong>空值</strong>、<strong>集合</strong>、<strong>键值对。</strong></li>
<li>表达式运算：<strong>一元</strong>、<strong>二元</strong>、<strong>三元</strong> 表达式计算，还可以通过括号进行表达式提权。</li>
<li>属性访问：可以通过 “.” 对多层对象进行属性访问，并且支持对数组下标、键值下标的访问。</li>
<li>可以完整地表示 JSON 格式数据。</li>
<li>支持隐式类型转换及通过 CAST 进行强制类型转换。</li>
<li>可以调用自定义函数并传递参数。</li>
</ul>
<p>新一代 SQL 审核架构对 <strong>复杂编程场景</strong> 进行了更深入的支持，具体如下：</p>
<ul>
<li>新增定义并使用 <strong>变量</strong> 的能力：通过变量可以在较为复杂的 SQL 检查程序中有效地提升代码结构。</li>
<li>丰富表达式运算：支持 <strong>自增(++)</strong>、<strong>自减(--)</strong> 运算。</li>
<li>增强表达式处理能力：对 <strong>空值</strong> 的情况做了更深入的兼容和处理。</li>
<li>重构类型跟踪机制，在新的机制下有效解决了对象访问中因类型跟踪异常导致的报错问题。</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="审核数据模型">审核数据模型<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#%E5%AE%A1%E6%A0%B8%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B" class="hash-link" aria-label="审核数据模型的直接链接" title="审核数据模型的直接链接">​</a></h3>
<p>上一代 SQL 审核架构的审核数据模型中，SQL 语句和审核数据模型之间呈现 “一对一” 的关系：</p>
<ul>
<li>从 SQL 解析器出发，一条 SQL 语句归属于一种类型。</li>
<li>一种类型的 SQL 对应一个数据模型。</li>
<li>在此基础上支持多种 SQL 语句，覆盖了 DDL、DML 中绝大部分情况。</li>
</ul>
<p>新一代 SQL 审核架构中，SQL 语句和审核数据模型之间的 <strong>“一对一” 关系升级为 “一对多” 关系</strong>。</p>
<p>上一代模型架构在处理复杂语句时会出现特征抽取不够完整的问题。虽然丰富模型属性可以解决此类问题，但这会破坏 <strong>统一性</strong> 原则，并且增加学习门槛。例如 “INSERT ... SELECT” 语句，在上一代架构中将其识别为 INSERT。部分 SELECT 的特征只能作为更加离散的几个特征属性值。如果通过增加属性来解决 SELECT 语句特征提取的问题，势必会造成数据模型之间的混乱。</p>
<p>新架构中使用 “一对多” 关系，可以将这类语句有效地解释为多个结果，解决了部分特征无法抽取的问题，甚至面对更为复杂的查询也可轻松应对。</p>
<p>同时新架构对于不同数据源可进行差异化的处理。例如 MySQL 表上独特的 engine 属性只会出现在 MySQL 专用模型上，不会影响通用表模型。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="全新架构在未来的优势">全新架构在未来的优势<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#%E5%85%A8%E6%96%B0%E6%9E%B6%E6%9E%84%E5%9C%A8%E6%9C%AA%E6%9D%A5%E7%9A%84%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="全新架构在未来的优势的直接链接" title="全新架构在未来的优势的直接链接">​</a></h2>
<p>新架构在模型结构化上更进一步，呈现更加清晰的数据结构。有了清晰的结构化数据将会带来诸多好处，例如：</p>
<ul>
<li>未来可以有机会为用户提供 <strong>Rule Script</strong> 语言 IDE 环境，并提供更加智能的代码编写补全能力。</li>
<li>在未来基于模型的差异化可以使核心模型更加稳定，在产品迭代中使产品运行更加稳定。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用-clouddm-sql-审核">使用 CloudDM SQL 审核<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#%E4%BD%BF%E7%94%A8-clouddm-sql-%E5%AE%A1%E6%A0%B8" class="hash-link" aria-label="使用 CloudDM SQL 审核的直接链接" title="使用 CloudDM SQL 审核的直接链接">​</a></h2>
<ol>
<li>请参考 <a href="https://www.cdmgr.com/docs/maintain/install_docker">Docker 安装文档</a> 进行安装。</li>
<li>添加好数据源之后，点击 <strong>查询设置</strong> &gt; <strong>安全规范</strong> &gt; <strong>新建规范</strong>，新建一个安全规范。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-dcb92f0899cace98425fdc2497cdcf85.png" width="5004" height="2712" class="img_ev3q"></p>
<p>新建的规范默认会启用所有内置规则，用户可以根据需要自由选择和配置。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-67075d6d02c12dade8e914de15377fbc.png" width="2262" height="1412" class="img_ev3q"></p>
<ol start="3">
<li>点击 <strong>查询设置</strong> &gt; <strong>查询配置</strong>，切换到环境选项卡。可以在启用安全规范时绑定新建的 <strong>安全规范。</strong></li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-367436ea54bcc8c087518f1449abb46e.png" width="4704" height="1924" class="img_ev3q"></p>
<ol start="4">
<li>点击 <strong>数据查询</strong>，进入查询控制台，执行 SQL 语句，例如：“select * from <code>tb_mysql_types</code> limit 20;”。CloudDM 可以对其语句进行检测，并做出相应的提示。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-18241928b014f884e8a540b541f46a46.png" width="2216" height="1102" class="img_ev3q"></p>
<ol start="5">
<li>点击 <strong>查询设置</strong> &gt; <strong>安全规范置 &gt; 具体规范</strong>，在具体规范中搜索 “查询语句中的空条件” 可以找到这个规则。如果不需要这个规则，可以选择下面两种方式关闭这个规则。<!-- -->
<ul>
<li>点击 <strong>禁用</strong>。</li>
<li>设置规则属性中的 allow 配置为 true（没有关闭规则，只是规则上允许空条件）。</li>
</ul>
</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-2ff78ce420ba9c6b16b795aaf479c131.png" width="2030" height="1160" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/sql_review_upgrade#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>CloudDM 的 SQL 审核架构延续统一性、开放性、自由性的特点，在此基础上进行了重大技术升级，适配复杂编程场景及查询需求。如果您感觉本文有所收获，欢迎注册试用。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5 分钟用多种方式实现数据脱敏]]></title>
        <id>https://www.cdmgr.com/blog/data_management/data_masking_in_minutes</id>
        <link href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes"/>
        <updated>2024-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用 CloudDM 数据库数据管理工具，轻松实现数据脱敏，为数据安全提供保障。]]></summary>
        <content type="html"><![CDATA[<p>在数字化的今天，数据脱敏已成为保护数据隐私的重要手段。
在《大数据时代，数据脱敏助力企业信息安全》一文中，我们介绍了数据脱敏的重要性，以及 CloudDM 数据脱敏的实现方式。本文将手把手教你如何使用 CloudDM 以多种方式实现数据脱敏。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="数据脱敏方案概览">数据脱敏方案概览<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F%E6%96%B9%E6%A1%88%E6%A6%82%E8%A7%88" class="hash-link" aria-label="数据脱敏方案概览的直接链接" title="数据脱敏方案概览的直接链接">​</a></h2>
<p>在数据脱敏之前，用户首先需要明确，对于不同类型的敏感数据，采取不同的脱敏方案。CloudDM 支持对值和整行数据脱敏，满足用户不同的脱敏需求。</p>
<ul>
<li>列脱敏：针对手机号等单个敏感数据，可整列脱敏。</li>
</ul>
<table><thead><tr><th>脱敏前的数据</th><th></th><th>脱敏后的数据</th></tr></thead><tbody><tr><td>id</td><td>phone</td><td>id</td></tr><tr><td>1</td><td>19927384392</td><td>1</td></tr><tr><td>2</td><td>19829831782</td><td>2</td></tr><tr><td>3</td><td>18920192839</td><td>3</td></tr></tbody></table>
<ul>
<li>数据识别脱敏：当数据符合某种条件时，脱敏该数据。</li>
</ul>
<table><thead><tr><th>脱敏前的数据</th><th></th><th>脱敏后的数据</th></tr></thead><tbody><tr><td>name</td><td>comment</td><td>name</td></tr><tr><td>小明</td><td>up主真厉害</td><td>小明</td></tr><tr><td>小绿</td><td>好酷炫的操作</td><td>小绿</td></tr><tr><td>小白</td><td>就这，不如XX</td><td>小白</td></tr></tbody></table>
<ul>
<li>整行脱敏：针对安全级别较高的数据，可进行整行脱敏。</li>
</ul>
<table><thead><tr><th>脱敏前的数据</th><th></th><th></th><th>脱敏后的数据</th></tr></thead><tbody><tr><td>info</td><td>time</td><td>level</td><td>info</td></tr><tr><td>吃了KFC</td><td>10-1</td><td>normal</td><td>吃了KFC</td></tr><tr><td>吃了麦当劳</td><td>10-2</td><td>normal</td><td>吃了麦当劳</td></tr><tr><td>做了很重要的事</td><td>10-3</td><td>high</td><td>******</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="前提条件">前提条件<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前提条件的直接链接" title="前提条件的直接链接">​</a></h2>
<p>用户的角色需要拥有 <strong>安全规则/规范管理、查询配置管理</strong> 权限，若无该权限，可参考 <a href="https://www.cdmgr.com/docs/operation/roles_prem">权限说明</a> 进行授权。</p>
<ul>
<li><strong>安全规则/规范管理</strong>：管理规则规范。</li>
<li><strong>查询配置管理</strong>：环境绑定安全规范。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="操作步骤">操作步骤<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E6%93%8D%E4%BD%9C%E6%AD%A5%E9%AA%A4" class="hash-link" aria-label="操作步骤的直接链接" title="操作步骤的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-872e6fc41b20e0f8a0c3aa913196ef5d.png" width="2392" height="1368" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="选择脱敏规则">选择脱敏规则<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E9%80%89%E6%8B%A9%E8%84%B1%E6%95%8F%E8%A7%84%E5%88%99" class="hash-link" aria-label="选择脱敏规则的直接链接" title="选择脱敏规则的直接链接">​</a></h3>
<ol>
<li>登录 CloudDM 平台。在上方导航栏点击 <strong>查询设置</strong> &gt; <strong>安全规则</strong>，选择 <strong>脱敏规则</strong> 页签。</li>
<li>寻找需要使用的规则，详细内容可点击 <strong>详情</strong> 查看。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-ebf7a982324702213a9a7a063db82952.png" width="2728" height="1330" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建安全规范">创建安全规范<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E5%88%9B%E5%BB%BA%E5%AE%89%E5%85%A8%E8%A7%84%E8%8C%83" class="hash-link" aria-label="创建安全规范的直接链接" title="创建安全规范的直接链接">​</a></h3>
<ol>
<li>在上方导航栏点击 <strong>查询设置</strong> &gt; <strong>安全规范</strong>。</li>
<li>页面右上角点击 <strong>新建规范。</strong></li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-399bc2f7ccd222e043e78c184a79b4a8.png" width="2520" height="1224" class="img_ev3q"></p>
<ol start="3">
<li>输入规范名称后，点击 <strong>确认。</strong></li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-a2fcd431e0eeb365d7d83086db360c27.png" width="2250" height="1092" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="配置脱敏规则">配置脱敏规则<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E9%85%8D%E7%BD%AE%E8%84%B1%E6%95%8F%E8%A7%84%E5%88%99" class="hash-link" aria-label="配置脱敏规则的直接链接" title="配置脱敏规则的直接链接">​</a></h3>
<ol>
<li>选择一个安全规范，在操作栏点击 <strong>详情。</strong></li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-22bdf8c06139411ecc46ba9a59433966.png" width="2318" height="1130" class="img_ev3q"></p>
<ol start="2">
<li>启用对应的脱敏规则。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-8c46165396b4b229550a9d451a81ecd1.png" width="2284" height="1108" class="img_ev3q"></p>
<ol start="3">
<li>
<p>配置规则。每个规则都可以设置其脱敏方式、参数以及生效范围。</p>
<p>i. 点击操作栏中的 <strong>设置</strong>，配置脱敏方式：</p>
<ul>
<li>
<p>值：对于符合条件的数据，只脱敏该字段中的数据。</p>
</li>
<li>
<p>整行：对于符合条件的数据，脱敏整行数据。</p>
<p>ii. 在 <strong>值</strong> 一栏配置参数：设置脱敏规则参数，如下图则为设置需要脱敏的手机号号段。</p>
<p>iii. 点击操作栏中的 <strong>范围</strong>。在范围配置页面右上角，点击 <strong>新建范围</strong>。生效范围支持多种匹配机制，并且能够精确到列级别。用户可以根据自己的业务需求，灵活配置规则的适用范围。</p>
</li>
</ul>
</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/7-51299a6fde79907cbead0df41208b944.png" width="2294" height="1110" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/8-01020789524f84fef8532de7bc4bb663.png" width="2354" height="1146" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="环境绑定规范">环境绑定规范<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E7%8E%AF%E5%A2%83%E7%BB%91%E5%AE%9A%E8%A7%84%E8%8C%83" class="hash-link" aria-label="环境绑定规范的直接链接" title="环境绑定规范的直接链接">​</a></h3>
<ol>
<li>在上方导航栏点击 <strong>查询设置</strong> &gt; <strong>查询配置</strong></li>
<li>选择 <strong>环境</strong> 页签。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/9-1f382db694a3f20793348d57a6621447.png" width="2262" height="1108" class="img_ev3q"></p>
<ol start="3">
<li>在 <strong>安全规范</strong> 一栏中点击按钮，并选择需要绑定的安全规范。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/10-71e10f82967aeb1ad089e8f2a4ec9105.png" width="2396" height="1168" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="效果展示">效果展示<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA" class="hash-link" aria-label="效果展示的直接链接" title="效果展示的直接链接">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/11-db66871712af63f1a905e881af215cfe.png" width="2532" height="1232" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/data_masking_in_minutes#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>使用 <strong>CloudDM</strong> 数据库数据管理工具，轻松实现数据脱敏，为数据安全提供保障。如果感兴趣的话，欢迎免费试用。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[大数据时代，数据脱敏助力企业信息安全]]></title>
        <id>https://www.cdmgr.com/blog/data_management/data_masking_for_security</id>
        <link href="https://www.cdmgr.com/blog/data_management/data_masking_for_security"/>
        <updated>2024-11-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用 CloudDM 数据库数据管理工具，轻松实现数据脱敏，为数据安全提供保障。]]></summary>
        <content type="html"><![CDATA[<p>大数据时代，数据已成为许多企业的重要资产与发展基石。然而，由于没有恰当的保护措施，企业内部员工泄漏数据的情况频频发生。
有数据显示，在数据泄露事件中有 80% 为企业内部人员所为，快递、酒店、银行、房产中介、教育培训等各行各业无一幸免。这对数据库的使用管理提出了更高的要求。
团队开发使用数据库时<strong>如何加强数据安全和隐私保护呢？数据脱敏提供了一种数据安全防护的新范式。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是数据脱敏">什么是数据脱敏<a href="https://www.cdmgr.com/blog/data_management/data_masking_for_security#%E4%BB%80%E4%B9%88%E6%98%AF%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F" class="hash-link" aria-label="什么是数据脱敏的直接链接" title="什么是数据脱敏的直接链接">​</a></h2>
<p><strong>数据脱敏</strong>（Data Masking）是一种安全技术，用于保护敏感数据免遭未经授权的访问和泄露。它通过<strong>隐藏、加密、替换或修改</strong>存储在数据库、文件或其他存储系统中的敏感信息，降低数据的敏感度。数据脱敏有助于在开发、测试、培训或数据分析等环境中使用真实数据的副本，而不暴露实际的个人信息或商业秘密。</p>
<p>业内常用的数据脱敏主要有两种实现方式：</p>
<ul>
<li>指定列脱敏</li>
<li>数据识别脱敏</li>
</ul>
<p><strong>指定列脱敏</strong> 是指用户设置需要脱敏的列，对整列的数据进行脱敏。这种方式只需要配置需要数据脱敏的表和字段，配置较为简单，但需要对每张表逐一配置，当表数量较大时容易遗漏个别表。</p>
<p><strong>数据识别脱敏</strong> 是指用户配置脱敏规则，对查询出的数据进行分析，针对符合规则的数据进行脱敏。根据脱敏规则识别数据，灵活性更高，省去了遗漏敏感数据的烦恼，但开发脱敏规则有一定难度，且算法稳定性和脱敏性能难以保证。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-数据脱敏">CloudDM 数据脱敏<a href="https://www.cdmgr.com/blog/data_management/data_masking_for_security#clouddm-%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F" class="hash-link" aria-label="CloudDM 数据脱敏的直接链接" title="CloudDM 数据脱敏的直接链接">​</a></h2>
<p>CloudDM 是一款全自研数据库数据管控平台，专注企业组织数据安全。针对大数据时代，数据隐私保护难的痛点问题，CloudDM 开发出了一套灵活、友好的数据脱敏解决方案——Rule Script 引擎。</p>
<p>CloudDM 自研的 Rule Script 引擎会自动识别出数据所在的库表、字段名称、数据内容等信息，通过 Rule Script 的 domain 对象进行校验，便可根据自身需求脱敏数据。</p>
<p>目前，Rule Script 内置了 5 种常用脱敏规则，用户无需花费大量时间开发规则脚本，即使是非专业开发人员也可以轻松实现  <strong>指定列脱敏</strong> 和 <strong>数据识别脱敏</strong>。脱敏时还可以根据具体需要决定是脱敏 <strong>整行数据</strong> 还是脱敏 <strong>单个值</strong>。此外，针对特殊的业务需求，用户还可以自己编写脱敏规则，配置脱敏方式，即可对需要脱敏的内容脱敏。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="clouddm-脱敏引擎的优势">CloudDM 脱敏引擎的优势<a href="https://www.cdmgr.com/blog/data_management/data_masking_for_security#clouddm-%E8%84%B1%E6%95%8F%E5%BC%95%E6%93%8E%E7%9A%84%E4%BC%98%E5%8A%BF" class="hash-link" aria-label="CloudDM 脱敏引擎的优势的直接链接" title="CloudDM 脱敏引擎的优势的直接链接">​</a></h3>
<ul>
<li><strong>自动化</strong>：基于脱敏规则，对表中数据进行解析、判断与脱敏。全程自动化，无需人为操作干预，脱敏过程无感知。</li>
<li><strong>可拓展性</strong>：用户可以根据自身业务需求识别敏感数据，并灵活配置脱敏规则。产品中内置了常见的脱敏规则，可满足大部分业务的脱敏需求。此外，用户可自定义脱敏规则。</li>
<li><strong>灵活性</strong>：用户可根据数据的敏感程度及业务具体需求，选择整行数据脱敏或值脱敏。</li>
<li><strong>可用性</strong>：数据库内原始敏感数据参与数据识别，仅在结果返回时才进行脱敏处理。</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="如何使用数据脱敏">如何使用数据脱敏<a href="https://www.cdmgr.com/blog/data_management/data_masking_for_security#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F" class="hash-link" aria-label="如何使用数据脱敏的直接链接" title="如何使用数据脱敏的直接链接">​</a></h3>
<ol>
<li><strong>梳理敏感数据</strong>：对于不同的业务内容、业务群体，敏感数据的定义会有所差别，因此，数据脱敏前，首先需要根据实际业务场景和安全维度，识别并梳理敏感数据。例如，在物流系统中，作为用户，敏感字段包括手机号、订单信息、收货地址等；在支付系统中，作为用户，敏感字段可能还涉支付订单、银行卡信息等。</li>
<li><strong>确定脱敏方式</strong>：不同的数据可以采用不同的脱敏方式。对于特定的敏感字段，如手机号、地址等字段，可采取指定列脱敏的方式。而针对一些敏感内容，如档案系统中的工作单位等信息，可采用数据识别脱敏的方式。此外，对于安全级别高的数据可以进行整行脱敏，即对整条数据进行脱敏，确保信息绝对安全。对于手机号等单个敏感数据可以采用值脱敏，通过隐藏关键部分来保护个人隐私。</li>
<li><strong>编写脱敏规则</strong>：明确上述信息后，可选择相应的内置脱敏规则，或根据需求自行编写脱敏规则，并配置生效。</li>
</ol>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-4774cb48e55020ddc75cd13b0487bc52.png" width="2298" height="1122" class="img_ev3q">
自定义规则</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-5fb0fb733411efe3d154c126bf83b188.png" width="2544" height="1240" class="img_ev3q">
启用规则</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-451f6cba1ecc8ca9585a9421a59ab8c1.png" width="2364" height="1150" class="img_ev3q">
脱敏方式</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-891591c62bda12a675e97244fef734a0.png" width="2280" height="1114" class="img_ev3q">
生效范围</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-3d829f36b7b55a7affa7f7be4bf90719.png" width="2492" height="1216" class="img_ev3q">
规则生效</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/data_masking_for_security#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>使用 <strong>CloudDM</strong> 数据库数据管理工具，轻松实现数据脱敏，为数据安全提供保障。如果感兴趣的话，欢迎免费试用。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CloudDM Docker 版安装指南]]></title>
        <id>https://www.cdmgr.com/blog/tutorials/clouddm_install</id>
        <link href="https://www.cdmgr.com/blog/tutorials/clouddm_install"/>
        <updated>2024-11-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用 GitHub Release 中的 Docker Compose 清单安装 CloudDM，并完成最小可验证检查。]]></summary>
        <content type="html"><![CDATA[<p>CloudDM 是一款面向团队数据库协作的开源工具。本文介绍当前发布方式：从 GitHub Release 获取带版本号的 Docker Compose 清单，再由 Docker Compose 拉取并启动对应镜像。</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><p>这篇文章已按当前发布流程更新。旧版 <code>clouddm.7z</code>、<code>install.sh</code> 和公共默认账号不再作为当前安装依据。</p></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="准备工作">准备工作<a href="https://www.cdmgr.com/blog/tutorials/clouddm_install#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C" class="hash-link" aria-label="准备工作的直接链接" title="准备工作的直接链接">​</a></h2>
<p>安装机需要：</p>
<ul>
<li>Linux <code>amd64</code> 或 <code>arm64</code> 环境；</li>
<li>可正常运行的 Docker Engine；</li>
<li>Docker Compose v2，即 <code>docker compose</code> 命令；</li>
<li>可访问镜像仓库和 GitHub Releases；</li>
<li>空闲的 <code>8222</code> 端口，以及满足数据持久化要求的磁盘空间。</li>
</ul>
<p>先确认工具可用：</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker --version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose version</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="获取发布清单">获取发布清单<a href="https://www.cdmgr.com/blog/tutorials/clouddm_install#%E8%8E%B7%E5%8F%96%E5%8F%91%E5%B8%83%E6%B8%85%E5%8D%95" class="hash-link" aria-label="获取发布清单的直接链接" title="获取发布清单的直接链接">​</a></h2>
<ol>
<li>打开 <a href="https://github.com/ClouGence/open-cdm/releases" target="_blank" rel="noopener noreferrer">ClouGence/open-cdm Releases</a>。</li>
<li>选择目标版本并展开 <strong>Assets</strong>。</li>
<li>下载与该版本匹配的 <code>docker-alone-&lt;版本&gt;.yml</code>。</li>
<li>保留文件中的版本号，不要把其他 Release 的清单或镜像标签混入当前部署。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="启动服务">启动服务<a href="https://www.cdmgr.com/blog/tutorials/clouddm_install#%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1" class="hash-link" aria-label="启动服务的直接链接" title="启动服务的直接链接">​</a></h2>
<p>以下命令中的文件名需替换为实际下载的版本：</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml pull</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml up -d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml ps</span><br></span></code></pre></div></div>
<p>若启动失败，先查看服务状态和日志：</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml ps</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker compose -f docker-alone-&lt;版本&gt;.yml logs --tail=200</span><br></span></code></pre></div></div>
<p>不要在未备份持久化数据的情况下执行 <code>down -v</code>。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="验证登录与工作区">验证登录与工作区<a href="https://www.cdmgr.com/blog/tutorials/clouddm_install#%E9%AA%8C%E8%AF%81%E7%99%BB%E5%BD%95%E4%B8%8E%E5%B7%A5%E4%BD%9C%E5%8C%BA" class="hash-link" aria-label="验证登录与工作区的直接链接" title="验证登录与工作区的直接链接">​</a></h2>
<p>服务启动后访问 <code>http://&lt;服务器地址&gt;:8222</code>。当前登录页支持账号登录和 OIDC 登录；请使用部署方创建或提供的账号，公开文档不提供默认账号或默认密码。</p>
<p>完成登录后，至少检查：</p>
<ol>
<li>数据查询页面可以打开；新环境没有数据源时会显示引导或空状态。</li>
<li>工作台中的 CI/CD 变更流列表可以查询，空结果有明确提示。</li>
<li>工单页面可在权限范围内查看列表和详情。</li>
<li>设置菜单中实际可见的入口与当前账号权限一致。</li>
</ol>
<p>数据源创建、SQL 执行、工单提交和审批都会写入业务数据，请只在授权的测试环境操作。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="后续阅读">后续阅读<a href="https://www.cdmgr.com/blog/tutorials/clouddm_install#%E5%90%8E%E7%BB%AD%E9%98%85%E8%AF%BB" class="hash-link" aria-label="后续阅读的直接链接" title="后续阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://www.cdmgr.com/docs/maintain/install_docker">Docker 全新安装</a></li>
<li><a href="https://www.cdmgr.com/docs/maintain/upgrade_docker">Docker 升级安装</a></li>
<li><a href="https://www.cdmgr.com/docs/quick/quick_start">快速开始</a></li>
</ul>
<p>本文所述 GitHub Assets、登录入口和只读页面流程已经过页面检查；本次没有在占用 <code>8222</code> 端口的现有实例上重新创建容器，也没有执行任何业务写入。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="使用教程" term="使用教程"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何实现良好的数据库结构规范？]]></title>
        <id>https://www.cdmgr.com/blog/data_management/database_sql_policy</id>
        <link href="https://www.cdmgr.com/blog/data_management/database_sql_policy"/>
        <updated>2024-11-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用 CloudDM 这样的数据库数据管理工具，轻松实现良好的数据库结构规范，为团队开发协作提质增效。]]></summary>
        <content type="html"><![CDATA[<p>在团队协作开发过程中，开发人员想法、习惯各异，使用数据库时常常导致表结构不统一。
如果长期使用不规范的表结构，可能会导致数据分析困难、执行速度下降、数据可视化困难等多种后果。
‌这些问题普遍带有 <strong>滞后性</strong>、<strong>隐蔽性</strong> 的特点，解决这些问题时又容易产生更多连带风险。因此，规范化的表结构设计对于业务发展至关重要。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="表结构不规范的影响">表结构不规范的影响<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E8%A1%A8%E7%BB%93%E6%9E%84%E4%B8%8D%E8%A7%84%E8%8C%83%E7%9A%84%E5%BD%B1%E5%93%8D" class="hash-link" aria-label="表结构不规范的影响的直接链接" title="表结构不规范的影响的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="数据分析困难">数据分析困难<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%9B%B0%E9%9A%BE" class="hash-link" aria-label="数据分析困难的直接链接" title="数据分析困难的直接链接">​</a></h3>
<p>表结构不规范，将会大大增加数据分析师处理数据时的难度。例如，相同含义字段名称不统一，又缺乏相应的元信息备注，导致后续分析数据时，还需要消耗大量时间梳理数据关系。</p>
<p>【场景 1】根据以下购物系统的订单表做数据分析：</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TABLE</span><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cost </span><span class="token keyword" style="color:#00009f">DECIMAL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">15</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>当我们尝试进行数据分析时，会发现 cost 字段没有设置禁止为空，也没有任何注释。开发人员在编写代码时，对于支付金额为 0 的订单可能会设置为 null 或 0。当我们发现一个订单的 cost 为 null 或者 0 时，可能是顾客使用优惠卷/红包后，支付金额为 0，或是赠品订单。而由于没有注释，在数据分析时难以对该字段的数据进行准确分析。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="执行速度下降">执行速度下降<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E6%89%A7%E8%A1%8C%E9%80%9F%E5%BA%A6%E4%B8%8B%E9%99%8D" class="hash-link" aria-label="执行速度下降的直接链接" title="执行速度下降的直接链接">​</a></h3>
<p>不合理的表结构设计可能导致数据库查询执行速度下降。例如，某些查询语句的执行计划看似相同，但由于表结构的不合理设计，实际执行效果相差很大，导致查询速度变慢，而这个问题往往在数据量变大之后才会凸显出来。</p>
<p>【场景 2】 以下 SaaS 系统的 user 表记录了用户信息，所有用户都关联到一个主账号上。</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TABLE</span><span class="token plain"> sales_data </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  id </span><span class="token keyword" style="color:#00009f">INT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AUTO_INCREMENT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">PRIMARY</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">KEY</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  parent_id </span><span class="token keyword" style="color:#00009f">varchar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">64</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>在团队管理中，当查询当前团队的成员时，需要使用 parent_id 作为过滤条件去查询。因为 parent_id 没有设置索引，在查询时需要进行全表扫描，导致执行速度大幅下降。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="数据可视化困难">数据可视化困难<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E5%9B%B0%E9%9A%BE" class="hash-link" aria-label="数据可视化困难的直接链接" title="数据可视化困难的直接链接">​</a></h3>
<p>原本不为空的字段列，由于缺少表结构约束，导致意外录入脏数据，进而在数据可视化结果呈现上产生误导，甚至还会影响用户对数据的准确理解。‌最直接的问题就是 “空字符串” 和 “空值” 之间的差别难以有效界定。</p>
<p>【场景 3】根据以下记账软件的开支表分析收支情况。</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TABLE</span><span class="token plain"> expenditure </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  price  </span><span class="token keyword" style="color:#00009f">decimal</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">not</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ENUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'IN'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">'OUT'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">NULL</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>当我们想对本年的收支情况进行分析时，因为该表 type 字段粒度太大，只能分析支出和收入两种类型，若想更加细致地分析在某些方面的支出，则无能为力了。</p>
<p>从上述例子中可以看出，数据库结构不规范，会对开发和数据分析形成重重阻碍。如果在创建表时就注意规范表结构，就可以有效避免上述情况的发生。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="解决方案">解决方案<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88" class="hash-link" aria-label="解决方案的直接链接" title="解决方案的直接链接">​</a></h2>
<p>本文提供以下方案，供读者参考比较。</p>
<ol>
<li><strong>关键字匹配</strong>：直接使用关键字对 DDL 语句进行判断。</li>
</ol>
<ul>
<li>优点：实现简单。</li>
<li>缺点：很容易通过各种方式绕开。</li>
</ul>
<ol start="2">
<li><strong>SQL 审核</strong>：普通用户执行 DDL 语句时需要提交给审核人员审核，通过后再由审核人员执行。</li>
</ol>
<ul>
<li>优点：审核人员可以浏览到所有 SQL，进行统一把控。</li>
<li>缺点：不同审核人员风格不同，并且审核人员一般是团队中的领导者，需要付出额外的精力。人工审核，也有概率漏过一些不符合标准的 DDL。</li>
</ul>
<ol start="3">
<li><strong>SQL 审核平台</strong>：通过 SQL 审核平台的校验规则，加上审核人员的最终把控，对将要执行的 SQL 进行高效监管，并且有历史记录查询、回滚 SQL 等多种功能满足团队需求。</li>
</ol>
<ul>
<li>优点：通过脚本校验 SQL，用户只需开启脚本便可检查 SQL 是否满足规范。审核人员只需要检查 SQL 是否符合业务需求即可。此外还有其他功能满足用户各种需求。</li>
<li>缺点：SQL 解析复杂，实现难度大。大部分平台只有常用规则，但无法自定义规则，无法满足用户个性化的需求。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="推荐方案">推荐方案<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E6%8E%A8%E8%8D%90%E6%96%B9%E6%A1%88" class="hash-link" aria-label="推荐方案的直接链接" title="推荐方案的直接链接">​</a></h2>
<p>根据上述的方案比较，不难看出 <strong>SQL 审核平台</strong> 是比较便捷安全的方案，校验准确，省时省力，并且可以满足多样的需求。国产自研的数据库数据管控工具 <strong>CloudDM</strong> 便是一个合适的选择。</p>
<p>CloudDM 采用了全新的自研 Rule Script 引擎。通过 Rule Script 强大的编程能力，CloudDM 的所有内置规则全部实现了脚本化。此外，用户能够根据自己的需求自定义规则。</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-a2436a9371553192761dc755180711e4.png" width="2520" height="1226" class="img_ev3q">
内置规则</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-62a03112d52f112d64c68fa86048dcd6.png" width="2236" height="1094" class="img_ev3q">
自定义规则</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-76c0c84de9c9e41e966c6d6fc6375fc1.png" width="2496" height="1214" class="img_ev3q">
规则生效</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="https://www.cdmgr.com/blog/data_management/database_sql_policy#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>使用 <strong>CloudDM</strong> 这样的数据库数据管理工具，轻松实现良好的数据库结构规范，为团队开发协作提质增效。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何解决团队访问数据库的 3 个致命问题？]]></title>
        <id>https://www.cdmgr.com/blog/data_management/team_use_database_challenges</id>
        <link href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges"/>
        <updated>2024-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[团队使用数据库面临 3 大致命问题，如何安全有效地解决这些问题？]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="面临的问题">面临的问题<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E9%9D%A2%E4%B8%B4%E7%9A%84%E9%97%AE%E9%A2%98" class="hash-link" aria-label="面临的问题的直接链接" title="面临的问题的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/1-2ff1c653132e270b859750413fa00af8.png" width="1498" height="836" class="img_ev3q"></p>
<p>在开发过程中避免不了需要访问数据库数据，尤其在团队协作中对于数据库数据的访问会更加频繁。</p>
<p>通常团队成员在管理员或者 DBA 在准备好数据源之后，就可以凭借数据库的账号和密码访问数据库中的数据了。</p>
<p>也正是从这一刻开始，这个团队访问数据库中的数据时就会面临诸多问题，本文枚举其中几个比较典型的问题：</p>
<ul>
<li>团队成员在设计数据库表结构容易产生随意性，导致数据库结构规范不统一。</li>
<li>容易忽略账号和权限的管控，导致数据库访问缺失权限控制。</li>
<li>数据库的变更的发布在需要多个团队成员通过流程化的方式相互协作，如果协作过程不顺畅则会降低团队效率。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="问题的严重性">问题的严重性<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E9%97%AE%E9%A2%98%E7%9A%84%E4%B8%A5%E9%87%8D%E6%80%A7" class="hash-link" aria-label="问题的严重性的直接链接" title="问题的严重性的直接链接">​</a></h2>
<p>如果这些问题没有被妥善处理好都会产生哪些影响呢？接下来我们举几个案例。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="数据库结构规范不统一">数据库结构规范不统一<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BB%93%E6%9E%84%E8%A7%84%E8%8C%83%E4%B8%8D%E7%BB%9F%E4%B8%80" class="hash-link" aria-label="数据库结构规范不统一的直接链接" title="数据库结构规范不统一的直接链接">​</a></h3>
<p>‌表结构不规范会导致多种后果，包括数据分析困难、执行速度下降、以及数据可视化困难。‌这些问题普遍带有 <strong>滞后性</strong>、<strong>隐蔽性</strong> 特点，当解决这些问题时又容易产生更多连带风险。</p>
<ul>
<li><strong>数据分析困难</strong>‌：表结构不规范可能导致数据分析师在处理数据时遇到困难。例如，相同含义字段名称不统一，又缺乏相应的元信息备注。导致后续分析数据时还需要消耗大量时间精力对数据关系进行梳理。</li>
<li><strong>执行速度下降</strong>‌：不合理的表结构设计可能导致数据库查询执行速度下降。例如，某些查询语句的执行计划看似相同，但由于表结构的不合理设计，实际执行效果相差很大导致查询速度变慢。而这个问题往往在数据量变大之后才会凸显出来。</li>
<li><strong>数据可视化困难‌</strong>：原本不为空的字段列由于表结构约束缺失导致脏数据被意外录入，进而在数据可视化结果呈现上产生误导，甚至还会影响用户对数据的准确理解。‌最直观的问题就是 “空字符串” 和 “空值” 之间的差别难以被有效界定。</li>
</ul>
<p>综上所述，表结构不规范产生的不仅会增加数据分析的难度，降低数据库查询的执行速度，还会影响数据可视化的效果和质量。因此，规范化的表结构设计对于业务演进至关重要。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="数据库访问缺失权限控制">数据库访问缺失权限控制<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BF%E9%97%AE%E7%BC%BA%E5%A4%B1%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6" class="hash-link" aria-label="数据库访问缺失权限控制的直接链接" title="数据库访问缺失权限控制的直接链接">​</a></h3>
<p>数据库访问缺失权限控制的危害会比较严重，主要体现在以下几个方面：</p>
<ul>
<li><strong>敏感数据泄露更显</strong>：由于数据库访问权限的缺失容易让未经授权的用户访问到敏感数据。如，用户个人信息、财务数据等‌。当这些具有高度敏感性的数据被泄漏出去后，会造成更大的灾害。例如，被不法分子用于诈骗。以及错失优质商业机会等。</li>
<li><strong>数据篡改风险‌</strong>：攻击者可能通过越权访问修改数据库中的数据，通过篡改数据谋取私利或者对整个业务运行造成严重影响。如，修改账户余额，删库跑路等‌。</li>
<li><strong>法律责任与声誉损害‌</strong>：由于缺乏权限控制导致用户敏感数据被泄露进而个人隐私被侵犯‌。企业可能临法律责任，同时企业的声誉也将受损。</li>
</ul>
<p>综上所述，数据库访问缺失权限控制会带来更加严重安全风险和法律后果。所以团队中对于数据库数据的访问必须实施严格的访问控制和权限管理‌，以避免法律风险以及声誉影响。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="协作过程不顺畅">协作过程不顺畅<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E5%8D%8F%E4%BD%9C%E8%BF%87%E7%A8%8B%E4%B8%8D%E9%A1%BA%E7%95%85" class="hash-link" aria-label="协作过程不顺畅的直接链接" title="协作过程不顺畅的直接链接">​</a></h3>
<p>协作过程不顺畅最主要的影响是团队效率，主要包括：</p>
<ul>
<li><strong>系统稳定性受损</strong>‌：协作不畅可能导致数据库变更过程中出现错误或遗漏，进而影响系统的稳定性和可靠性，增加系统崩溃的风险‌。</li>
<li>‌<strong>数据安全性问题</strong>‌：协作不顺畅还可能引发数据安全性问题，如数据丢失或泄露，对组织造成重大损失‌。</li>
<li>‌<strong>团队资源浪费</strong>‌：不顺畅的协作可能导致不必要的重复工作或错误操作，浪费人力和时间资源‌。</li>
</ul>
<p>综上所述，数据库变更协作不顺畅会对系统稳定性、‌数据安全性、团队资源利用等多方面造成不良影响。进而使团队的效率变得更加底下。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="解决问题的手段">解决问题的手段<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E7%9A%84%E6%89%8B%E6%AE%B5" class="hash-link" aria-label="解决问题的手段的直接链接" title="解决问题的手段的直接链接">​</a></h2>
<p>这些问题在业内通常有着比较明确的解决思路，核心思想是通过团队化的工具将数据库的访问集中到统一平台上进行。并通过统一平台达成如下几个关键控制手段：</p>
<ul>
<li>通过SQL规则校验，拒绝不合理的数据库结构变更。从而保证数据库规范。</li>
<li>集中权限控制，方便一目了然的管理和控制。</li>
<li>避免直接连接数据库，保护数据库账号。</li>
<li>对查询结果进行脱敏保护，从而避免避免数据隐私及法律风险。</li>
<li>通过工单流程提升团队协作效率。</li>
<li>通过企业统一认证，让团队的账号管理变得更加轻松和简单。</li>
</ul>
<p>目前能够提供上述问题解决方案的产品有很多这里就不再展开。</p>
<p>CloudDM 作为全新的企业级数据库数据访问工具，在团队使用场景中做了更加细致和深入的思考。自然也包含上述问题。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="规则校验">规则校验<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E8%A7%84%E5%88%99%E6%A0%A1%E9%AA%8C" class="hash-link" aria-label="规则校验的直接链接" title="规则校验的直接链接">​</a></h3>
<p>使用脚本化方式实现 SQL 规则校验是一个比较常见的方法，常见的方案中有两种技术路线。</p>
<ul>
<li>使用已有语言 <strong>Java</strong>、<strong>JavaScript</strong>、<strong>Lua</strong>、<strong>Groovy</strong> 作为规则引擎。</li>
<li>使用具有较高限制的自研 <strong>DSL</strong> 作为规则引擎。</li>
</ul>
<p>使用已有语言通常会面临两个问题：</p>
<ul>
<li>程序如何接入？</li>
<li>安全如何控制？</li>
</ul>
<p>在采用通用编程语言作为规则引擎后，安全控制是最难以解决的。这是由于通用编程语言通常是面向更加广泛而又复杂的场景，需要提供更加灵活和底层的 API 作为保障。比如不受限制的访问网络、文件等资源。</p>
<p>如果采用通用编程语言作为引擎，虽然可以快速满足需求并节省开发成本。但需要在安全控制上做更加深入的控制，本文列出一些用于思考：</p>
<ul>
<li>网络：通常 SQL 规则脚本中是用来承担逻辑判断并不需要网络通信，因此网络能力通常是不必要的。</li>
<li>文件：理由同上</li>
<li>CPU/内存：这两类资源具有高度相似性，都是难以被控制。例如：规则脚本出现一个死循环，通常作为脚本宿主程序是无法主动干预的。</li>
<li>调动外部程序：这和网络、文件、比较相像。原则上规则脚本的执行是不能调用外部程序的。</li>
<li>其它技术组件导致的安全漏洞：常见的如 OGNL 表达式的越权访问。</li>
</ul>
<p>如果采用使用场景更加明确的自研 DSL 作为规则引擎，通常不会出现上述问题。因此普遍情况下只要技术投入成本可以接受都会选择此类技术方案，其主要优点是在于可控性较高。</p>
<p>CloudDM 采用了全新的自研 Rule Script 引擎，并通过 Rule Script 强大的编程能力使得 CloudDM 的所有内置规则实现了全部脚本化。这包括 SQL 规则和脱敏规则。下面这张图向大家展示了基于 Rule Script 的在 CloudDM 中的样貌。</p>
<p>SQL 查询规则展示</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/2-1cb0d4b882b73694141555bfddaade1f.png" width="2854" height="722" class="img_ev3q"></p>
<p>查询规则展示</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/3-8aa38c808edfa92223b832969d340a77.png" width="2850" height="728" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="权限控制">权限控制<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6" class="hash-link" aria-label="权限控制的直接链接" title="权限控制的直接链接">​</a></h3>
<p>使用团队化的工具将数据库的访问集中到统一平台，天然的好处是可以避免直接连接数据库以保护数据库账号。而在权限控制方面，一个团队化的数据库访问工具必然会面临来自两个新维度上的要求：</p>
<ul>
<li>功能上的权限控制</li>
<li>资源上的权限控制</li>
</ul>
<p>在工程实践过程中权限系统的设计会受到诸多因素的影响，比较常见的权限控制模型和特点有：</p>
<ul>
<li><strong>IBAC/ACL</strong>，基于身份的访问控制。核心思想是为资源制定一个 <strong>策略列表</strong>，当访问资源时通过策略列表来保护资源的访问。</li>
<li><strong>RBAC</strong>，基于角色的访问控制。模型核心定义了 <strong>用户</strong>、<strong>角色</strong>、<strong>权限</strong> 三个元素，在软件产品的功能控制中具有较为普遍的应用，它是一个静态模型。</li>
<li><strong>PBAC</strong>，基于策略的访问控制，相比较 <strong>RBAC</strong> 模型而言 <strong>PBAC</strong> 动态基于规则和策略动态确定访问权限。它属于动态模型。</li>
<li><strong>ABAC</strong>，基于属性的访问控制，模型重点在于对属性的策略化运用。<strong>角色</strong>、<strong>策略</strong>、<strong>身份</strong> 在 ABAC 模型中都是属性中的一种，ABAC 和 PBAC 某种程度上来看比较相似。而 ABAC 最大的弊端就是在于它的复杂性，在落地 ABAC 时某些情况下甚至需要借助 XACML 语言脚本来实现权限控制。</li>
</ul>
<p>为了方便理解我们以 “<strong>资源是否具备某个权限的访问权限</strong>” 为典型内在需求。以 <strong>用户</strong>、<strong>角色</strong>、<strong>策略</strong> 为支点，对已知的权限模型做一个梳理可以做如下总结：</p>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/4-02ba7fbbd2cee395b7c1b0989ed16a21.png" width="1220" height="1156" class="img_ev3q"></p>
<ul>
<li>当选择 <strong>策略</strong>、<strong>权限</strong>、<strong>用户</strong> 三角关系作为权限访问控制三要素时，便是 ACL/IBAC 模型。<!-- -->
<ul>
<li>当某个资源被访问只需要执行一遍策略规则即可得到权限，这便是最简单的 ACL（Access Control Lists）</li>
<li>将用户/资源 进行 <strong>标识符</strong> 归类，在利用 ACL 对 <strong>标识</strong> 的用户资源进行访问控制，这便是 IBAC（Identity-Based Access Control）</li>
</ul>
</li>
<li>使用 <strong>角色、用户、权限</strong> 三角关系作为权限访问控制三要素便是最常见的 RBAC 模型。<!-- -->
<ul>
<li>RBAC（Role-Based Access Control）是一种基于静态状态下的权限控制模型，同时也是用途最为广泛的权限控制模型。</li>
<li>RBAC 的运用非常考验角色的设计者，角色的粒度过细容易造成特权泛滥。粒度过粗又会导致拆分角色而造成角色爆炸。</li>
</ul>
</li>
<li>使用 <strong>策略、权限</strong> 关系时便是 PBAC 模型，该模型的最大特点是着重基于策略的访问控制。<!-- -->
<ul>
<li>PBAC（Policy-Based Access Control）它通过定义策略来管理访问控制，这些策略可以根据需要进行定制。</li>
<li>动态的访问控制是 PBAC 模型的核心关键，在实施 PBAC 时往往需要附带 <strong>审计</strong> 记录以方便事后查阅。</li>
</ul>
</li>
<li>ABAC（Attribute-Based Access Control） 它基于属性进行访问控制。在模型中访问决策不仅基于用户角色。<!-- -->
<ul>
<li>ABAC 访问控制机制根据主体属性、对象属性、环境参数、操作、策略对该请求进行授权验证，具有更高的灵活性。</li>
<li>ABAC 在一定程度上和 PBAC 具有相似性。</li>
<li>在 ABAC 看来 RBAC 中的角色、IBAC 中的标识符都是一种属性。</li>
<li>在 ABAC 模型体系中有很多实现或者标准比如：<strong>XACML</strong>、<strong>NGAC</strong>、<strong>LBAC</strong>。</li>
</ul>
</li>
</ul>
<p>在实际工程实践中可以选用的权限控制模型可能还会更多。具体如何选择需要基于客观因素来决定，不能一概而论那种模型更好。而在具体落地过程中往往参考上述标准模型也会产生更多的变种和新特性。</p>
<p>CloudDM 在实践权限控制的过程中采用了多种模型结合方式：</p>
<ul>
<li>通过 <strong>RBAC</strong> 模型作为功能权限的访问控制。因此 CloudDM 可以定义角色、用户，并且可以为不同角色绑定权限。</li>
<li>通过 <strong>IBAC</strong> 对具体数据库资源进行访问控制。目前支持对实例级资源进行细粒度 ACL 控制。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/5-3da6afc9ef162a56d7bc45ac6b69d1b4.png" width="2854" height="946" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="工单流程">工单流程<a href="https://www.cdmgr.com/blog/data_management/team_use_database_challenges#%E5%B7%A5%E5%8D%95%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="工单流程的直接链接" title="工单流程的直接链接">​</a></h3>
<p>在使用团队化数据库访问工具时工单流程是一个比较常见的场景，一个典型的用户场景是：</p>
<ul>
<li>开发递交了 SQL 发布流程。</li>
<li>DBA/管理员或各层级管理人员会执行流程审批。</li>
<li>在流程通过后完成最终 SQL 的执行。</li>
</ul>
<p>在专业的领域中一般由 OA 系统可以完成上述动作。而在 OA 出现之前，办公室解决流程化问题往往是填写各种申请表。然后在各级领导/负责人、部门之间流转这些申请单。对于数据库变更的审核往往更加难以管理通常交给更加专业的 DBA 负责数据库的变更操作。</p>
<p>一个 OA 系统面临的主要问题是如何方便的定义表单以及流转表单。所以在技术上 OA 系统通常包括如下核心技术：</p>
<ul>
<li>表单设计器</li>
<li>工作流引擎</li>
<li>用户/组织管理</li>
</ul>
<p>表单系统主要解决的问题是表单的设计以及表单数据的存储/提取。在早年一个很好的可视化 HTML 设计器可以解决大部分问题，而如今已经有更多可用的方案可以被选择。</p>
<ul>
<li>表单系统的最大难度是在于提供可供交互的类 HTML 设计器，并允许终端用户自由的设计表单的样式。这些用户往往对于计算机原理了解并不深入。</li>
<li>早年比较常见的方案是基于 Eclipse 开发一个工作流设计平台，其核心原理是对 Eclipse Web Developer Tools 的二次开发提供表单设计器。</li>
<li>OA 系统将表单设计器产生的数据进行存储，在需要时按照设计器设计的样式重新展现并填充具体数据。</li>
</ul>
<p>流程引擎，解决的主要问题是提供一个统一的模式让企业可以设计自己的流程。</p>
<ul>
<li>在流程设计中比较典型的场景有：加签、会签、顺序流程、子流程、并行流程等。</li>
<li>在工作流领域也存在很多成熟的解决方案如：<strong>Activiti</strong>、<strong>Flowable</strong>、<strong>jBPM</strong> 本文不在详细展开。</li>
</ul>
<p>CloudDM 在工单流程的设计上简化了技术负担，其核心只关注审批的 <strong>发起 <strong>和审批</strong>结果</strong>。让外部 OA 系统以更加专业的角度来负责工单流转工作，这样做可以获得以下好处：</p>
<ul>
<li>专业的事情专业系统来负责，减轻技术负担、提升整个系统稳定性。</li>
<li>可以接入用户已有 OA 系统，从而和用户的 IT 系统结合更加紧密。</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.cdmgr.com/assets/images/6-36b6e0f4c9d16dd02d3529364a03f99e.png" width="2042" height="1306" class="img_ev3q"></p>
<h1>总结</h1>
<p>本文提出了团队使用数据库面临的问题以及问题的后果，介绍了行业中解决问题的常用手段，及 CloudDM 在众多产品中的独特优势。如果您感觉本文有所收获，欢迎注册试用。</p>]]></content>
        <author>
            <name>赵永春</name>
        </author>
        <category label="数据管理" term="数据管理"/>
    </entry>
</feed>