2019独角兽企业重金招聘Python工程师标准>>>

在之前的两篇文章中,章郎虫分别介绍了dblink和postgres_fdw两个扩展。今天我在这里初略地说下使用dblink和postgres_fdw后的实际感受和区别。

postgres_fdw远程可写功能是9.3版本出来后才新加的,而dblink也可以在以前的postgresql版本中使用。在使用过程中,我把postgres_fdw安装在9.3,dblink安装在9.2.4,而远程连接的都是9.2.4版本的数据库。

首先在安装方面基本都差不多,可以用create extension dblink和create extension postgres_fdw分别安装。

然后比较他们的使用方法。在开始使用dblink之前,首先需要连接远程数据库,然后按照格式编写sql进行查询等操作。这里需要注意,在sql中需要把远程表的字段和类型在本地重新命名,不然sql会报错。这个章郎虫在一开始使用的时候觉得很不方便,而且如果每次查询一张表都要在sql中命名字段和类型其实是很糟糕的,不过幸好可以配置视图把sql“封装”起来。

1 select dblink_connect('myconn', 'host=XXX.XXX.XXX.XXX port=XX dbname=postgres user=myname password=mypassword');
2 select * from dblink('myconn','select * from mytable') as t(a int, b text, c text[]) where a>XX ;
3 create view myremote_table as select * from dblink('myconn','select * from mytable') as t(a int, b text, c text[]) ;
4 select * from myremote_table where a>XX ;
5 select dblink_disconnect('myconn') ;

以上是dblink的基本用法,接下来说下postgres_fdw。第一步创建远程服务器,这里需要定义主机地址,数据库名和端口。第二步指定连接远程数据库的用户,和创建的远程服务器一起封装。第三步创建远程表,这里也需要把远程表的字段和类型都列一下。第四步和操作本地表一样操作远程表。

1 create server vm05_zhang foreign data wrapper postgres_fdw options (host '192.168.0.235',dbname 'zhang',port '3500') ;
2 create user mapping FOR PUBLIC server vm05_zhang options (password 'xxx') ;
3 create foreign table vm05_world (greeting text) server vm05_zhang options (table_name 'world') ;
4 select * from vm05_world ;

最后在使用时章郎虫还发现dblink在运行数据量大的sql时容易丢失远程连接,导致查询或者更新失败,而postgres_fdw不会出现丢失连接的情况。另外dblink需要先连接才可以查询,我觉得在脚本中运用也没有那么方便。如果让账号密码明文显示,对数据库的安全来说也不是一个好选择。不过这个版本的postgres_fdw和dblink一样,都还不能对远程表的数据量实际估算,join表时也不会进行优化,所以远程操作时最好还是单表操作。

上面是章郎虫的实际使用感受,了解的很浅,总之个人感觉和dblink比起来,postgres_fdw方便多了。

参考:

dblink:http://www.sijitao.net/1368.html

postgres_fdw:http://www.sijitao.net/1434.html

转载于:https://my.oschina.net/u/270810/blog/174791

PostgreSQL数据库dblink和postgres_fdw扩展使用比较相关推荐

  1. 将PostgreSQL数据库扩展到每个月12亿条记录的经验教训

    这不是我第一次使用大型数据集.我为最大的英国公共Wi-Fi供应商设计的认证和产品管理数据库也有巨大的容量.我们每天跟踪数百万设备的身份认证.然而,该项目有资金,允许我们选择任何硬件.任何支持服务以及聘 ...

  2. PostgreSQL数据库扩展包——原理CreateExtension扩展控制文件解析

    createExtension函数 首先看createExtension函数,该函数首先调用check_valid_extension_name函数在任何访问文件系统之前检测extension的名字的 ...

  3. 扩展我们的分析处理服务(Smartly.io):使用 Citus 对 PostgreSQL 数据库进行分片

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  4. PostgreSQL的学习心得和知识总结(八十九)|深入理解PostgreSQL数据库开源MPP扩展Citus再平衡函数rebalance_table_shards的实现原理

    目录结构 注:提前言明 本文借鉴了以下博主.书籍或网站的内容,其列表如下: 1.参考书籍:<PostgreSQL数据库内核分析> 2.参考书籍:<数据库事务处理的艺术:事务管理与并发 ...

  5. PostgreSQL的学习心得和知识总结(一百二十四)|深入理解PostgreSQL数据库开源扩展pgreplay的安装说明和使用场景

    目录结构 注:提前言明 本文借鉴了以下博主.书籍或网站的内容,其列表如下: 1.参考书籍:<PostgreSQL数据库内核分析> 2.参考书籍:<数据库事务处理的艺术:事务管理与并发 ...

  6. postgreSql数据库笔记

    postgreSql数据库笔记 1.pg创建序列: SELECT nextval('seq_bsm' :: regclass) as XH;//查询序列值 //创建序列 CREATE SEQUENCE ...

  7. 安装 部署 postgresql数据库 搭建主从节点 (业务库)

    安装 部署 postgresql数据库 搭建主从节点 (时序数搭建 (待更新)) 文章目录 安装 部署 postgresql数据库 搭建主从节点 一 业务数据库搭建 1. 安装 yum源(服务器可访问 ...

  8. 安装 部署 postgresql数据库 搭建timescaledb数据库 (时序库)

    安装 部署 postgresql数据库 搭建timescaledb数据库 (时序库) timescaledb 搭建 文章目录 安装 部署 postgresql数据库 搭建timescaledb数据库 ...

  9. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

最新文章

  1. 微服务和 Serverless 如何强强联合?
  2. RSA大会播报 – 2014最佳安全博客提名
  3. C/C++中单井号与双井号的使用
  4. 30万奖金等你拿 | “信也科技杯”第五届数据解决方案应用大赛火热报名中!...
  5. 【新功能】开放搜索多路召回技术解读
  6. js 变量提升与函数提升
  7. python3安装模块的命令_如何为PythonPython3安装gi模块?
  8. Oracle - crfclust.bdb文件太大
  9. windows使用markdown离线编写文章(可设置图床)
  10. HOWTO:InstallShield的Basic MSI工程中如何增加序列号输入选项
  11. 数据库开发工程中,一些不常遇到的难题
  12. 多媒体技术知识点整理
  13. T229473 D. 背单词的小智(二分)
  14. 警告: Failed to register object [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Qia
  15. FTP是什么?FTP工具怎么用呢?
  16. PMP培训-项目进度管理
  17. php如何设置随机数字和字母,PHP获取随机数字和字母的方法大全
  18. 吴宗宪的35个BT经典台词
  19. mysql isodd_Mysql中的Prepared Statement与Stored Precedure学习
  20. 长安大学计算机考研大纲,长安大学自动控制理论研究生入学考试大纲

热门文章

  1. [原创] Neo.Geo 视频帧浏览器开发日志
  2. 致远互联“平台+生态”抢占数字化升级新赛
  3. 数据不平衡的解决办法
  4. CSP浏览器安全策略备忘
  5. 使用libFuzzer fuzz Chrome V8入门指南
  6. IDC:2017年,40%的CIO将失去在企业中的领导地位
  7. OpenERP里面继承的用法
  8. apache不能能够解析php文件
  9. html5关于定位功能的实现
  10. Myeclipse 安装svn插件