19 Ocak 2017 Perşembe

Veritabanı DBLink Oluşturma



                                PostgreSQL'de DBLink Nasıl Oluşturulur?



        DBLink, bir veritabanından başka bir veritabanına erişim sağlamak için veritabanı nesneleri arası kurulan köprü mantığıdır. Bu ilişki aynı sunucu üzerinde iki farklı veritabanı arasında olacağı gibi farklı sunucular üzerine kurulu farklı veritabanları arasında da kurulabilir. Bizim yapacağımız örnekte farklı sunucular üzerine kurulu farklı veritabanları arasındaki dblink özelliği olacaktır. Bunun için A sunucusu üzerine kurulu test1DB ile B sunucusu üzerine kurulu test2DB veritabanları arasında bir dblink oluşturmaya çalışacağız. test1DB sql konsolu üzerine uygulayacağımız adımlar aşağıdaki gibidir:

Oluşturacağım DBLink'in adı: testpostgresconn


DBLink extensions'ın veritbanına yükleme

        CREATE EXTENSION dblink;


- Kurulan DBLink extensions'ın test edilmesi veya barındırdığı özelliklerin listelenmesi

  SELECT pg_namespace.nspname, pg_proc.proname
        FROM pg_proc, pg_namespace
          WHERE pg_proc.pronamespace=pg_namespace.oid
              AND pg_proc.proname LIKE '%dblink%';

-  DBLink üzerinden testDB2 Veritabanına Erişimin Test Edilmesi

SELECT dblink_connect('host=hostadresi user=db_kul_ad password=db_psswrd dbname=testDB2');


-  Global Kullanıcı (Authentication) ve Server Oluşturma

CREATE FOREIGN DATA WRAPPER db_kul_ad VALIDATOR postgresql_fdw_validator;
CREATE SERVER testpostgresconn FOREIGN DATA WRAPPER db_kul_ad OPTIONS (hostaddr 'hostadresi', dbname 'testDB2');


-  Ortak Kullanım için Mapping Oluşturma

CREATE USER MAPPING FOR db_kul_ad SERVER testpostgresconn OPTIONS (user 'db_kul_ad', password 'db_psswrd');


- Oluşturduğumuz DBLink'i Test Etme

SELECT dblink_connect('testpostgresconn');



Şuana kadarki adımları başarılı bir şekilde uyguladığımız taktirde aşağıdaki 'Select' sql sorgu cümleciği ile test1DB üzerinden test2DB veritabanındaki tablolara erişebiliriz. Ve bundan sonra test1DB üzerinden test2DB tablolarına erişim için sorgularımızı yaratmış olduğumuz 'testpostgresconn' adındaki sanal server ortak bağlantısına yazmamız gerekir.


SELECT * FROM public.dblink
('testpostgresconn','SELECT idstruct,nmstruct FROM public.wfstruct')
AS DATA(idstruct CHARACTER VARYING,nmstruct CHARACTER VARYING);




Hiç yorum yok:

Yorum Gönder