当前位置: 首页 > news >正文

神通MPP数据库的跨库查询

神通MPP数据库的跨库查询

    • 一. 简介
    • 二. 系统表
    • 三. 跨库查询语法
      • 1. 创建外部数据存储服务器
      • 2. 删除外部数据存储服务器
      • 3. 授予普通用户访问外部数据存储服务器权限
      • 4. 回收普通用户访问外部数据存储服务器权限
      • 5. 加密函数
      • 6. 访问外部数据存储服务器 ★
    • 四. 跨库查询:统一用户访问流程
      • 1. 【远端】数据存储
      • 2. 【本地库】
    • 五. 跨库查询:非统一用户访问流程
      • 1. 【远端】数据存储
      • 2. 【本地库】

一. 简介

跨库查询,指无需将远端外部数据存储的数据导入到本地数据库,即可通过本地数据库查询远端外部数据存储的数据,满足本地与本地、本地与远端、远端与远端的表的联合查询能力。

神通 MPP5.0 目前支持的远端外部数据存储的类型有两种,神通 MPP5.0 即 STMPP-5.0、神通 KSTORE4.5 即 KSTORE-4.5。

补充说明
跨库查询访问有两种方式:① 统一用户访问;② 非统一用户访问
通过设置配置文件参数 ENABLE_EXTS_CURRENT_USER 来控制开启或关闭 统一访问功能

统一用户访问是指,用户(MPP5.0)通过 MPP5.0 访问外部存储服务器的权限 和外部存储服务器的用户(与MPP5.0 用户名相同)权限一致;
使用统一用户访问功能时,需配置使用一个公共的高权限用户(DBA 权限)作为“桥梁用户”访问所有外部存储服务器。
当使用统一用户访问时不能指定 username 和 password,使用非统一用户访问时必须指定 username 和 password。

二. 系统表

神通 MPP5.0 将外部数据存储服务器的信息存储在系统表 SYS_EXTERNAL_SERVER 中;
并将外部数据存储服务器的类型的信息存储在系统表 SYS_EXTERNAL_STORE 中。

两表结构如下:
在这里插入图片描述
在这里插入图片描述

三. 跨库查询语法

1. 创建外部数据存储服务器

用户通过执行此语句,可以创建服务器类型为神通 MPP5.0、神通 KSTORE4.5 的同构数据存储服务器,服务器信息包含:服务器 IP 地址、端口号、数据库名等。

CREATE EXTERNAL SERVER servername TYPE 'servertype' <ext_connection>;
<ext_connection>::= [CONNECT TO username IDENTIFIED BY password] USING 'hostname' PORT portnum DATABASE 'databasename'

参数
CREATE EXTERNAL SERVER:创建外部数据存储服务器,创建成功后会在 SYS_EXTERNAL_SERVER系统表中显示创建的外部数据存储服务器的信息;
servername:创建的外部数据存储服务器的名字;
servertype:创建外部数据存储服务器的类型,可以指定外部数据存储服务器的类型为神通 MPP5.0 即STMPP-5.0、神通 KSTORE4.5 即 KSTORE-4.5;
ext_connection:外部数据存储服务器的连接信息,包括服务器 IP 地址、端口号、数据库名、使用的用户名和密码;
username:用来连接外部数据存储服务器的用户名;
password:用来连接外部数据存储服务器的密码;
hostname:外部数据存储服务器的 IP 地址;
portnum:外部数据存储服务器的端口号;
databasename:外部数据存储服务器的数据库名字;

2. 删除外部数据存储服务器

DROP EXTERNAL SERVER servername;

servername:删除的外部数据存储服务器的名字。

3. 授予普通用户访问外部数据存储服务器权限

说明
超级用户通过执行此语句,可以为普通用户授予访问外部数据存储的权限。

GRANT SELECT ON EXTSERVER servername TO username;

servername:外部数据存储服务器名称;
username:被授予权限的用户名称。

4. 回收普通用户访问外部数据存储服务器权限

超级用户通过执行此语句,可以回收用户访问外部数据存储的权限。

REVOKE SELECT ON EXTSERVER servername FROM username;

servername:外部数据存储服务器名称;
username:被回收权限的用户名称。

5. 加密函数

本功能的提供一个函数接口,用户通过执行此函数,可以对用户的密码加密。此函数为统一用户访问功能所用。

SELECT EXTSENCRYPT(username, password);

username:统一用户访问的用户名。
password:统一用户访问的密码。

注意:用户名、密码大小写敏感。

6. 访问外部数据存储服务器 ★

通过 SELECT 语句查询外部数据存储服务器上的关系,需要在访问的关系后加上 @@servername

四. 跨库查询:统一用户访问流程

1. 【远端】数据存储

(1)在【远端】准备一张表

CREATE USER abc WITH PASSWORD 'abc123456,';
CREATE TABLE abc.t1(A int);
INSERT INTO abc.t1 VALUES(1);

(2)在【远端】创建用户作为 “桥梁用户”

CREATE USER DDD WITH PASSWORD 'ddd123456,';

(3)授予桥梁用户 dba 权限

GRANT ROLE SYSDBA TO USER DDD;

2. 【本地库】

【本地端库】,需要通过已经创建好的 远端用户(桥梁用户) 和密码来访问远端的元数据,因此需要将 远端用户(桥梁用户) & 密码配置在【本地库】配置文件中

