openGauss数据库

openGauss是一款企业级开源关系型数据库管理系统,深度融合华为在数据库领域多年的研发经验,基于SQL2003标准语法,采用木兰宽松许可证v2发行。openGauss作为新一代企业级开源数据库,在性能、可用性、安全性、智能运维等方面具备显著优势,特别适合对数据库有高要求的企业级应用场景。其开源特性和活跃的社区生态为用户提供了长期可靠的技术支撑


核心特性

  • 高性能架构
  • 多核优化:面向多核架构的极致性能,支持NUMA化数据结构
  • 向量化执行:支持行存转向量化,复杂查询性能提升50%以上
  • 企业级安全:支持数据全程加密,保障隐私安全,提供数据防篡改能力,满足实时性严苛要求
  • 智能运维与AI能力:内置AI算子,支持模型训练与预测

使用dblink实现openGauss跨库查询

创建测试用户和测试数据库

--前置操作。
CREATE USER user1 WITH SYSADMIN PASSWORD 'xxxxxx';
CREATE USER user2 WITH SYSADMIN PASSWORD 'xxxxxx';
CREATE DATABASE db1 DBCOMPATIBILITY = 'A'; --远端数据库
CREATE DATABASE db2 DBCOMPATIBILITY = 'A'; --测试DATABASE LINK数据库
\c db1 user1
--创建普通表。
 CREATE TABLE remote_tb(f1 int, f2 text, f3 text[]);
 INSERT INTO remote_tb VALUES (0,'a','{"a0","b0","c0"}');
 INSERT INTO remote_tb VALUES (1,'bb','{"a1","b1","c1"}');
 INSERT INTO remote_tb VALUES (2,'cc','{"a2","b2","c2"}');
--创建普通表。
 \c db2 user2
 CREATE TABLE local_tb(f1 int, f2 text, f3 text[]);
INSERT INTO local_tb VALUES (2,'c','{"a2","b2","c2"}');

  1. 环境准备和权限配置
    首先确保dblink扩展已安装并授权:
-- 在DB2中创建dblink扩展(需管理员权限)
CREATE EXTENSION IF NOT EXISTS dblink;
-- 确保user2用户有使用dblink的权限
GRANT USAGE ON FOREIGN DATA WRAPPER dblink_fdw TO user2;
  1. 创建DBLINK连接
    在DB2中创建到DB1的dblink连接:
-- 在DB2中执行,使用user2用户登录
-- 创建持久的dblink连接
SELECT dblink_connect('my_remote_conn', 
    'host=localhost port=5432 dbname=db1 user=user1 password=XXXX');
-- 验证连接是否成功
SELECT dblink_connect('my_remote_conn');
  1. 示例
    基本查询示例:
-- 查询远程数据库DB1中的remote_tb表
SELECT * FROM dblink('my_remote_conn', 'SELECT * FROM public.remote_tb') 
AS remote_table(f1 text, f2 text, f3 text);
-- 带条件的跨库查询
SELECT * FROM dblink('my_remote_conn', 
    'SELECT f1, f2 FROM public.remote_tb WHERE f1 < 100') 
AS remote_table(f1 text, f2 text);
-- 将远程数据插入到本地表
INSERT INTO public.local_tb (f1, f2, f3)
SELECT f1, f2, id FROM temp_remote_data;

连接关闭

-- 使用完毕后关闭连接
SELECT dblink_disconnect('my_remote_conn');
-- 关闭所有dblink连接
SELECT dblink_disconnect();

注意事项:
密码安全:实际生产环境中建议使用密码文件或连接池管理密码
网络延迟:跨库查询性能受网络影响,建议批量操作
错误处理:务必添加适当的错误处理机制
权限管理:确保用户有访问远程表的权限

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