資料來源
資料來源可以是應用程式、IoT 裝置,或不同類型的資料庫。不同的來源可以將資料主動推送至 Data Pipeline,而 Data Pipeline 也可以使用 API 呼叫、Webhook 或資料複寫程序從資料來源擷取資料。您可以即時擷取資料,也可以設計排程從來源收集資料。
資料格式有很多種,不同格式有各自適合的資料處理架構和工具。典型的 Data Pipeline 中通常會同時包含多種資料類型,可以分為以下幾類:
- Batch data(批次資料):是指按照一定時間間隔或數量規定,將資料一次性收集起來形成資料集再進行處理的資料。Batch data 通常以文件的形式存在,例如 CSV、JSON、AVRO、PARQUET 等格式,收集方式分為傳統的批次處理 (batch processing) 或微批次處理 (micro-batch processing) 。由於現今的應用程式傾向產生連續的資料,因此微批次處理 (micro-batch processing) 是較推薦的資料收集方式。
- Stream data(串流資料):指的是源源不斷從各種來源生成的即時資料,例如傳感器、網站、社交媒體平台或移動設備。這些資料即時傳輸和處理,且大小不大 (約幾 KB)。Stream data 可以是各種格式,包括文本、圖像、音訊和影片等,這些資料需要依照個別記錄或移動時段,按順序以遞增的方式處理,通常會使用串流處理服務(如 Apache Kafka、Google Pub/Sub、Azure Stream Analytics 或 Amazon Stream Data)進行處理,並用於相互關聯、彙總、篩選和取樣等多種分析。
- Transaction data(交易資料): 是指記錄了交易資訊的資料,例如在資料庫中存儲的所有交易、訂單、購買記錄等資料。常見的 Transaction data 包括關聯式資料庫 (RDBMS)、NoSQL、大數據等。
- Flat file(平面檔案):包含 PDF 或其他非表格格式的平面檔案。例如醫療或法律文件。
資料處理過程
隨著原始資料流經 Data Pipeline,資料會發生變更,例如排序、格式化、刪除重複資料、糾錯和驗證等,以變得更有商業價值。資料處理過程通常可以劃分成三類:
- ETL (Extract 提取, Transform 轉換,Load 載入)
ETL 是指將資料從來源系統中提取出來,對其進行轉換(清理、格式化、重組等)後,再將其載入到目標系統中的過程。ETL 將資料從不同的源系統中整合並進行統一的轉換和加工,使資料能夠被更好地分析和利用。
- ELT (Extract 提取,Load 載入,Transform 轉換)
隨著高性能的 Data Warehouse 如 BigQuery 的出現,其具有處理大型資料集的能力,由此衍生出了一種新的資料整合策略——ELT,直接將原始、未處理的資料發送到 Data Warehouse,依賴 Data Warehouse 在載入資料後對其進行轉換和加工。 然而,ELT 無法在載入之前刪除敏感資料,因此從資料安全、合規性和資料品質的角度來看,它並不是完美的。對於許多企業而言,他們會選擇 ETLT 的混合方法。
- ETLT (Extract 提取,Transform 轉換,Load 載入,Transform 轉換)
ETLT 是 ETL 和 ELT 的混合體。在 ETLT 中,資料首先被提取並經過轉換處理,然後被載入到一個中間儲存位置,然後再進行進一步的轉換和載入到目標系統中。這種方法結合了 ETL 和 ELT 的優點,可以在資料準備和加工過程中提供更多的靈活性和控制,並且允許將大量資料移動到不同的系統和環境中。
目的地
Data Pipeline 的目的地可以是 Data Warehouse、Data Lake,或其他商業智慧或機器學習模型。繼續閱讀,您會瞭解到不同目的地的架構設計和區別。
Data Pipeline 的類型
Data Pipeline 主要有兩種類型,批次處理 (Batch Processing) 和串流處理 (Stream Processing) 。
批次處理 (Batch Processing)
批次處理的 Data Pipeline 是指將大量資料分批次進行處理,通常適用於一些定期或計劃性的任務,例如批量匯入和匯出資料、生成報告等。當所有資料轉換完成後,Data Pipeline 會將全部資料載入 Data Warehouse 或其他類似的資料存放區。
批次處理的 Data Pipeline 運行頻率較低、時間較短,通常在離峰時段運行,需要較高的電腦運算能力。但由於 Batch data 通常不需要立即處理,因此可以對其進行離線處理和優化,以提高效率和降低成本。下圖展示了批次處理並將資料載入 Data Warehouse 的架構設計邏輯: