内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

PostgreSQL如何利用FDW實現(xiàn)簡易dblink

這篇文章主要講解了“PostgreSQL如何利用FDW實現(xiàn)簡易dblink”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PostgreSQL如何利用FDW實現(xiàn)簡易dblink”吧!

創(chuàng)新互聯(lián)建站長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靈石企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,靈石網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1、介紹

Oracle DATABASE LINK可以訪問其他數(shù)據(jù)庫(實例)的對象,使用簡單而且方便,很多現(xiàn)有應用會涉及到它。

2、常見用法

遠程表

SELECT col_list FROM table_remote@dblink;程序列

遠程序列

SELECT seq_remote.nextval@dblink FROM dual;

如果應用中不少地方用到它,或者說面臨很多這類應用,而我們又希望盡量少的改動應用,這里給大家展示一個簡單修改PG的辦法應對,簡化起見先說說表。

3、遠程表語法table_remote@dblink

這個格式有一個明顯的問題:@是PG里常見的操作符(或者部分),搜一下:

SELECT oprname FROM pg_operator WHERE oprname like '%@%';

多少個?60,直接是 @ 本身的就有17個之多。

4、表訪問FROM子句

我們來看FROM子句語法(節(jié)選自gram.y)

from_clause:
      FROM from_list              { $$ = $2; }
      | /*EMPTY*/               { $$ = NIL; }
    ;

from_list:
      table_ref               { $$ = list_make1($1); }
      | from_list ',' table_ref       { $$ = lappend($1, $3); }
    ;

/*
 * table_ref is where an alias clause can be attached.
 */
table_ref:  relation_expr opt_alias_clause
        {
          $1->alias = $2;
          $$ = (Node *) $1;
        }
...(略)
relation_expr:
      qualified_name
        {
          /* inheritance query, implicitly */
          $$ = $1;
          $$->inh = true;
          $$->alias = NULL;
        }

這里的語法還會影響到INSERT、CURSOR 等等,因為只是演示,我們就不去評估對它們的影響。

5、創(chuàng)建FDW

CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host 'foo', dbname 'foodb', port '5432');CREATE SCHEMA myserver;CREATE FOREIGN TABLE myserver.films (
    code        char(5) NOT NULL,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
)
SERVER myserver;

這里只是舉個例子,實際上采用什么樣的命名規(guī)則完全可以隨意選擇,只要跟當前應用要求的數(shù)據(jù)結(jié)構(gòu)不沖突即可。

6、把語法映射成為外部表訪問

relation_expr:
      qualified_name
        {
          /* inheritance query, implicitly */
          $$ = $1;
          $$->inh = true;
          $$->alias = NULL;
        }
      | qualified_name Op IDENT
        {
          /* inheritance query, implicitly */
          $$ = $1;
          $$->inh = true;
          $$->schemaname = $3;
          $$->alias = NULL;
        }

這里應該檢查 Op 是不是 @,不然任何操作符都可以。

7、訪問

SELECT * FROM films@myserver;

其實它相當于:

SELECT * FROM myserver.films;

這樣小小的改動,可能給應用開發(fā)人員減少一些修改代碼的苦處。

8、其它

修改語法的麻煩在于,我們需要確認它的影響范圍,簡單辦法是回歸測試,如果可以通過,至少證明我們沒有影響PG原有功能。上邊我們提到了遠程序列,它要更麻煩些,因為只是演示,也就不一一說明。并且我們也只是考慮了FROM子句中的實現(xiàn),其他部分呢?

PostgreSQL如何利用FDW實現(xiàn)簡易dblink

此外顯而易見,DBA的維護工作會增多。

9、增強

如果只是某些表需要遠程訪問,這種方式無疑還是可以接受的,如果某個系統(tǒng)需要訪問幾百張遠程表,就算可以用腳本自動創(chuàng)建,顯然也不是件美妙的事情。如果表結(jié)構(gòu)發(fā)生修改呢?所以這里自動創(chuàng)建是個好的選擇,如果每次訪問自動創(chuàng)建,又會面臨系統(tǒng)空間膨脹問題(跟臨時表一個道理),定義一個刷新策略可以緩解。根本解決辦法是用臨時數(shù)據(jù)源,這個改動很有趣。

感謝各位的閱讀,以上就是“PostgreSQL如何利用FDW實現(xiàn)簡易dblink”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對PostgreSQL如何利用FDW實現(xiàn)簡易dblink這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

本文標題:PostgreSQL如何利用FDW實現(xiàn)簡易dblink
文章路徑:http://www.rwnh.cn/article42/gshcec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網(wǎng)站導航、用戶體驗企業(yè)建站、營銷型網(wǎng)站建設(shè)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
稷山县| 宁远县| 宣城市| 张家口市| 响水县| 喜德县| 东乌珠穆沁旗| 西丰县| 巴中市| 丰顺县| 司法| 宁乡县| 德庆县| 淳化县| 湄潭县| 天镇县| 安多县| 双牌县| 嘉兴市| 通州市| 商都县| 石城县| 汉沽区| 封开县| 于都县| 镇平县| 江津市| 扎囊县| 永兴县| 泽普县| 志丹县| 定兴县| 沂水县| 卢湾区| 彭泽县| 曲沃县| 丹棱县| 本溪市| 灌云县| 罗江县| 比如县|