【金仓数据库征文】Oracle到金仓:DBLINK替代方案与跨库访问设计

文章目录

    • 每日一句正能量
    • [1. 背景与问题](#1. 背景与问题)
    • [2. 环境与数据](#2. 环境与数据)
      • [2.1 迁移对象画像](#2.1 迁移对象画像)
      • [2.2 脱敏测试数据](#2.2 脱敏测试数据)
    • [3. 复现过程](#3. 复现过程)
      • [3.1 复现一:连接成功不等于设计可用](#3.1 复现一:连接成功不等于设计可用)
      • [3.2 复现二:共享高权账号扩大安全风险](#3.2 复现二:共享高权账号扩大安全风险)
      • [3.3 复现三:远端故障拖垮本地报表池](#3.3 复现三:远端故障拖垮本地报表池)
    • [4. 方案实施](#4. 方案实施)
      • [4.1 先做四路选型,而不是统一替换](#4.1 先做四路选型,而不是统一替换)
        • [路线 A:外部表或 FDW 类访问](#路线 A:外部表或 FDW 类访问)
        • [路线 B:数据服务 API](#路线 B:数据服务 API)
        • [路线 C:CDC/ETL 汇聚](#路线 C:CDC/ETL 汇聚)
        • [路线 D:物化快照或定时增量表](#路线 D:物化快照或定时增量表)
      • [4.2 SQL 改造原则](#4.2 SQL 改造原则)
      • [4.3 安全边界设计](#4.3 安全边界设计)
      • [4.4 数据校验](#4.4 数据校验)
      • [4.5 性能验证](#4.5 性能验证)
    • [5. 结果对比](#5. 结果对比)
    • [6. 风险与复盘](#6. 风险与复盘)
      • [6.1 风险一:把 FDW 当成透明本地表](#6.1 风险一:把 FDW 当成透明本地表)
      • [6.2 风险二:跨库写入与分布式事务](#6.2 风险二:跨库写入与分布式事务)
      • [6.3 风险三:凭据和公共权限](#6.3 风险三:凭据和公共权限)
      • [6.4 风险四:报表口径与数据延迟](#6.4 风险四:报表口径与数据延迟)
      • [6.5 灰度切换](#6.5 灰度切换)
      • [6.6 故障回退](#6.6 故障回退)
    • 结语

每日一句正能量

花自向阳开,人终往前走,不要站在雾里,不要执着没有意义的人和事,不要像风,也不要像云。

生命自有其方向,犹豫和沉溺是停在雾里。风与云都太飘忽,人需要的是自己的根与方向。

1. 背景与问题

某集团报表系统长期运行在 Oracle 上。财务、订单、客户、库存分别位于不同数据库,报表库通过多个私有 DBLINK 访问远端对象。典型 SQL 如下:

sql 复制代码
SELECT
    o.biz_date,
    o.region_code,
    SUM(o.pay_amount) AS pay_amount,
    COUNT(DISTINCT c.customer_id) AS customer_count
FROM rpt_order@order_link o
JOIN crm_customer@crm_link c
  ON c.customer_id = o.customer_id
WHERE o.biz_date >= TRUNC(SYSDATE) - 7
GROUP BY o.biz_date, o.region_code;

Oracle 数据库链接是本地数据库中的模式对象,可为远程对象提供单向访问路径;分布式查询通常通过 对象名@链接名 引用远端表、视图或物化视图。它的便利之处在于应用几乎感知不到远端连接,但这种"像本地表一样查询"的体验也容易掩盖网络、权限、事务和性能边界。

迁移到金仓数据库时,最危险的做法是只做语法替换:看到 @order_link,就寻找一个同名扩展或函数,把 SQL 改到能够执行,然后直接上线。多库报表真正需要迁移的不是一个符号,而是四类能力:

  1. 连接能力:目标库是否能连接 Oracle、金仓或其他异构数据源。
  2. 查询语义:过滤、聚合、排序、字符集、日期和数值转换是否一致。
  3. 运行边界:远端扫描量、连接数、超时、失败传播是否可控。
  4. 安全边界:凭据存放、最小权限、网络白名单、审计和敏感字段访问是否合规。

本项目最终没有把所有 Oracle DBLINK 一比一复制,而是按访问特征拆成四条路线:

  • 小数据量、低并发、确需实时的查询,使用受控外部表或 FDW 类能力;
  • 安全域隔离严格的系统,通过数据服务 API 获取;
  • 大数据量、高频统计,使用 CDC/ETL 汇聚到报表库;
  • 固定周期、允许分钟级延迟的报表,使用物化快照或定时增量表。

2. 环境与数据

2.1 迁移对象画像

迁移前先扫描 Oracle 中的数据库链接、依赖对象和 SQL 使用情况。不要只查询 DBA_DB_LINKS,还要分析视图、存储过程、调度任务和应用 SQL。

sql 复制代码
-- 1. 链接清单
SELECT owner,
       db_link,
       username,
       host,
       created
FROM dba_db_links
ORDER BY owner, db_link;

-- 2. 依赖 DBLINK 的视图和程序对象
SELECT owner,
       name,
       type,
       referenced_link_name
FROM dba_dependencies
WHERE referenced_link_name IS NOT NULL
ORDER BY owner, name;

-- 3. 源码中包含 @link 的对象
SELECT owner,
       name,
       type,
       line,
       text
FROM dba_source
WHERE REGEXP_LIKE(text, '@[A-Za-z0-9_$#.]+' )
ORDER BY owner, name, line;

-- 4. 同义词中的远端对象
SELECT owner,
       synonym_name,
       table_owner,
       table_name,
       db_link
FROM dba_synonyms
WHERE db_link IS NOT NULL;

实际盘点时,我们为每条跨库链路增加以下字段:

字段 说明
链路名称 Oracle DBLINK 名称或业务链路名
源端/目标端 数据库类型、版本、地址、安全域
访问对象 表、视图、函数、过程
权限类型 只读、写入、执行
实时性 秒级、分钟级、小时级
单次数据量 返回行数、扫描行数、平均字节数
并发 峰值会话、报表任务数量
事务要求 单库查询、跨库写入、两阶段提交
故障影响 页面失败、任务延迟、核心交易受阻
替代路线 外部表、API、CDC/ETL、快照

2.2 脱敏测试数据

报表场景选取三张远端表:

sql 复制代码
CREATE TABLE order_detail (
    order_id       NUMBER(18)      PRIMARY KEY,
    customer_id    NUMBER(18)      NOT NULL,
    biz_time       TIMESTAMP(6)    NOT NULL,
    region_code    VARCHAR2(12)    NOT NULL,
    pay_amount     NUMBER(18,2)    NOT NULL,
    order_status   VARCHAR2(20)    NOT NULL,
    update_time    TIMESTAMP(6)    NOT NULL
);

CREATE TABLE crm_customer (
    customer_id    NUMBER(18)      PRIMARY KEY,
    customer_level VARCHAR2(20),
    customer_name  VARCHAR2(100),
    update_time    TIMESTAMP(6)
);

CREATE TABLE inventory_daily (
    stat_date      DATE,
    sku_id         NUMBER(18),
    warehouse_code VARCHAR2(20),
    stock_qty      NUMBER(18,3),
    update_time    TIMESTAMP(6)
);

测试集包含 5000 万订单明细、300 万客户、每日约 80 万库存快照。测试中特别保留中文姓名、多字节地区编码、空值、跨日时间、金额小数和重复更新水位,避免只用"干净样例"得出错误结论。

3. 复现过程

3.1 复现一:连接成功不等于设计可用

将 Oracle DBLINK 查询改造成远端访问后,简单 SQL 能返回结果:

sql 复制代码
SELECT COUNT(*)
FROM foreign_order_detail;

但复杂报表出现两个问题:

  • 本地过滤条件没有充分下推,远端扫描数千万行后再传输到本地;
  • 本地表与远端表直接关联,执行计划选择不当,网络往返次数急剧增加。

验证时必须同时记录"返回行数"和"远端扫描量"。下面的 SQL 只返回几十行,但如果日期函数、类型转换或表达式阻止谓词下推,远端可能扫描整表:

sql 复制代码
SELECT region_code, SUM(pay_amount)
FROM foreign_order_detail
WHERE CAST(biz_time AS DATE) = CURRENT_DATE - 1
GROUP BY region_code;

更稳妥的写法是显式给出时间范围,减少函数作用于远端列:

sql 复制代码
SELECT region_code, SUM(pay_amount)
FROM foreign_order_detail
WHERE biz_time >= :begin_time
  AND biz_time <  :end_time
GROUP BY region_code;

3.2 复现二:共享高权账号扩大安全风险

旧系统为了减少维护成本,多个 DBLINK 共用远端业务账号。该账号不仅能查询报表字段,还能访问手机号、证件号和交易备注。DBLINK 一旦被拥有者或被授权对象间接调用,访问范围就可能超出原报表需求。

迁移评估中发现以下高风险模式:

sql 复制代码
-- 风险示例:公共链路、高权用户、明文维护、权限过宽
CREATE PUBLIC DATABASE LINK crm_link
CONNECT TO crm_owner IDENTIFIED BY "example_password"
USING 'CRMPRD';

替代设计要求每条业务链路使用独立只读账号,只授权必要视图:

sql 复制代码
-- 在远端 Oracle 创建报表专用视图
CREATE VIEW rpt_v_customer_safe AS
SELECT customer_id,
       customer_level,
       region_code,
       update_time
FROM crm_customer;

CREATE USER rpt_reader IDENTIFIED BY "由密码平台生成并托管";
GRANT CREATE SESSION TO rpt_reader;
GRANT SELECT ON rpt_v_customer_safe TO rpt_reader;

生产环境中,密码不应出现在文章、脚本仓库或普通配置文件中,应交由企业密码平台、密钥管理系统或受控配置中心管理,并执行定期轮换。

3.3 复现三:远端故障拖垮本地报表池

当 Oracle 监听不可达或远端 SQL 发生锁等待时,报表连接长期占用。应用线程池继续提交查询,最终出现"远端数据库故障,本地报表库也无可用连接"的连锁反应。

复现步骤:

  1. 正常执行远端查询并记录 P50、P95、P99。
  2. 人为阻断目标端口或将远端 SQL 挂起。
  3. 观察本地数据库会话、应用线程池、连接池等待和报表任务积压。
  4. 验证连接超时、语句超时、熔断和降级是否生效。
  5. 恢复网络后检查是否出现连接风暴。

如果系统只能"等待远端恢复",说明它没有真正的故障边界。

4. 方案实施

4.1 先做四路选型,而不是统一替换

路线 A:外部表或 FDW 类访问

适合:

  • 秒级或近实时查询;
  • 结果集较小;
  • 远端对象稳定;
  • 网络链路可靠;
  • 查询以只读为主。

金仓数据库公开迁移资料说明其跨库能力可覆盖 Oracle、MySQL 等异构数据源,并支持跨库查询等场景;但具体可用组件、扩展名称、授权方式和语法会受产品版本及安装组件影响,实施前必须在目标版本上确认。

以下配置示例采用 SQL/MED/FDW 风格展示设计思路,实际语法请以项目所用金仓版本文档和已安装扩展为准:

sql 复制代码
-- 示例:启用对应外部数据访问扩展
CREATE EXTENSION oracle_fdw;

-- 定义远端 Oracle 服务
CREATE SERVER ora_order_srv
FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver '//10.20.30.40:1521/ORCL');

-- 将本地报表角色映射为远端最小权限账号
CREATE USER MAPPING FOR rpt_app
SERVER ora_order_srv
OPTIONS (user 'rpt_reader', password '由安全平台注入');

-- 只映射报表所需对象
CREATE FOREIGN TABLE ext_order_detail (
    order_id      numeric(18,0),
    customer_id   numeric(18,0),
    biz_time      timestamp(6),
    region_code   varchar(12),
    pay_amount    numeric(18,2),
    order_status  varchar(20),
    update_time   timestamp(6)
)
SERVER ora_order_srv
OPTIONS (schema 'ORDER_APP', table 'RPT_V_ORDER_DETAIL');

权限应只授予报表角色:

sql 复制代码
REVOKE ALL ON FOREIGN TABLE ext_order_detail FROM PUBLIC;
GRANT SELECT ON FOREIGN TABLE ext_order_detail TO rpt_app;

不建议直接映射远端所有表,也不建议把远端所有者账号配置到用户映射中。

路线 B:数据服务 API

适合安全域不允许数据库直连,或需要按调用方实施字段级授权、限流、脱敏和审计的系统。

接口应返回明确的数据版本和水位:

json 复制代码
{
  "dataTime": "2026-07-17T23:59:59+08:00",
  "nextCursor": "20260717-000128",
  "items": [
    {
      "regionCode": "EAST",
      "payAmount": "1689320.25",
      "orderCount": 19582
    }
  ]
}

API 路线的代价是需要开发和运维服务层,但它把数据库凭据、字段权限和流量控制从报表 SQL 中剥离出来,安全边界更清晰。

路线 C:CDC/ETL 汇聚

适合大批量、多表关联和高并发报表。核心原则是"远端数据本地化,报表计算本地化"。

增量表应保留来源、水位和幂等键:

sql 复制代码
CREATE TABLE ods_order_detail (
    source_system  varchar(20)   NOT NULL,
    order_id       numeric(18,0) NOT NULL,
    customer_id    numeric(18,0) NOT NULL,
    biz_time       timestamp(6)  NOT NULL,
    region_code    varchar(12)   NOT NULL,
    pay_amount     numeric(18,2) NOT NULL,
    order_status   varchar(20)   NOT NULL,
    source_scn     numeric(30,0),
    source_time    timestamp(6),
    load_time      timestamp(6)  DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (source_system, order_id)
);

装载采用幂等更新插入:

sql 复制代码
MERGE INTO ods_order_detail t
USING stg_order_detail s
ON (t.source_system = s.source_system AND t.order_id = s.order_id)
WHEN MATCHED THEN
  UPDATE SET
      customer_id = s.customer_id,
      biz_time = s.biz_time,
      region_code = s.region_code,
      pay_amount = s.pay_amount,
      order_status = s.order_status,
      source_scn = s.source_scn,
      source_time = s.source_time,
      load_time = CURRENT_TIMESTAMP
WHEN NOT MATCHED THEN
  INSERT (
      source_system, order_id, customer_id, biz_time,
      region_code, pay_amount, order_status,
      source_scn, source_time, load_time
  )
  VALUES (
      s.source_system, s.order_id, s.customer_id, s.biz_time,
      s.region_code, s.pay_amount, s.order_status,
      s.source_scn, s.source_time, CURRENT_TIMESTAMP
  );
路线 D:物化快照或定时增量表

适合日报、周报和固定口径统计。每次刷新必须记录数据时间戳、开始水位、结束水位、行数和校验摘要。

sql 复制代码
CREATE TABLE sync_batch_log (
    batch_id          varchar(40) PRIMARY KEY,
    source_system     varchar(20) NOT NULL,
    begin_watermark   varchar(80),
    end_watermark     varchar(80),
    extract_rows      bigint,
    load_rows         bigint,
    checksum_value    varchar(128),
    batch_status      varchar(20),
    begin_time        timestamp(6),
    end_time          timestamp(6),
    error_message     varchar(2000)
);

4.2 SQL 改造原则

Oracle 中常见写法:

sql 复制代码
SELECT *
FROM order_detail@order_link o
JOIN customer@crm_link c
  ON c.customer_id = o.customer_id;

迁移后不应机械改成两个远端对象本地连接。优先级如下:

  1. 在同一远端完成过滤和聚合,只返回小结果集;
  2. 将小维表同步到本地,再与远端结果关联;
  3. 将两端数据都汇聚到报表库;
  4. 无法优化时,通过 API 提供预聚合结果。

建议建立本地封装视图,避免业务 SQL 直接依赖外部对象名称:

sql 复制代码
CREATE VIEW rpt_v_order_realtime AS
SELECT order_id,
       customer_id,
       biz_time,
       region_code,
       pay_amount,
       order_status,
       update_time
FROM ext_order_detail
WHERE order_status IN ('PAID', 'REFUNDED');

这样后续可以把视图底层从外部表切到本地快照,而不必改造所有报表。

4.3 安全边界设计

跨库访问上线前至少落实以下控制:

  • 使用专用账号,不使用 SYS、SYSTEM、对象所有者或共享公共账号;
  • 默认只读,写入需求单独评审;
  • 远端只授权安全视图,不直接开放敏感底表;
  • 网络仅开放源端到目标端必要地址和端口;
  • 优先使用加密链路,并验证证书或服务端身份;
  • 凭据进入密码平台,禁止写入 Git、Wiki、工单正文和普通 SQL 文件;
  • 设置连接超时、语句超时、空闲会话回收和最大连接数;
  • 对访问主体、SQL、对象、时间、返回行数和错误进行审计;
  • 给高成本报表设置并发上限、分页和结果缓存;
  • 设置账号到期、密码轮换和离职回收流程。

4.4 数据校验

行数与汇总校验

Oracle 基线:

sql 复制代码
SELECT TRUNC(biz_time) AS biz_date,
       COUNT(*) AS row_count,
       SUM(pay_amount) AS amount_sum,
       MIN(order_id) AS min_id,
       MAX(order_id) AS max_id
FROM order_detail
WHERE biz_time >= :begin_time
  AND biz_time <  :end_time
GROUP BY TRUNC(biz_time)
ORDER BY biz_date;

金仓侧对外部表或汇聚表执行同口径查询。日期截断函数和时区处理应按实际版本调整,关键是保证时间窗口完全一致。

抽样摘要校验
sql 复制代码
SELECT COUNT(*) AS row_count,
       SUM(pay_amount) AS amount_sum,
       SUM(CASE WHEN customer_id IS NULL THEN 1 ELSE 0 END) AS null_customer_count
FROM ods_order_detail
WHERE source_system = 'ORDER'
  AND biz_time >= :begin_time
  AND biz_time <  :end_time;

对重要记录还应按业务主键逐行比较:

sql 复制代码
SELECT order_id,
       customer_id,
       biz_time,
       region_code,
       pay_amount,
       order_status
FROM ods_order_detail
WHERE order_id IN (:sample_id_list)
ORDER BY order_id;

校验结果写入批次表,禁止只在终端人工查看后口头确认。

4.5 性能验证

性能测试至少分四组:

  1. 单用户小结果集查询;
  2. 高并发短查询;
  3. 大范围聚合;
  4. 远端慢响应和网络抖动。

记录指标:

  • P50、P95、P99 响应时间;
  • 本地返回行数和远端扫描行数;
  • 网络传输字节;
  • 远端 CPU、I/O、会话数;
  • 本地连接池占用;
  • 超时次数、重试次数和熔断次数。

测试结论不能只写"金仓侧 3 秒,Oracle 侧 2 秒"。应说明数据量、并发、缓存状态、执行计划、网络距离和下推情况,否则结果不可复现。

5. 结果对比

经过分流改造后,原 26 条 DBLINK 链路处理如下:

原链路类型 数量 替代方案 主要收益
小结果实时查询 6 外部表/FDW 改造量小,保留实时性
安全域隔离查询 4 数据服务 API 凭据和权限边界清晰
大批量统计 11 CDC/ETL 汇聚 报表本地计算,降低源库压力
日报与周报 5 物化快照 故障可降级,口径稳定

在脱敏压测环境中,大范围报表由远端直查改为本地汇聚后,远端扫描和网络传输显著下降;秒级实时链路通过限制列、时间窗口、连接数和超时,避免了报表高峰对交易库形成无界压力。

更重要的变化不是速度,而是故障可控:

  • 远端不可用时,报表自动切换到最近成功快照;
  • 页面明确展示"数据截至时间",不把旧数据伪装成实时数据;
  • 跨库查询被熔断后,不继续占用本地全部连接;
  • 恢复时先进行小流量探测,避免连接风暴;
  • 增量补数以水位和幂等键执行,可重复、可审计。

6. 风险与复盘

6.1 风险一:把 FDW 当成透明本地表

外部表的 SQL 形式很像本地表,但代价模型、谓词下推、连接方式和网络故障完全不同。开发人员如果不了解执行计划,容易写出"返回 100 行、远端扫描 1 亿行"的查询。

规避方法:

  • 给远端表建立受控视图,只开放必要列;
  • 使用明确的范围条件;
  • 避免对远端过滤列做不必要函数转换;
  • 限制跨库 JOIN;
  • 对高成本 SQL 做白名单或审核;
  • 定期检查执行计划和远端扫描量。

6.2 风险二:跨库写入与分布式事务

报表系统原则上应只读。若业务要求同时写本地库和远端库,就会引入部分成功、重试重复和分布式事务问题。不能因为 Oracle 原来能通过 DBLINK 写入,就默认迁移后仍应保留。

建议优先改造成:

  • 本地事务写业务表和可靠事件表;
  • 消息或任务异步写远端;
  • 以业务幂等键去重;
  • 失败进入补偿队列;
  • 对账任务检查最终一致性。

只有在明确验证目标版本、驱动、远端数据库和故障恢复机制后,才考虑同步跨库写入。

6.3 风险三:凭据和公共权限

数据库链接本质上建立了从一个安全域到另一个安全域的访问路径。高权共享账号、公共链接、长期不轮换密码和缺少审计,是比 SQL 语法更严重的风险。

迁移是收缩权限的机会,而不是复制历史问题的机会。

6.4 风险四:报表口径与数据延迟

实时直查改为同步汇聚后,数据会出现延迟。技术团队必须与业务确认 SLA,例如:

  • 经营看板:延迟不超过 5 分钟;
  • 财务日报:每日 02:00 前完成;
  • 监管报表:以已确认批次为准;
  • 故障降级:允许展示最近一次成功快照,但必须标记时间。

没有明确水位和数据时间戳的报表,即使结果数值正确,也难以审计。

6.5 灰度切换

切换分四步:

  1. Oracle DBLINK 与新链路并行运行,只比较不展示;
  2. 选取内部用户读取新链路,保留旧链路快速切换开关;
  3. 扩大到部分报表和非高峰时段;
  4. 全量切换后继续保留旧链路观察窗口,确认无调用再下线。

切换门禁:

  • 关键报表行数、金额、数量和抽样明细一致;
  • P95 在 SLA 内;
  • 连接和语句超时有效;
  • 远端不可用时可自动降级;
  • 凭据、权限、网络和审计通过安全检查;
  • 补数和回退脚本完成演练。

6.6 故障回退

建议保留统一访问视图和配置开关:

sql 复制代码
-- 实时模式
CREATE OR REPLACE VIEW rpt_v_order_access AS
SELECT * FROM rpt_v_order_realtime;

-- 降级模式:切到最近快照
CREATE OR REPLACE VIEW rpt_v_order_access AS
SELECT * FROM rpt_order_snapshot
WHERE snapshot_batch_id = (
    SELECT MAX(snapshot_batch_id)
    FROM rpt_snapshot_log
    WHERE status = 'SUCCESS'
);

若生产规范不允许通过替换视图切换,可在应用的数据访问层配置路由。无论采用哪种方式,都要避免在故障时临时手改几十条报表 SQL。

回退步骤:

  1. 熔断新跨库链路,阻止新增请求;
  2. 报表切换至最近成功快照或原 Oracle 路径;
  3. 记录故障水位和受影响时间窗口;
  4. 恢复后按水位补拉数据;
  5. 执行行数、汇总和抽样校验;
  6. 小流量恢复新链路;
  7. 完成复盘并更新容量、超时和告警阈值。

结语

Oracle 到金仓的 DBLINK 改造,不应被理解为寻找一个语法等价物。真正可靠的方案是按业务实时性、数据量、事务要求和安全域进行拆分,让每条跨库链路都有清晰的访问主体、权限范围、性能上限、数据水位和故障出口。

对于多库报表系统,优先顺序应当是:能汇聚就本地化,能服务化就隔离凭据,必须实时直连时才使用受控外部访问。最终验收标准也不是"SQL 能运行",而是"结果一致、性能可控、安全可审计、故障可降级、回退可演练"。


转载自:https://blog.csdn.net/u014727709/article/details/163190277

欢迎 👍点赞✍评论⭐收藏,欢迎指正

相关推荐
想你依然心痛5 小时前
【金仓数据库征文】Oracle到金仓:序列、触发器与自增键改造实践
触发器·序列·金仓数据库·oracle迁移·自增键·并发验证·回退方案
想你依然心痛6 小时前
【金仓数据库征文】Oracle到金仓:包、过程与函数的兼容改造路线
存储过程·pl/sql·程序包·金仓数据库·oracle迁移·回退方案·兼容改造
承渊政道3 天前
从设备数据到AI洞察:时序数据的多模融合实践
数据库·人工智能·性能优化·金仓数据库·多模融合
数据库小学妹11 天前
国产数据库选型技术指南:五大主流路线对比与Oracle迁移策略分析
分布式数据库·信创数据库·oracle迁移·国产数据库选型·集中式数据库
肖永威15 天前
金仓数据库麒麟环境SQL终端使用入门实践(增删改查篇)
数据库·sql·金仓数据库
不剪发的Tony老师18 天前
金仓数据库在线体验:简单易用
数据库·金仓数据库
云边有个稻草人2 个月前
深度解析:KingbaseES高可用架构落地原理与生产运维实战
数据库·读写分离·数据库运维·金仓数据库·国产数据库技术·数据备份恢复
Rubin智造社2 个月前
OpenClaw实操指南42|安全边界2:提示词注入与沙箱防护
纵深防御·ai安全·提示词注入·agent安全·openclaw·安全边界·沙箱防护
云边有个稻草人2 个月前
金仓数据库标量子查询消除:解决复杂SQL性能瓶颈
数据库·sql·性能调优·金仓数据库·kes·标量子查询·数据库内核