FDW به معنی “Foreign Data Wrapper” است و در PostgreSQL به کار می‌رود تا به شما اجازه دهد اطلاعات از منابع دیگر را به عنوان جدول در دیتابیس خودتان بخوانید یا به آنها بنویسید.

FDW به شما اجازه می‌دهد تا از اطلاعاتی که در دیتابیس‌های دیگر، فایل‌ها یا دیتا منابعی دیگر مانند وب سرویس‌ها و… ذخیره شده‌اند به عنوان جدول در دیتابیس PostgreSQL استفاده کنید. با استفاده از FDW می‌توانید به عنوان مثال داده‌های یک دیتابیس MySQL را در دیتابیس PostgreSQL خود بخوانید و برعکس.

برای استفاده از 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 دسترسی داشته و با آن‌ها کار کنید.