配置成功之后,就可以创建外部数据存储服务器并访问远端数据了。
(1)对桥梁用户(远端用户)加密

SELECT EXTSENCRYPT('DDD','ddd123456,'); --得到加密后密码 'AAAAAA7778797A7B7C72'

(2)将桥梁用户(远端用户)信息存到 MASTER 节点的 conf文件

ENABLE_EXTS_CURRENT_USER=TRUE
EXTERNAL_SERVER_USER=DDD
EXTERNAL_SERVER_PASSWORD='AAAAAA7778797A7B7C72'

(3)创建外部数据存储服务器 ★
配置文件设置好并启动之后,需要为远端数据存储创建服务器,以便于在本地即可访问远端的数据。(此时不需要在此指定用户名密码!

CREATE EXTERNAL SERVER STMPP_SVR TYPE 'STMPP-5.0' USING '192.168.101.73' PORT 2220 DATABASE 'MASTER';

(4)授予普通用户访问外部数据存储服务器的权限

CREATE USER abc WITH PASSWORD 'abc123456,';
GRANT SELECT ON EXTSERVER stmpp_svr TO abc;

(5)切换普通用户访问远端数据 ★
注意:本地只是将桥梁用户信息存到配置文件中,访问远端数据时还是使用的普通用户!

CONNECT abc/abc123456,; --切换到普通用户 abc
SELECT * FROM t1@@stmpp_svr; --t1 为远端表   ★ ★ ★

五. 跨库查询:非统一用户访问流程

1. 【远端】数据存储

(1)【远端】数据存储

CREATE USER DDD WITH PASSWORD 'ddd123456,';
CREATE TABLE ddd.t1(A int);
INSERT INTO ddd.t1 VALUES(1);

2. 【本地库】

【本地端库】,需要通过已经创建好的远端用户和密码来访问远端的元数据,非统一用户访问需要修改参数 ENABLE_EXTS_CURRENT_USER,配置在本地库配置文件中,配置成功之后,就可以创建外部数据存储服务器并访问远端数据了。
(1)配置 MASTER 节点 conf 文件
ENABLE_EXTS_CURRENT_USER 配置默认是开启的,即默认支持统一用户!

ENABLE_EXTS_CURRENT_USER=FALSE

设置成功后,需要重启mpp服务!
启动脚本位于Linux环境中:/etc/init.d/stmpp_STMPPd ,执行启动脚本:

sh  stmpp_STMPPd  start  master

(2)创建外部数据存储服务器 ★
配置文件设置好并启动之后,需要为远端数据存储创建服务器,以便于在本地即可访问远端的数据。(此时要指定用户名密码!

CREATE EXTERNAL SERVER STMPP_SVR TYPE 'STMPP-5.0' CONNECT TO DDD IDENTIFIED BY 'ddd123456' USING '192.168.101.73' PORT 2220 DATABASE 'MASTER';

创建后,可在 SYS_EXTERNAL_SERVER 表中看到添加的外部数据存储服务器:
在这里插入图片描述

(3)授予普通用户访问外部数据存储服务器的权限

CREATE USER abc WITH PASSWORD 'abc123456,';
GRANT SELECT ON EXTSERVER stmpp_svr TO abc;

(4)切换普通用户访问远端数据 ★

CONNECT abc/abc123456,; --切换到普通用户 abc
SELECT * FROM t1@@stmpp_svr; --t1 为远端表 ★ ★ ★
http://www.lryc.cn/news/231436.html

相关文章:

  • JavaWeb-WEB请求过程
  • 《QT从基础到进阶·二十一》QGraphicsView、QGraphicsScene和QGraphicsItem坐标关系和应用
  • 32 _ 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?
  • TCP怎么实现可靠传输
  • C# new 和 override 的区别
  • C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』
  • 在Windows以命令行方式根据文件名称搜索文件
  • asp.net数字档案管理系统VS开发sqlserver数据库web结构c#编程web网页设计
  • 数据挖掘 决策树
  • “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 WP
  • [Android]修改应用包名、名称、版本号、Icon以及环境判断和打包
  • 基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码
  • 安全计算环境(设备和技术注解)
  • 【Hello Go】Go语言函数
  • docker小技能:容器IP和宿主机IP一致( Nacos服务注册ip为内网ip,导致Fegin无法根据服务名访问 )
  • Android笔记:震动实现
  • CSDN每日一题学习训练——Java版(二叉搜索树迭代器、二叉树中的最大路径和、按要求补齐数组)
  • WPF中有哪些布局方式和对齐方法
  • 【2012年数据结构真题】
  • k8s_base
  • 2023年亚太杯APMCM数学建模大赛数据分析题MySQL的使用
  • 自学SLAM(8)《第四讲:相机模型与非线性优化》作业
  • STL—next_permutation函数
  • Mysql 三种不使用索引的情况
  • Ladybug 全景相机, 360°球形成像,带来全方位的视觉体验
  • centos 6.10 安装swig 4.0.2
  • mask: rle, polygon
  • 【JMeter】JMeter压测过程中遇到Non HTTP response code错误解决方案
  • 【Kingbase FlySync】评估工具安装及使用
  • pandas教程:Data Aggregation 数据聚合