Postgresql 9.3外部資料封裝的新功能

來源:互聯網
上載者:User

仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳

這周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」,說明安裝成功。

第二步:創建遠端資料庫伺服器

先在遠端資料庫vm05中新建資料庫zhang和資料表world。

postgres=# create database zhang ;

postgres=# c zhang

zhang=# create table world (greeting text) ;

然後psql登陸本機資料庫創建vm05-zhang

postgres=# create server vm05_zhang foreign data wrapper postgres_fdw options (host '192.168.0.235',dbname 'zhang',port '3 500') ;

create server命令語法:

CREATE SERVER server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ] FOREIGN DATA WRAPPER fdw_name [ OPTIONS ( op tion 'value' [, ... ] ) ]

server_name:遠端資料庫的名稱,在一個資料庫中必須是唯一的。

server_type、server_version:可選,可能對一些外部資料封裝有用。

fdw_name:外部資料分裝名字,這裡我們是postgres_fdw。

options:其他可選參數,包括資料庫位址,資料庫名稱和埠等。

第三步:創建映射使用者

CREATE USER MAPPING指定連接遠端資料庫的使用者,這些資料和創建的foreign server遠端伺服器一起被封裝起來。 擁有foreign server許可權的使用者可以創建映射使用者。

postgres=# create user mapping FOR PUBLIC server vm05_zhang options (password 'xxx') ;

create user mapping命令語法:

CREATE USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC }

SERVER server_name

[ OPTIONS ( option 'value' [ , ... ] ) ]

user_name:現有的使用者映射到遠端server。 USER和CURRENT_USER匹配當前的使用者,沒有特定使用者可用就可以選擇PUBLIC。

server_name:當前需要使用者映射到的遠端資料庫伺服器名,第二步已經創建。

options:其他可選像,包括使用者名、密碼等。

例如:CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user ‘bob’, password ‘secret’);

第四步:創建遠端表

這裡需要注意,創建表的列要和遠端表的列要匹配,類型最好是一樣。 遠端表的列可以少些,順序可以不重要,因為fdw是根據名字來匹配的。

postgres=# create foreign table vm05_world (greeting text) server vm05_zhang options (table_name 'world') ;

第五步:查看效果

在vm05_world表中插入三條資料

postgres=# insert into vm05_world values ('Take me to your leader') ;

postgres=# insert into vm05_world values ('Take me to your leader.........') ;

postgres=# insert into vm05_world values ('Hello World!!!!!') ;

查看vm05_world表中資料

postgres=# select * from vm05_world ;

greeting

---------------------------------

Take me to your leader

Take me to your leader.........

Hello World!!!!!

(3 rows)

其實這個是在vm05這台伺服器上,我們登陸vm05查看是否有資料。

zhang=# select * from world ;

greeting

---------------------------------

Take me to your leader

Take me to your leader.........

Hello World!!!!!

(3 rows)

可以看到插入資料成功,當然我們也可以在update和delete from表vm05_world ,如果映射的使用者有這個許可權的話。

至此postgres_fdw外部資料封裝可寫正式測試完成,對於操作多張表很有用。 總結的比較粗淺,還有不明白的可以參考postgresql的官方文檔:

HTTPs://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.3#Writeable_Foreign_Tables

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.