写点什么

无缝连接!YashanDB DBLink 技术应用实践

作者:YashanDB
  • 2024-08-20
    广东
  • 本文字数:1582 字

    阅读完需:约 5 分钟

前言

小崖又收到用户投稿啦。今天分享的是如何在 YashanDB 中创建和使用 DBLink,高效进行跨库数据访问和处理数据,实现多库协同~


在常规的业务场景中,我们经常遇到跨数据库实例进行数据查询和更新的场景,通常有不同的技术方案来实现这个目标:


1)应用程序分别连接访问不同的数据库实例,获取数据后在应用层进行关联、合并等处理,分别更新对应的数据库实例。这种方案的优势是可以处理复杂的业务逻辑,劣势是需要编写代码来处理不同数据库实例的数据,维护成本较高。


2)在数据库实例中实现跨实例的数据查询和更新,如 Oracle DBLink。这种方案的优势是数据库本身实现了跨实例访问能力,简单易用,且跨实例的 SQL 执行效率比第一种方案更有优势。


上手试试 YashanDB 的 DBLink 特性,分为如下几步进行操作


  1. 创建用户、并授权


2)创建 YashanDB 到 YashanDB 的 DBLink 连接


3)通过 DBlink 连接查询另一个 YashanDB 实例的数据


4)通过 DBlink 连接修改另一个 YashanDB 实例的数据


5)创建 YashanDB 到 Oracle 的 DBLink 连接


6)通过 DBlink 连接查询 Oracle 实例的数据


7)通过 DBlink 连接修改 Oracle 实例的数据


环境信息


YashanDB 实例 1:192.168.23.53:3688


YashanDB 实例 2:192.168.23.53:5688


Oracle 实例 1:192.168.33.174:1521



1、创建 test 用户并授予创建 dblink 权限


SQLcreate user test identified by yasdb_123 default tablespace users;grant CREATE DATABASE LINK to test;
复制代码



2、创建一个 DBLink,该 DBLink 指向另一个 YashanDB 实例


SQL> create database link dblink_yashan CONNECT TO test identified by yasdb_123 USING '192.168.23.53:5688';
复制代码



3、通过该 DBLink 查询另一个 YashanDB 实例 T1 表中的数据


SQL> SELECT * FROM t1@dblink_yashan;
复制代码



4、通过 DBLink 向另一个 YashanDB 实例的 T1 表中插入数据、更新数据、删除数据


•通过 DBLink 向 T1 表插入 2 条数据,表中变成 3 条数据


SQL> INSERT INTO t1@dblink_yashan VALUES(73, 29, 3, 5, 18,'table tn1 row 2');SQL> INSERT INTO t1@dblink_yashan VALUES(31, 49, 20, 50, 71,'table tn1 row 3');SQL> SELECT * FROM t1@dblink_yashan;
复制代码



•通过 DBLink 向 T1 表将 T1 表的 X1 字段进行更新


SQL> UPDATE t1@dblink_yashan SET X1='Updated by DBLINK';SQL> SELECT * FROM t1@dblink_yashan;
复制代码



•通过 DBLink 删除 T1 表中的一行数据


SQL> DELETE FROM t1@dblink_yashan WHERE A1=73;SQL> SELECT * FROM t1@dblink_yashan;
复制代码



5、创建一个 DBLink,该 DBLink 指向另一个 Oracle 数据库实例


SQL> create database link dblink_oracle CONNECT TO test identified by 123456 USING 'oracle:192.168.33.174/orcl';
复制代码



6、通过指向 Oracle 实例的 DBLink 查询 Oracle 实例 T1 表中的数据


SQL> SELECT * FROM t1@dblink_oracle;
复制代码



在 SQL 中通过 Oracle 实例的 DBlink 和 YashanDB 的 DBlink 将这两个表进行关联查询:


SQL> 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;
复制代码



7、通过指向 Oracle 实例的 DBLink 向 Oracle 实例的 T1 表中插入数据、更新数据、删除数据


•通过 DBLink 向 T1 表插入 2 条数据,表中变成 3 条数据


SQL> INSERT INTO t1@dblink_oracle VALUES(73, 29, 3, 5, 18,'table tn1 row 2');SQL> INSERT INTO t1@dblink_oracle VALUES(31, 49, 20, 50, 71,'table tn1 row 3');SQL> SELECT * FROM t1@dblink_oracle;
复制代码



•通过 DBLink 向 T1 表将 T1 表的 X1 字段进行更新


SQL> UPDATE t1@dblink_oracle SET X1='Updated by DBLINK';SQL> SELECT * FROM t1@dblink_oracle;
复制代码



•通过 DBLink 删除 T1 表中的一行数据


SQL> DELETE FROM t1@dblink_oracle WHERE A1=73;SQL> SELECT * FROM t1@dblink_oracle ;
复制代码



总结一下!通过在 YashanDB 中创建和使用 DBLink,我们验证了便捷地通过 SQL 访问其他的 Oracle 或者 YashanDB 数据库实例中的数据,实现方便地跨库数据访问。DBLink 确实是一个非常实用的功能,也为 YashanDB 的灵活拓展能力点赞!

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
无缝连接!YashanDB DBLink技术应用实践_yashandb_YashanDB_InfoQ写作社区