# **Data Pipeline 資料管線** ## 📌What is a data pipeline? ### 解釋 資料管線,**是一套讓你工作資料化、流程化、自動化的系統方法**。簡單來說,就是將資料從「某個系統」移動到另一個「系統」的方法,而其中對資料的存儲和管理會在不同情況下有所變動。另外,資料通道也允許從不同來源取得資料(disparate sources),進而在更高效(high-performing)的資料存儲中轉換(transformation)和整合(consolidation)。 ![](https://i.imgur.com/rYTIrfU.png) ### 應用 * 建立和維護資料傳送等等基礎架構(infrastructure)的人員。例如:資料工程師(data engineer)。 * 數據整合的終端使用者。例如:資料科學家(data scientist)、資料分析師(data analysts)、商業智能工程師(BI engineer)、產品總監(chief product officer)、市場行銷(marketing)。 1. 策略(strategic)或是運籌(operational)的決策人員 2. 建立和維護分析工具的人員 ## 📌Data pipeline components ### 解釋 **1. 起點(Origin):** 資料進入管線的開始。有可能是: 1.各類型資料源(data sources): 交易處理系統APP、物聯網感測器、社群軟體等等。 2.存儲系統(storage systems): 資料倉儲(data warehouse)、資料湖泊(data lake) **2. 終點(Destination):** 資料完成轉換/傳送。主要取決於對資料的實際應用: 1.用於資料視覺化(data visualization)或分析工具(analytical tools)。 2.移至存儲系統:資料倉儲、資料湖泊。 **3. 資料流(Dataflow)** ``` 資料在起點和終點間「流動」的過程。其中一個很常聽到的名詞就是所謂的ETL。 - 抽取(Extract): 從不同資料源(disparate source systems)的系統獲取資料。 - 轉置(Transform): 將資料移入暫存區(staging area),並將資料轉換成未來可用的格式。 - 載入(Load): 載入重新格式化(reformatted)的資料到最終目的地。 ``` **4. 存儲(Storage)** 資料在管線裡不同階段中保存的地方。存儲取決於很多因素,例如: - 體積(volume) - 頻率(frequency) - 資料庫查詢量(volume of queries to a storage system) **5. 處理(Processing)** 資料處理和資料流是不可分割的,只是資料處理著重於如何「實現」資料變動的過程。例如: - 複製資料庫的資料(database replication) - 串流資料(streaming data)*等等 **6. 工作流(Workflow)** 在管線中,工作流定義了資料互相間一系列的任務(task)和依賴性(dependence),主要的觀念: - 任務(job) - 上游(upstream) - 下游(downstream) 若上游沒有被準確執行,下游就有可能會出狀況,就像水流(waterflow)一樣。 **7. 監控(Monitoring)** 檢查管線中的數據是否有在正常運作,不管是效率(efficiency)或是負荷(data load)等等因素。 **8. 技術(Technology)** 1.ETL工具:包括資料準備/整合工具 e.g. Informatica Power Center, Apache Spark, Talend Open Studio 2.資料倉儲(ata warehouses): 關聯式資料庫 e.g. Amazon Redshift, Snowflake, Oracle 3.資料湖泊(data lakes): 原始資料儲存,可能是關聯或無關聯資料(relational and non-relational data),常被資料科學家用於機器學習專案使用 e.g. Microsoft Azure, IBM 4.Batch workflow schedulers: 自動化和監控工作流(workflow) e.g. Airflow, Luigi, Oozie, or Azkaban 5.處理串流/連續生成資料: e.g. Apache Spark, Flink, Storm, Kafka 6.程式語言:Python, Ruby, Java ![](https://i.imgur.com/i371oQ0.png) ## 📌Types of data pipeline solutions 不同的狀況下有不同管線通道實施及應用的方式。例如:若你想要將你的資料移到雲端,你可能就需要雲原生(cloud-native)*的工具。 **1. 批次(Batch)** 批次處理的工具。最主要的應用時機:當你要定期(regular interval)移動大量(large volume)的資料時,而不用即時的去處理。時常運用在整合大量市場(marketing)資料作為後續分析用。 **2. 即時(Real-time)** 即時處理資料的工具。最主要的應用時機:處理串流資料時,有可能是金融市場的資料又或是自動量測工具回傳的資料。 **3. 雲原生(Cloud native)** 處理雲端資料的工具,像是來自AWS bucket的資料。這類型工具存在雲端,你可以省下自己架框架(infra)和專業資源(expert resources)的金錢和時間,因為你可以依賴提供這些資源的供應商來主持(host)你的資料管線。 **4. 開源(Open source)** 當你需要一個低成本(low-cost)的替代方案,而不是商業性質的供應商(commercial vendor)時,開源程式就是一個很好的解決方案,你也可以依照自己的需求來擴增其功能。不過因為是公開的,要注意其他用戶也有機會修改和擴增它。 ![](https://i.imgur.com/MOR88Oq.png) ![](https://i.imgur.com/BPFTnTA.png) ![](https://i.imgur.com/uDCeFHt.png) ## 📌 ETL v.s. data pipeline 資料管線是一個更大的集合,裡面可能會包含多段ETL,以及執行ETL的工具等等。 ![](https://i.imgur.com/MFKfFmx.png) ## 📌Annotation ***批次處理v.s.串流資料** | | 批次處理 | 串流處理 | | -------- | -------- | -------- | | 資料範圍 | 查詢或處理資料集中的所有或大部分資料。 | 查詢或處理滾動式時窗內的資料或僅限最新的資料記錄。 | | 資料大小 | 大型資料批次。 | 個別記錄或包含幾筆記錄的微型批次。 | | 效能 | 延遲從幾分鐘到數小時。 | 需要幾秒或幾毫秒的延遲。 | | 分析 | 複雜分析。 | 簡易回應功能、彙總和累積指標。 | ***雲端原生** 雲端原生技術可讓組織在新式動態環境(例如公用、私人和混合式雲端)中建立並執行可調整的應用程式。更詳細資料可詳見:https://reurl.cc/dGgE26 ![](https://i.imgur.com/GDBmUIP.png) ***Lambda結構** 包含傳統的批次資料管線(batch data pipeline)以及即時的串流資料管線(stream data pipeline)。 ## 📌Comments Please feel free to point out the mistakes in the article😊. If u have any further questions or cooperation opportunities, please contact me via Email📬: willie880201044@gmail.com ## 📌References 1. What is a data pipeline? https://reurl.cc/Dg7d26 2. What is Data Pipeline: Components, Types, and Use Cases https://reurl.cc/W3gkmD 3. AWS Streaming data: https://reurl.cc/qg25nq 4. Alooma https://reurl.cc/4aOKMX