今天来分享一个非常实用的特性:YashanDB 的 DBLink 技术。无论是要跨多个 YashanDB 实例访问数据,还是要对接 Oracle 数据库,DBLink 都能帮你轻松搞定。整个过程无需改动应用逻辑,就能在 SQL 层实现跨库查询、更新和写入,真正做到“数据无缝流转”。

一、什么是 DBLink?
我们在日常业务开发中,经常会遇到这样的需求:某些数据分布在不同数据库实例中,但我们又需要统一查询或者更新它们。常见的做法有两种:

第一种,是在应用层分别连接多个数据库,把数据抓回来再做处理。这种方式灵活,但代码维护麻烦、效率也不高。

第二种,则是数据库本身提供跨库访问能力,比如 Oracle 的 DBLink。这种方式优势明显,数据库之间直接协作,性能和维护性都更好。

YashanDB 现在也支持类似的 DBLink 特性,让你一条 SQL 就能搞定跨库操作。

image.png
二、YashanDB DBLink 的基本用法
以一套典型的测试环境为例:


YashanDB 实例 1:192.168.23.53:3688
YashanDB 实例 2:192.168.23.53:5688
Oracle 实例:192.168.33.174:1521

image.png
创建用户和授权

先在本地实例中创建一个用于 DBLink 的账号:

create user test identified by yasdb_123 default tablespace users; grant CREATE DATABASE LINK to test;

image.png
创建 YashanDB → YashanDB 的 DBLink

create database link dblink_yashan
connect to test identified by yasdb_123
using '192.168.23.53:5688';

image.png
三、跨库查询和写入演示
查询远程 YashanDB 表的数据:
select * from t1@dblink_yashan;
向远程表插入数据:

insert into t1@dblink_yashan values (...);

支持多条插入、更新、删除等操作:


update t1@dblink_yashan set x1='updated';
delete from t1@dblink_yashan where a1=73;

image.png
四、连接 Oracle 也很轻松
创建 DBLink 连接到 Oracle 实例:

create database link dblink_oracle
connect to test identified by 123456
using 'oracle:192.168.33.174/orcl';

查询 Oracle 表:
select * from t1@dblink_oracle;
联合查询 Oracle 与 YashanDB 表:

select o1.a1, o1.b1, o1.c1, y1.d1, y1.e1, y1.x1
from t1@dblink_oracle o1, t1@dblink_yashan y1
where o1.a1 = y1.a1;

插入、更新、删除 Oracle 表数据:

insert into t1@dblink_oracle values (...);
update t1@dblink_oracle set x1='updated';
delete from t1@dblink_oracle where a1=73;

五、总结
通过 DBLink,YashanDB 可以非常方便地访问远程数据库的数据,无论目标是另一个 YashanDB 实例还是 Oracle,都能做到“像查本地表一样查远程表”。对于需要做数据整合、数据同步、异构数据源联动的场景,非常实用。

YashanDB 的这项能力不仅增强了其数据联通性,也为跨库架构设计提供了极大的灵活性。期待你在更多业务中用上 DBLink,实现真正的无缝数据协同!


数据库砖家
1 声望0 粉丝