0

Greenplum Database Bài học 23: Greenplum Platform Extension Framework (PXF): Cổng kết nối đa năng với thế giới bên ngoài

Ở Bài học 21 và 22, chúng ta đã làm quen với tiến trình gpfdist và External Tables nhằm nạp hoặc truy vấn các tệp dữ liệu phẳng (CSV, Text) nằm bên ngoài hệ thống. Tuy nhiên, trong các kiến trúc Data Lake hiện đại tại doanh nghiệp, dữ liệu không chỉ nằm ở các file CSV đơn thuần mà còn được phân tán trên Object Storage (AWS S3, MinIO, Azure Blob) dưới các định dạng phân tích cao cấp như Parquet, ORC, hoặc nằm ẩn trong các cơ sở dữ liệu quan hệ khác (MySQL, Oracle, PostgreSQL).

Để kết nối mượt mà với toàn bộ thế giới Big Data đó mà không cần viết các kịch bản ETL phức tạp, Greenplum cung cấp một kiến trúc mở rộng toàn năng mang tên PXF (Platform Extension Framework). Trong bài học này, chúng ta sẽ khám phá cách PXF trở thành "cầu nối vạn năng" đưa dữ liệu từ mọi nguồn vào Greenplum.

1. PXF (Platform Extension Framework) là gì?

PXF là một khung mở rộng dịch vụ tích hợp sẵn trong Greenplum, hoạt động như một tầng trừu tượng hóa cho phép cơ sở dữ liệu truy vấn trực tiếp dữ liệu nằm ở các hệ thống lưu trữ bên ngoài thông qua chuẩn External Tables.

Nếu như gpfdist chuyên phục vụ việc đẩy file văn bản qua HTTP, thì PXF là một hệ sinh thái kết nối cấp độ doanh nghiệp (Enterprise-grade Connector), hỗ trợ đọc/ghi đa dạng các định dạng tệp và giao thức lưu trữ khác nhau.

┌────────────────────────────────────────────────────────────────────────┐
│                        KIẾN TRÚC TỔNG QUAN PXF                         │
└───────────────────────────┬────────────────┬───────────────────────────┘
                            │                │
     [ Greenplum Segments ] ◄──(Song song)──► [ PXF Daemons (Agents) ]
                                                     │
            ┌───────────────────┬────────────────────┼───────────────────┐
            ▼                   ▼                    ▼                   ▼
      [ Cloud S3 / MinIO ]  [ Hadoop HDFS ]     [ SQL Databases ]    [ Formats ]
       (Parquet / ORC)       (Hive / HBase)         (JDBC)          (JSON / CSV)

2. Kiến trúc hoạt động song song của PXF

Giống như triết lý cốt lõi của MPP, PXF được thiết kế để không bao giờ tạo ra nút thắt cổ chai ở Master Node:

  1. PXF Service (Daemon): Một tiến trình dịch vụ nhỏ gọn được cài đặt và chạy trên mỗi Segment Host trong cụm Greenplum.

  2. Truy vấn phân tán: Khi bạn chạy câu lệnh SELECT trên một External Table cấu hình qua PXF, Master Node lập lịch phân phối công việc.

  3. Đọc song song: Các tiến trình Segment trên từng máy chủ sẽ tự động gọi trực tiếp đến tiến trình PXF Daemon cục bộ của máy đó. PXF Daemon sẽ kết nối trực tiếp đến nguồn lưu trữ bên ngoài (ví dụ MinIO hay S3), kéo dữ liệu về, giải mã (decode) định dạng Parquet/ORC và nạp thẳng vào Segment mà không qua Master.

3. Các nguồn dữ liệu mà PXF hỗ trợ

PXF cung cấp một bộ sưu tập Connectors cực kỳ phong phú, chia thành các nhóm chính:

Nhóm kết nối (Connectors) Nguồn dữ liệu hỗ trợ tiêu biểu Định dạng tệp tin phổ biến
Object Storage AWS S3, MinIO, Google Cloud Storage (GCS), Azure Blob Storage. Parquet, ORC, Avro, JSON, CSV, Text.
Hadoop Ecosystem Apache HDFS, Hive, HBase, Spark. SequenceFile, RCFile, Parquet, ORC.
External Databases MySQL, Oracle, PostgreSQL, SQL Server (thông qua Greenplum JDBC Connector). Các bảng quan hệ truyền thống thông qua kết nối JDBC Driver.

