Bài 2

Ingestion & Lineage

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à gì
Kết nối tới nguồn để thu metadata

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:

Các nhóm connector
Hơn 90 nguồn được hỗ trợ
NhómVí dụ connectorMetadata thu được
DatabaseMySQL, Postgres, Oracle, SnowflakeSchema, bảng, cột, view, profiler, sample data
MessagingKafka, RedpandaTopic, schema message, sample message
PipelineAirflow, dbtPipeline/DAG, task, lineage giữa các bảng
DashboardPower BI, Superset, Tableau, MetabaseDashboard, chart, dataset nguồn
StorageS3, MinIO, GCSContainer, cấu trúc thư mục, file/partition
Cách cấu hình ingestion
Qua UI hoặc qua YAML + CLI

Có hai cách thiết lập một luồng ingestion:

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
Cấu trúc YAML chung: luôn có 3 khối — 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).
Các loại metadata thu được
Không chỉ là tên bảng
LoạiNội dung
Schema metadataDatabase, schema, bảng, cột, kiểu dữ liệu, view, khóa
ProfilerThố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 dataMột vài dòng mẫu để người dùng hình dung nội dung bảng
Query usagePhâ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ỳ.

Data lineage
Dữ liệu chảy từ đâu tới đâu

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:

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.

Data Lineage — truy vết dữ liệu từ nguồn tới báo cáo Scroll / zoom · Mở draw.io ↗
Khớp với stack của bạn: bạn có thể ingest Oracle/MySQL trong 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.
← Bài trước
Bài 1: Tổng quan OpenMetadata