神通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 为远端表 ★ ★ ★
相关文章:
神通MPP数据库的跨库查询
神通MPP数据库的跨库查询 一. 简介二. 系统表三. 跨库查询语法1. 创建外部数据存储服务器2. 删除外部数据存储服务器3. 授予普通用户访问外部数据存储服务器权限4. 回收普通用户访问外部数据存储服务器权限5. 加密函数6. 访问外部数据存储服务器 ★ 四. 跨库查询:统…...
JavaWeb-WEB请求过程
WEB请求过程 一、B/S架构1.1 BS结构的好处1.2 B/S架构是如何完成交互的1.3 B/S网络架构的核心HTTP1.3.1 HTTP请求头1.3.2 HTTP响应头1.3.3 HTTP状态码1.3.4 HTTP缓存机制二、DNS域名解析、CND(分发网络)、负载均衡2.1 DNS域名解析2.2 CDN工作机制2.3 负载均衡2.3.1 硬件负载均衡…...
《QT从基础到进阶·二十一》QGraphicsView、QGraphicsScene和QGraphicsItem坐标关系和应用
前言: 我们需要先由一个 QGraphicsView,这个是UI显示的地方,也就是装满可见原色的Scene,然后需要一个QGraphicsScene 用来管理所有可见的界面元素,要实现UI功能,我们需要用各种从QGraphicsItem拼装成UI控件…...
32 _ 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?
从今天开始,我们来学习字符串匹配算法。字符串匹配这样一个功能,我想对于任何一个开发工程师来说,应该都不会陌生。我们用的最多的就是编程语言提供的字符串查找函数,比如Java中的indexOf(),Python中的find()函数等,它们底层就是依赖接下来要讲的字符串匹配算法。 字符串…...
TCP怎么实现可靠传输
链接 1,TCP头部的校验和保证获取正确数据,防篡改; 2,序列号和ACK确认机制同于管理数据包,对接收到的数据包进行确认,对没有接收到的数据包进行重传; 3,重传机制,包括超…...
C# new 和 override 的区别
在C#中子类继承抽象类的时候,new 和override都可以用来修饰子类方法,但两者之间是有区别的。 相同点: 它们都是子类在覆写基类方法时,修饰子类同名方法用的,都是为了隐藏基类的同名方法在实例化子类对象的时候&#…...
C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』
✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.右值引用1.1.什么是右值引用?1.2.move 转移资源1.3.左值引用 vs …...
在Windows以命令行方式根据文件名称搜索文件
对于cmd.exe,使用:dir /s /b filename.extension /s选项表示在子目录中搜索文件,/b选项表示仅显示文件名而不显示其他信息 对于PowerShell,使用:Get-ChildItem -Path “C:” -Recurse -Filter filename.extension -Re…...
asp.net数字档案管理系统VS开发sqlserver数据库web结构c#编程web网页设计
一、源码特点 asp.net 数字档案管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发。 asp.net数字档案系统1 应用技…...
数据挖掘 决策树
# 编码声明,并不是注释,而是一种特殊的源文件指令,用于指定文件的字符编码格式 # -*- coding: utf-8 -*-import pandas as pd # 提供了DataFrame等数据结构 from sklearn.tree import DecisionTreeClassifier, export_graphviz # 决策树分类…...
“技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 WP
Crypto BabyRSA 共模攻击 题目附件: from gmpy2 import * from Crypto.Util.number import *flag flag{I\m not gonna tell you the FLAG} # 这个肯定不是FLAG了,不要交这个咯p getPrime(2048) q getPrime(2048) m1 bytes_to_long(bytes(flag.e…...
[Android]修改应用包名、名称、版本号、Icon以及环境判断和打包
1.修改包名 在Android Studio中更改项目的包名涉及几个步骤: 打开项目结构: 在Android Studio中,确保您处于Android视图模式(在左侧面板顶部有一个下拉菜单可以选择)。 重命名包名: 在项目视图中,找到您的包名&…...
基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码
基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于风驱动算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于风驱动优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…...
安全计算环境(设备和技术注解)
网络安全等级保护相关标准参考《GB/T 22239-2019 网络安全等级保护基本要求》和《GB/T 28448-2019 网络安全等级保护测评要求》 密码应用安全性相关标准参考《GB/T 39786-2021 信息系统密码应用基本要求》和《GM/T 0115-2021 信息系统密码应用测评要求》 1身份鉴别 1.1对登录的…...
【Hello Go】Go语言函数
Go语言函数 定义格式自定义函数无参数无返回值有参数无返回值不定参数列表有返回值有多个返回值 函数类型匿名函数和闭包延迟调用deferdefer和匿名函数结合使用 获取命令行参数 定义格式 函数是构成代码执行的逻辑结构 在Go语言中 函数的基本组成为 func关键字函数名参数列表…...
docker小技能:容器IP和宿主机IP一致( Nacos服务注册ip为内网ip,导致Fegin无法根据服务名访问 )
文章目录 I 预备知识1.1 Docker组成1.2 命名空间 (进程隔离)1.3 Docker的网络模式1.4 容器IP和宿主机IP一致1.5 容器时间和服务器时间的一致性II 常用命令2.1 案例:流水线docker 部署2.2 删除没有使用的镜像2.3 shell 不打印错误输出2.4 阿里云流水线/jenkins忽略shell步骤中…...
Android笔记:震动实现
Android震动可以通过Vibrator类实现。以下是一个简单的代码示例: 注:需要注意,震动需要在子线程中执行,所以应该在一个异步任务中执行上述代码,或者使用Handler等机制将其发送到主线程中进行执行。 1、在AndroidMani…...
CSDN每日一题学习训练——Java版(二叉搜索树迭代器、二叉树中的最大路径和、按要求补齐数组)
版本说明 当前版本号[20231115]。 版本修改说明20231115初版 目录 文章目录 版本说明目录二叉搜索树迭代器题目解题思路代码思路参考代码 二叉树中的最大路径和题目解题思路代码思路参考代码 按要求补齐数组题目解题思路代码思路参考代码 二叉搜索树迭代器 题目 实现一个二…...
WPF中有哪些布局方式和对齐方法
在WPF (Windows Presentation Foundation) 中,你可以使用多种方式来进行元素的对齐,这主要取决于你使用的布局容器类型。以下是一些最常用的对齐方式: HorizontalAlignment 和 VerticalAlignment 在大多数WPF元素上,你可以使用 Ho…...
【2012年数据结构真题】
41题 (1) 最坏情况下比较的总次数 对于长度分别为 m,n 的两个有序表的合并过程,最坏情况下需要一直比较到两个表的表尾元素,比较次数为 mn-1 次。已知需要 5 次两两合并,故设总比较次数为 X-5, X 就是以 N…...
Kerberos身份认证原理与企业级排错实战指南
1. 这不是“另一个登录框”,而是一套精密运转的身份验证齿轮系统很多人第一次听说 Kerberos,是在公司内网登录邮箱或访问内部系统时,看到那个带小盾牌图标的弹窗——“正在使用 Kerberos 协议进行身份验证”。于是下意识觉得:“哦…...
DIY复刻经典:Texar Audio Prism动态处理器克隆套件全攻略
1. 项目概述:Texar Audio Prism 克隆套件如果你在专业音频圈子里混过一段时间,尤其是对上世纪八九十年代那些经典的、带点“魔法”色彩的外置动态处理器感兴趣,那么“Texar Audio Prism”这个名字你大概率不会陌生。它不是最常见的1176或者LA…...
鸿蒙系统微博应用锁常见问题解答
为微博设置应用锁后,不少用户会有各种疑问:忘记密码怎么办?会不会影响消息推送?能不能只锁定某些功能?应用锁耗电吗?本文将针对这些高频问题逐一解答,帮助您更好地使用鸿蒙系统(Harm…...
为内部知识库问答机器人接入Taotoken多模型增强回答效果
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强回答效果 构建一个高效的企业内部知识库问答机器人,核心挑战在于如何让…...
如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南
如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 如果你正在玩《鸣潮》却频繁遭遇帧率波动、画面卡顿或操作延迟,那…...
企业云盘签章技术方案:从数字签名原理到工程落地
背景 电子签章在企业云盘中的落地,不只是一个"上传盖章图片"的功能实现。本质上,它是一套涉及数字签名、PKI基础设施、文档完整性校验的综合性技术方案。本文从技术选型角度,说清楚企业云盘内置签章需要解决哪些问题、主流实现方案…...
【DeepSeek灰度发布黄金法则】:20年SRE亲授7步零故障上线实战框架
更多请点击: https://intelliparadigm.com 第一章:DeepSeek灰度发布策略全景图 DeepSeek模型服务的灰度发布并非简单的流量切分,而是一套融合可观测性、渐进式验证与多维熔断机制的工程化闭环体系。其核心目标是在保障线上推理稳定性的同时&…...
工业云脑:06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例
06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例 今天第九篇06小节——现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例。新手照着做10分钟就能跑起来,老手一看就知道这玩意儿省了多少钱。以前想上AI检测,得花几万块买专业边缘盒子;现在?树莓派5(RPi 5)…...
树莓派工业GPIO接口板:电气隔离与电平转换实战指南
1. 项目概述:为什么需要一块工业级GPIO接口板?如果你用树莓派做过一些硬件项目,尤其是涉及到控制继电器、电机或者连接工业设备(比如PLC、变频器)时,大概率踩过这样的坑:直接用树莓派的GPIO引脚…...
机器学习与深度学习在社交媒体心理健康检测中的权衡与选择
1. 项目概述:当AI遇见心灵,社交媒体心理健康检测的技术十字路口在社交媒体成为我们数字生活延伸的今天,海量的文本数据无意中记录着用户的情感波动与心理状态。作为一名长期混迹于数据科学和自然语言处理(NLP)一线的从…...
