Postgresql 9.3外部数据封装的新功能
这周postgresql发布了9.3正式版,该版本包含可写的外部数据封装、数据页 checksums、快速的故障转移以及 streaming-only remastering 等等。很荣幸,公司第一时间让我试下外部数据分装可写的这个功能。原来postgresql 9提供可远程读取数据库的功能,现在正是加入远程可写。所以通过fdw(Foreign Data Wrappers),简单讲可以让我们在本地数据库操作远程数据库了。这和之前介绍的dblink有相似之处,但是fdw提供更多透明和标准的语法,而且性能也比dblink好。 第一步:安装postgres_fdw扩展 postgres=# create extension postgres_fdw; 如果提示“CREATE EXTENSION”,说明安装成功。 第二步:创建远程数据库服务器
create server命令语法: CREATE SERVERserver_name[ TYPE 'server_type' ] [ VERSION 'server_version' ] FOREIGN DATA WRAPPERfdw_name[ OPTIONS (option'value' [,... ] ) ] server_name:远程数据库的名称,在一个数据库中必须是唯一的。 server_type、server_version:可选,可能对一些外部数据封装有用。 fdw_name:外部数据分装名字,这里我们是postgres_fdw。 options:其他可选参数,包括数据库地址,数据库名称和端口等。 第三步:创建映射用户 CREATE USER MAPPING指定连接远程数据库的用户,这些数据和创建的foreign server远程服务器一起被封装起来。拥有foreign server权限的用户可以创建映射用户。
create user mapping命令语法: CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } user_name:现有的用户映射到远程server。USER和CURRENT_USER匹配当前的用户,没有特定用户可用就可以选择PUBLIC。 server_name:当前需要用户映射到的远程数据库服务器名,第二步已经创建。 options:其他可选像,包括用户名、密码等。 例如:CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user ‘bob’,password ‘secret’); 第四步:创建远程表 这里需要注意,创建表的列要和远程表的列要匹配,类型最好是一样。远程表的列可以少些,顺序可以不重要,因为fdw是根据名字来匹配的。
第五步:查看效果
可以看到插入数据成功,当然我们也可以在update和delete from表vm05_world ,如果映射的用户有这个权限的话。 至此postgres_fdw外部数据封装可写正式测试完成,对于操作多张表很有用。总结的比较粗浅,还有不明白的可以参考postgresql的官方文档: https://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.3#Writeable_Foreign_Tables 原文链接:http://www.sijitao.net/1434.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |