PG-跨庫操作-postgres_fdw

来源:https://www.cnblogs.com/lottu/archive/2020/07/20/13345187.html
-Advertisement-
Play Games

接上一篇《PG-跨庫操作-dblink》;講下postgres_fdw的使用;postgres_fdw工作原理詳細介紹可以去看下《PostgreSQL指南》第4章; 對FDW特性;還支持在PostgreSQL異構資料庫的同步、遷移的場景。FDW隨著Postgres版本而升級、優化,對分散式架構也是支 ...


接上一篇《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特性。安裝很簡單;但維護註意點比較多;想要更多瞭解可以找陳華軍老師。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • cut 命令在Linux和Unix中的作用是從文件中的每一行中截取出一些部分,並輸出到標準輸出中。我們可以使用 cut 命令從一行字元串中於以位元組,字元,欄位(分隔符)等單位截取一部分內容出來。 在本文中,我們通過一些例子來瞭解 cut 命令的使用,這些使用方法在我們的日常工作中也是非常常用的。 C ...
  • 方法一: 使用原版wine,並配置q4wine,並下載最新的wechat 進行安裝使用; 可能會出現問題,需要自己調試解決; 方法二: 使用deepin-wine 和deepin-wechat,因為這個已經得到了測試,所以錯誤少點,用的人也多一點; 安裝方式: https://gitee.com/w ...
  • Java整個堆大小設置 Xmx 和 Xms設置為老年代存活對象的3-4倍,即FullGC之後的老年代記憶體占用的3-4倍 永久代PermSize和MaxPermSize設置為老年代存活對象的1.2-1.5倍。 永久區並不是老年代的1.2到1.5倍,而是FullGC後永久區的1.2到1.5倍 1.2x ...
  • swap交換記憶體主要是指當物理記憶體不夠用時,系統會啟用硬碟的一部分空間來充當伺服器記憶體,而預設情況下swap記憶體會有一些設置標準,它與物理記憶體的大小也是有關係的,具體標準如下: Ram大小 Swap大小 激活Swap後合計大小 256MB 256MB 512MB 512MB 512MB 1GB 1G ...
  • 一 跨域概述 1.1 同源策略 同源策略是一個安全策略。同源,指的是協議,功能變數名稱,埠相同。瀏覽器處於安全方面的考慮,只允許本功能變數名稱下的介面交互,不同源的客戶端腳本,在沒有明確授權的情況下,不能讀寫對方的資源。 同源策略主要是基於如下可能的安全隱患: 用戶訪問www.mybank.com,登錄併進行網銀 ...
  • 本文更新於2020-04-05,使用MySQL 5.7,操作系統為Deepin 15.4。 使用符號連接分佈IO 利用操作系統的符號連接,將不同的資料庫、表、索引指向不同的物理磁碟,從而達到分佈磁碟IO的目的。 禁止操作系統更新文件的atime屬性 對於讀寫頻繁的資料庫文件來說,記錄文件的訪問時間一 ...
  • Linux(Centos 7) 安裝配置 redis 1.下載reids ( 官網:redis.io,中文網:www.redis.cn) 我下載的是5.0.8版本的 第二步:安裝 解壓(到opt目錄) tar -zxvf redis-5.0.8.tar.gz -C /opt 2.檢查環境(安裝red ...
  • 項目里客戶端突然報錯,原因是SQL Server中某個Function返回值有問題,拿來代碼看還是比較簡單的Function,雖然寫法很不好,但是select dbo.fn_xxxfunction(0)返回值是空就有點奇怪。 IF OBJECT_ID('fn_xxxfunction', 'FN') ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...