Postgresql Foreign Data Wrapper
Postgresql yalın halde sunulmuş RDMS veritabanlarından birisidir.Bundan dolayı dblink , Foreign Data Wrapper gibi özelliklerden faydalanmak için extension yüklememiz gerekir.
Postgresql farklı uzak sistemlere bağlanmanızı ve uzak sistemler üzerinden sorgulama ,yazma işlemleri yapmanıza imkan sağlar. Foreign Data Wrapper özelliği Postgresql ‘in 9.1 versiyonu ile gelmiştir.
Fdw(Foreing Data Wrapper) ile farklı sistemlerden veri çekmek,yazmak için farklı extensionların yüklenmesi gerekmektedir. Bunlardan bir kaçı aşağıdaki gibidir.
- Postgresql – Postgresql => postgres_fdw
- Postgresql – MSSQL =>tds_fdw
- Postgresql – Redis => redis_fdw
- Postgresql – MYSQL => Mysql_fdw
- Postgresql -MongoDB =>Mongo_fdw
Aşağıdaki uygulamamız da Postgresql den Postgresql sunucuya Fdw yapacağız.
Foreing Data Wrapper için ilk adım olan extension paketini aşağıdaki gibi ekliyoruz.
create extension postgres_fdw ;
Extension paketi yüklendikten sonra foreign data wrapper için kullanacağımız server’a erişebilmemiz için aşağıdaki komutu çalıştırıyoruz. Bu komut uzak bilgisayara bağlanmak için superuser kulanıcısı ile çalıştırılması gerekir.
CREATE SERVER c3 FOREIGN DATA WRAPPER postgres_fdw OPTIONS(host 'eklenecek_server_ipsi',port '5432');
Yukarıda erişmeye çalıştığımız makinenin connection bilgileri ile oluşturduk şimdi hangi kullanıcı ile erişeceğini belirtiyoruz.
Ben postgres user’ı ile yaptım siz farklı kullanıcı ile de yapabilirsiniz.
CREATE USER MAPPING FOR postgres SERVER c3 OPTIONS (username 'postgres',password 'postgres_şifresi');
Server ve User Mapping ‘i oluşturduktan sonra aşağıdaki gibi tablomuzu oluşturuyoruz.
CREATE FOREIGN TABLE foreign_table ( id integer NOT NULL, data text ) SERVER c3 OPTIONS (schema_name 'şema_ismi',table_name 'tablo_adi');
Ve foreign tablomuz oluşturuldu kontrol etmek için aşağıdaki komuttan faydalanabilirsiniz.
\det+
Komut ile kontrol ettiğimizde aşağıdaki c3 adındaki server ismimiz ile foreign_table tablomuzun oluşturulduğunu görüyoruz.