Làm sao OpenMetadata "biết" được dữ liệu của bạn? Câu trả lời là ingestion — kết nối tới hệ thống nguồn và thu metadata về. Bài này đi qua connector, cách cấu hình bằng UI và YAML/CLI, các loại metadata thu được, và cách dựng data lineage.
Ingestion là quá trình OpenMetadata kết nối tới một hệ thống nguồn (database, Kafka, Airflow, BI...) và thu thập metadata về để đưa vào catalog. Ingestion không sao chép dữ liệu thật — nó chỉ lấy thông tin mô tả: tên bảng/cột, kiểu dữ liệu, thống kê, một ít sample data, query log...
Mỗi loại nguồn dùng một connector tương ứng. OpenMetadata có sẵn hàng chục connector, chia thành các nhóm:
| Nhóm | Ví dụ connector | Metadata thu được |
|---|---|---|
| Database | MySQL, Postgres, Oracle, Snowflake | Schema, bảng, cột, view, profiler, sample data |
| Messaging | Kafka, Redpanda | Topic, schema message, sample message |
| Pipeline | Airflow, dbt | Pipeline/DAG, task, lineage giữa các bảng |
| Dashboard | Power BI, Superset, Tableau, Metabase | Dashboard, chart, dataset nguồn |
| Storage | S3, MinIO, GCS | Container, cấu trúc thư mục, file/partition |
Có hai cách thiết lập một luồng ingestion:
metadata (Python). Cách này hợp cho CI/CD và quản lý cấu hình bằng Git.Một file YAML ingestion mẫu cho MySQL:
# mysql.yaml — cấu hình ingest metadata từ MySQL source: type: mysql serviceName: cdc_mysql serviceConnection: config: type: Mysql username: root authType: password: rootpass hostPort: mysql:3306 databaseSchema: appdb sourceConfig: config: type: DatabaseMetadata # bật lấy thêm sample data & view includeViews: true sink: type: metadata-rest config: {} workflowConfig: openMetadataServerConfig: hostPort: http://localhost:8585/api authProvider: openmetadata securityConfig: jwtToken: <ingestion-bot-token>
Chạy luồng ingestion bằng CLI:
# cài CLI (một lần) pip install "openmetadata-ingestion[mysql]" # chạy ingest theo file cấu hình metadata ingest -c mysql.yaml
source (lấy từ đâu, kết nối thế nào), sink (gửi đi đâu — ở đây là metadata-rest để đẩy về API server), và workflowConfig (địa chỉ + token để xác thực với OpenMetadata server).| Loại | Nội dung |
|---|---|
| Schema metadata | Database, schema, bảng, cột, kiểu dữ liệu, view, khóa |
| Profiler | Thống kê từng cột: số dòng, tỉ lệ null, giá trị distinct, min/max, phân bố — để đánh giá chất lượng |
| Sample data | Một vài dòng mẫu để người dùng hình dung nội dung bảng |
| Query usage | Phân tích query log: bảng nào hay được truy vấn, ai dùng, dùng thế nào |
Profiler và query usage thường được bật như những luồng ingestion riêng, đặt lịch chạy định kỳ.
Lineage mô tả đường đi của dữ liệu: bảng đích được sinh ra từ những bảng nguồn nào, qua pipeline nào, rồi cấp dữ liệu cho dashboard nào. OpenMetadata dựng lineage theo 3 cách:
INSERT ... SELECT, CREATE TABLE AS... để suy ra bảng nào sinh ra từ bảng nào.Column-level lineage đi xa hơn lineage cấp bảng: nó cho biết cột đích nào được tính từ cột nguồn nào. Ví dụ cột total_revenue ở bảng báo cáo được tính từ cột amount của bảng orders — rất quan trọng cho impact analysis khi đổi schema.
cdc-lab để có schema + profiler, ingest Kafka để bắt các topic CDC của Debezium, và ingest Airflow để OpenMetadata tự dựng lineage giữa các bảng — tất cả về cùng một catalog.