4. Cú pháp thực chiến: Truy vấn file Parquet trên MinIO/S3 bằng PXF

Một trong những ứng dụng phổ biến nhất của PXF là phân tích trực tiếp các tệp Parquet (định dạng lưu trữ hướng cột chuẩn của Big Data) nằm trên kho lưu trữ đối tượng (Object Storage như MinIO hoặc AWS S3).

Bước 1: Khai báo External Table sử dụng PXF Profile

SQL

CREATE READABLE EXTERNAL TABLE ext_parquet_sales (
    sale_id BIGINT,
    product_name TEXT,
    category TEXT,
    amount NUMERIC(12,2),
    sale_date TIMESTAMP
)
LOCATION ('pxf://my-data-bucket/sales/2026/06/?profile=s3:parquet&server=minio-server')
FORMAT 'CUSTOM' (formatter='pxf_formatter');

Giải thích các tham số trong cú pháp:

  • pxf://...: Giao thức chỉ định sử dụng framework PXF.

  • my-data-bucket/sales/2026/06/: Đường dẫn tới thư mục chứa các file Parquet trên Object Storage.

  • profile=s3:parquet: Cấu hình Profile cho biết đây là kho lưu trữ dạng S3 (hoặc tương thích S3 như MinIO) và tệp tin có định dạng Parquet. PXF sẽ tự động hiểu cách đọc metadata và giải nén cột bên trong file Parquet mà không cần công cụ chuyển đổi trung gian.

  • server=minio-server: Tham chiếu tới cấu hình máy chủ S3/MinIO đã được DBA khai báo sẵn trong file cấu hình bảo mật của PXF (pxf-site.xml).

Bước 2: Truy vấn dữ liệu tức thì bằng SQL thuần túy

Sau khi tạo xong External Table, bạn có thể kết hợp nó trực tiếp vào các câu lệnh phân tích, JOIN với các bảng bên trong Greenplum như một bảng bình thường:

SQL

SELECT 
    category, 
    SUM(amount) AS total_revenue
FROM ext_parquet_sales
WHERE sale_date >= '2026-06-01'
GROUP BY category;

5. Khi nào nên dùng gpfdist và khi nào nên dùng PXF?

  • Dùng gpfdist khi: Bạn có các tệp tin thô (CSV, Text) nằm trên các máy chủ ứng dụng hoặc máy chủ ETL cục bộ, cần nạp dữ liệu nhanh vào cơ sở dữ liệu theo từng đợt (Batch Loading).

  • Dùng PXF khi: Dữ liệu của bạn đã được lưu trữ sẵn trên Data Lake (Hadoop, AWS S3, MinIO) dưới các định dạng phân tích chuẩn hóa (Parquet, ORC), hoặc khi bạn cần truy vấn dữ liệu trực tiếp từ một cơ sở dữ liệu quan hệ khác qua giao thức JDBC.

Tóm tắt Bài học 23

  • PXF (Platform Extension Framework) là hệ sinh thái kết nối đa năng giúp Greenplum mở rộng không gian truy vấn ra toàn bộ thế giới Big Data (Object Storage, Hadoop, JDBC Databases).

  • PXF hỗ trợ đọc các định dạng tối ưu hóa cao cấp như Parquet và ORC trực tiếp từ S3/MinIO mà không cần chuyển đổi định dạng.

  • Kiến trúc phân tán của PXF đảm bảo tính đồng thời song song trên mọi Segment Host, duy trì hiệu năng cao và loại bỏ hoàn toàn nút thắt cổ chai ở Master Node.

Ở bài học tiếp theo (Bài học 24), chúng ta sẽ tiếp tục đào sâu vào chuyên đề tích hợp lưu trữ đám mây với chủ đề: Tích hợp Greenplum với Object Storage (MinIO / AWS S3 / HDFS): Đọc/ghi trực tiếp định dạng Parquet và ORC.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí