Mục lục
1. Giới thiệu Foreign Data Wrapper
Nhiều trường hợp, bạn đang kết nối vào database này và muốn xem dữ liệu ở 1 database khác.
Trong PostgreSQL có 1 chức năng hỗ trợ bạn làm điều đó. Nó gọi là Foreign data wrapper (FDW).
Cấu hình chức năng này rất đơn giản. Bài viết này sẽ giúp bạn.
2. Bài toán
Giả sử bạn đang kết nối vào 1 database PostgreSQL và bạn muốn truy vấn dữ liệu từ bảng history của 1 database ở máy chủ khác.
Bảng history có cấu trúc như sau:
create table history ( id int4 NOT NULL, step_name varchar(300) NULL, begin_time timestamp NULL, duration text NULL, message text NULL);
Các bước tiến hành sẽ như sau:
3. Cài đặt Extention
Đầu tiên bạn phải cài đặt extension có tên postgres_fdw.
CREATE EXTENSION postgres_fdw;
4. Tạo External Server
Sau đó, bạn tạo External Server (chính là server chứa database PostgreSQL mà bạn muốn kết nối tới)
CREATE SERVER ext_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '10.0.32.132', dbname 'fdw_db', port '5432');
Giải thích câu lệnh:
- Câu lệnh này sẽ tạo ra một External Server có tên ext_server (tên này tùy bạn đặt) kết nối đến máy chủ lưu trữ PostgreSQL database bạn cần kết nối.
- Ở trong phần OPTIONS:
- 10.0.32.132 là IP của máy chủ chứa PostgreSQL database mà bạn muốn kết nối tới.
- fdw_db là tên database mà bạn muốn kết nối,
- 5432 là port của PostgreSQL ở máy chủ đích.
5. Tạo user mapping
Sau khi tạo xong External Server, bạn cần tạo ra một kết nối với user ở database đích bằng câu lệnh sau:
CREATE USER MAPPING FOR CURRENT_USER SERVER ext_server OPTIONS (user 'postgres', password 'Abcd_1234');
Giải thích câu lệnh: Câu lệnh này sẽ thực hiện map user đang kết nối với user postgres của database ở xa, bằng External Server đã tạo ra ở bước trước (ext_server)
Cuối cùng bạn tạo Foreign table trên database hiện hành map với table history trên database ở xa.
6. Tạo Foreign Table
CREATE FOREIGN TABLE ext_history ( id int4 NOT NULL, step_name varchar(300) NULL, begin_time timestamp NULL, duration text NULL, message text NULL) SERVER ext_server OPTIONS (schema_name 'public', table_name 'history');
Như vậy là xong rồi đó, bạn có thể kiểm tra lại bằng cách select bảng ext_history xem sao
select * from ext_history;
Nguồn: https://dangxuanduy.com/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.