اختصار کلمه Foreign Data Wrapper می باشد که در پایگاه داده Postgres این امکان را به شما میدهد که با دیگر منابع داده ای ارتباط برقرار کنید.
برای استفاده از FDW در PostgreSQL، باید ابتدا یک افزونه FDW را برای دیتابیس خود نصب کنید. سپس باید یک فایل تعریف FDW برای منبع داده مورد نظرتان ایجاد کنید. در این فایل باید جزئیات اتصال به منبع داده را تعریف کنید. سپس با استفاده از دستورات SQL مانند CREATE SERVER، CREATE USER MAPPING و CREATE FOREIGN TABLE میتوانید به دادههای خارجی دسترسی پیدا کنید.
استفاده از FDW در PostgreSQL، مزایای زیادی دارد. از جمله دسترسی آسانتر و بهتر به دادههای خارجی، عملیاتJOIN بین دادههای مختلف در دیتابیسهای مختلف و استفاده از ابزارهای PostgreSQL برای پردازش و تحلیل دادهها.
در PostgreSQL، هر FDWبرای هر منبع داده، نحوه اتصال به آن منبع و همچنین نحوه تبدیل دادهها بین منبع و PostgreSQL را تعریف میکند. برای اتصال به منابع دادهای که پشتیبانی FDW نمیکنند، میتوانید از FDWهای سفارشی سازی شده استفاده کنید.
ارتباط Postgresql با Oracle :
به عنوان یک مثال کامل از FDW با Oracle، ابتدا باید یک دیتابیس Oracle داشته باشید و فرض کنید که دارای جدول products با دو فیلد idو name است. سپس میتوانید به کمک کتابخانه FDW در PostgreSQL از دادههای این جدول خوانده و با آنها کار کنید.
1. نصب و راهاندازی FDW:
ابتدا باید FDW برای Oracle را در PostgreSQL نصب کنید. شما میتوانید از برنامه زیر برای نصب FDW برای Oracle استفاده کنید:
CREATE EXTENSION oracle_fdw;
با اجرای این دستور، ماژول FDW برای Oracle در PostgreSQL فعال میشود.
2. تنظیمات سرور Oracle:
قبل از شروع به کار با FDW، باید تنظیمات لازم را برای اتصال به دیتابیس Oracle انجام دهید. برای این کار، باید فایل tnsnames.ora را به صورت زیر ویرایش کنید:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
در اینجا، 127.0.0.1 باید به IP آدرس سرور Oracle تغییر کند و orclباید به نام دیتابیس Oracle شما تغییر کند.
3. ایجاد سرور:
حالا شما باید یک سرور برای FDW در PostgreSQLایجاد کنید. برای این کار، از دستور CREATE SERVERاستفاده میکنیم:
CREATE SERVER oracle_server
FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver '//localhost/orcl', dbname 'mydb');
در این دستور، نام سرور را oracle_server تعریف کردهایم و به عنوان نام دیتابیس، mydb را انتخاب کردهایم. همچنین، برای اتصال به دیتابیس Oracle، از dbserver استفاده شده است.
4. ایجاد Mapping:
حالا باید یک Mapping برای جدول productsدر دیتابیس Oracle ایجاد کنیم. برای این کار، از دستورCREATE FOREIGN TABLE استفاده میکنیم:
CREATE FOREIGN TABLE oracle_products (
id integer,
name character varying(50)
)
SERVER oracle_server
OPTIONS (table 'products');
در این دستور، نام جدول در دیتابیس Oracle را با استفاده از table مشخص میکنیم و اطلاعات جدول را به شکل جدول خارجی در PostgreSQL در دسترس قرار میدهیم.
5. انجام عملیات در جدول خارجی:
حالا میتوانید با استفاده از جدول خارجی در PostgreSQL، عملیات مورد نیاز را انجام دهید. به عنوان مثال، میتوانید دادههای جدول را با استفاده از دستور SELECT به صورت زیر بازیابی کنید:
SELECT * FROM oracle_products;
این دستور، تمامی ردیفهای جدول products در دیتابیس Oracle را به عنوان یک جدول در PostgreSQLبازیابی میکند.
همچنین، میتوانید با استفاده از دستور INSERT به صورت زیر داده جدیدی را در جدول خارجی درج کنید:
INSERT INTO oracle_products (id, name)
VALUES (1, 'product1');
این دستور، یک ردیف جدید با شناسه 1 و نام product1 را به جدول products در دیتابیس Oracleاضافه میکند.
6. Drop:
در نهایت، برای حذف FDW، میتوانید از دستور DROPاستفاده کنید. به عنوان مثال، برای حذف جدول خارجی از دستور زیر استفاده کنید:
DROP FOREIGN TABLE oracle_products;
و برای حذف سرور از دستور زیر استفاده کنید:
DROP SERVER oracle_server;
با انجام این مراحل، شما میتوانید با استفاده از FDW برای Oracle در PostgreSQL، به دادههای دیتابیس Oracle دسترسی داشته و با آنها کار کنید.