PG-跨库操作-postgres_fdw
接上一篇《PG-跨库操作-dblink》;讲下postgres_fdw的使用;postgres_fdw工作原理详细介绍可以去看下《PostgreSQL指南》第4章;
对FDW特性;还支持在PostgreSQL异构数据库的同步、迁移的场景。FDW随着Postgres版本而升级、优化,对分布式架构也是支持的。
一、新建插件postgres_fdw
安装插件postgres_fdw
lottu01=# create extension postgres_fdw;
二、新建远程数据库服务器
2.1、在本地库创建SERVER
--1 赋予lottu01对应权限
lottu01=# grant usage on foreign data wrapper postgres_fdw to lottu01;
GRANT
lottu01=# \c lottu01 lottu01
You are now connected to database "lottu01" as user "lottu01".
--2 创建server
lottu01=> CREATE SERVER lottu FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '192.168.1.221', port '6000', dbname 'lottu');
CREATE SERVER
2.2、在本地库创建user mapper
lottu01=> CREATE USER MAPPING FOR lottu01 SERVER lottu OPTIONS (user 'lottu', password 'li0924');
CREATE USER MAPPING
2.3、创建外部表
lottu01=> CREATE FOREIGN TABLE t1 (id int, info text) server lottu OPTIONS (schema_name 'public', table_name 't1');
CREATE FOREIGN TABLE
lottu01=> select * from t1;
id | info
------+-------
1001 | lottu
1002 | hello
1003 | rax
1004 | rax
1005 | lottu
(5 rows)
2.4、导入外部表
CREATE FOREIGN TABLE中声明的列数据类型和其他性质必须要匹配实际的远程表。列名也必须匹配,不过也可以为个别列附上column_name选项以表示它们在远程服务器上对应哪个列。在很多情况中,要手工构造外部表定义,使用IMPORT FOREIGN SCHEMA会更好。
lottu01=> create schema ft;
CREATE SCHEMA
lottu01=> IMPORT FOREIGN SCHEMA public FROM SERVER lottu INTO ft;
IMPORT FOREIGN SCHEMA
三、扩展
3.1、相关系统表
通过下列系统表可以查看数据库外部表信息。
| 系统表 | 简命令操作 | 含义 |
|---|---|---|
| pg_extension | \dx | 插件 |
| pg_foreign_data_wrapper | \dew | 支持外部数据库接口 |
| pg_foreign_server | \des | 外部服务器 |
| pg_user_mappings | \deu | 用户管理 |
| pg_foreign_table | \det | 外部表 |
3.2、使用优化
减少对远端服务器的连接影响;可以使用物化视图;
--1、在本地数据库创建物化视图
create materialized view mv_t1 as select * from t1;
--2、 刷新一下本地的物化视图即可看到新进来的数据:
refresh materialized view mv_t1
四、应用场景
4.1、数据同步
本地创建外部表;可对外部表支持执行delete、update、insert语句;同时远程数据库的表也会执行相对应的操作。例如两个数据库实现token的一致。
4.2、数据迁移
在导入外部表;可以实现数据迁移。
4.3、分布式架构使用
citus的实现原理是采用FDW特性。安装很简单;但维护注意点比较多;想要更多了解可以找陈华军老师。
PG-跨库操作-postgres_fdw的更多相关文章
- 【TP3.2】跨库操作和跨域操作
一.跨库操作:(同一服务器,不同的数据库) 假设UserModel对应的数据表在数据库user下面,而InfoModel对应的数据表在数据库info下面,那么我们只需要进行下面的设置即可. class ...
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" ...
- sql server 跨库操作
SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=sql服务器名;User ID=用户名;Password=密码;').PersonDb.dbo. ...
- SQL 使用openquery进行跨库操作
摘自:http://www.cnblogs.com/aji88/archive/2009/11/06/1597263.html 对给定的链接服务器执行指定的传递查询.该服务器是 OLE DB 数据源. ...
- PG-跨库操作-dblink
在PostgreSQL数据库之间进行跨库操作的方式 dblink postgres_fdw 本文先说说dblink:dblink是一个支持从数据库会话中连接到其他PostgreSQL数据库的插件.在其 ...
- 实现数据库的跨库join
功能需求 首先要理解原始需求是什么,为什么要跨库join.举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid:而用户的详细信息放在主库main_ ...
- FreeSql 如何实现 Sqlite 跨库查询
FreeSql 是 .NetFramework 4.6+..NetCore 下的 ORM 功能库,提供了丰富的功能,支持五种流行数据库 MySql/SqlServer/PostgreSQL/Oracl ...
- Yii2 跨库orm实现
近期在对公司的Yii2项目进行子系统拆分,过度阶段难免会有一些跨库操作,原生语句还好,加下库名前缀就可以了,可是到了orm问题就来了,特别是用到model做查询的时候,现在来记录一下跳过的坑, 像下面 ...
- 2017.9.15 postgres使用postgres_fdw实现跨库查询
postgres_fdw的使用参考来自:https://my.oschina.net/Kenyon/blog/214953 postgres跨库查询可以通过dblink或者postgres_fdw来完 ...
随机推荐
- Nginx学习简记_part2
第4章:nginx配置实例 -反向代理 4.1 反向代理实例一 实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080 4.1.1 实验代码 1) ...
- Spring Security-获取当前登录用户的详细信息
在Spring框架里面,可以通过以下几种方式获取到当前登录用户的详细信息: 1. 在Bean中获取用户信息 Authentication authentication = SecurityContex ...
- CSP-J2019 NOIP普及组初赛真题(选择题部分)
NOIP初赛考试提纲 时间:10月的第2/3个星期六下午14:30~16:30 分数及形式:满分100分,形式为笔试(今年可能上机) 1.单项选择题,共15题,每题2分,共30分 2.阅读程序题,共3 ...
- CentOS7升级系统内核至4.4.xx版本
CentOS7.x系统自带的3.10.x内核存在一些Bugs,导致运行的Docker.kubernetes不稳定,建议升级内核,容器使用的坑会少很多 下载内核源 rpm -Uvh http://www ...
- Python语言中的关键字(自己做的读书笔记)
电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2015.1.1 作者:陈东陈 阅读说明: 1.本文都是先解释,后放图片: 2.文中斜体部分要么为需要输入 ...
- Ajax、XMLHttpRequest、JSONP的区别
来自2020年搜狗的笔试题,第一题就不会
- 推荐一款万能抓包神器:Fiddler Everywhere
搞IT技术的同行,相信没有几个人是不会抓包这项技能的(如果很不幸你中枪了,那希望这篇文章给你一些动力),市面上的抓包工具也有很多,常用的有:Charles.Fiddler.Burpsuite.Wire ...
- 如何通过seo技术提高网站对用户的友好度
http://www.wocaoseo.com/thread-129-1-1.html 今天的天气又是29度,眼看着满大街的人都穿着短袖和衬衣了,自己也再不能穿个厚厚的外套出去了,要不会被别人笑 ...
- Sorting It All Out (拓扑排序+思维)
An ascending sorted sequence of distinct values is one in which some form of a less-than operator is ...
- Funny Positive Sequence (思维+前缀)
There are n integers a 1,a 2,…,a n-1,a n in the sequence A, the sum of these n integers is larger th ...