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

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

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

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

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

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

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

创建用户、并授权
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权限

SQL
create 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的灵活拓展能力点赞!

相关文章
|
9月前
|
SQL 监控 数据库
ADBPG&Greenplum成本优化问题之查看当前Greenplum中临时表的表空间现状如何解决
ADBPG&Greenplum成本优化问题之查看当前Greenplum中临时表的表空间现状如何解决
87 2
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle Sql基础查询
空字符串在oracle中常常相当于null,为什么不说空字符串等价于null呢,看案例: 可以看到,本身deptno是number类型的,而‘’字符串本身是varchar类型,这与null可以是任何类型不同,所以也就不等价。
【大数据开发运维解决方案】Oracle Sql基础查询
|
存储 分布式计算 Cloud Native
云原生数仓ADB PG如何破解大规模集群的关联查询性能问题?
本文从ADB PG架构设计的角度出发,探讨Runtime Filter在ADB PG中的实现方案,并介绍了基于Bloom Filter的ADB PG Dynamic Join Filter功能技术细节。
614 0
|
SQL 关系型数据库 Linux
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
620 0
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
|
SQL 存储 NoSQL
Greenplum应用最佳实践
Greenplum分布式分析数据库 通用操作的最佳实践。持续更新
1625 0
Greenplum应用最佳实践
|
存储 SQL 运维
PG数据库生态选型思路与最佳实践
PG数据库生态选型思路与最佳实践
PG数据库生态选型思路与最佳实践
|
数据库 OceanBase 测试技术
蚂蚁金服OceanBase挑战TPCC | 测试流程解析
蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注,为了更清楚的展示其中的技术细节,我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读。
6132 0
蚂蚁金服OceanBase挑战TPCC | 测试流程解析
|
SQL 关系型数据库 大数据
MPP架构实时大数据平台,分析性数据库 PostgreSQL 6.0 邀您公体验!
信息摘要: MPP架构实时大数据平台,云数据库 ADB for PostgreSQL 6.0 限时免费公测,邀您体验!适用客户: 互联网/游戏/政务/开发者 / 大型零售连锁商超 / 金融保险行业 / 考试认证的机构/版本/规格功能: 云数据库 ADB for PostgreSQL 6.0 正式发布,基于 Greenplum 最新6.0内核。
2546 0
|
安全 算法 关系型数据库