數據集成是一個穩定高效、彈性伸縮的數據同步平臺,致力于提供在復雜網絡環境下、豐富的異構數據源之間高速穩定的數據移動及同步能力。
使用限制
數據同步:
支持且僅支持結構化(例如RDS、DRDS等)、半結構化、無結構化(OSS、TXT等,要求具體同步數據必須抽象為結構化數據)的數據的同步。即數據集成僅支持傳輸能夠抽象為邏輯二維表的數據同步,不支持同步OSS中存放完全非結構化的數據(例如一段MP3)至MaxCompute。
網絡連通:
支持單地域內及部分跨地域的數據存儲相互同步、交換的數據同步需求。 部分地域之間可以通過經典網絡傳輸,但不能保證其連通性。如果測試經典網絡不通,建議您使用公網方式進行連接。
數據傳輸:
數據集成僅完成數據同步(傳輸),本身不提供數據流的消費方式。
數據一致性:
數據集成同步僅支持at least once,不支持exact once,即不能保證數據不重復,只能依賴主鍵+目的端能力來保證。
同步任務源端和目標端字段類型需要注意精度,如果目標端字段類型最大值小于源端最大值(或最小值大于源端最小值,或精度低于源端精度),可能會導致寫入失敗或精度被截斷的風險。(不區分源端和目標端類型,也不區分離線還是實時同步)
離線(批量)同步簡介
DataWorks的離線同步暫不支持跨時區同步數據。如果同步任務中同步的數據源與使用的DataWorks資源組不在同一個時區,則會導致同步的數據有誤。
數據集成主要用于離線(批量)數據同步。離線(批量)的數據通道通過定義數據來源和去向的數據源和數據集,提供一套抽象化的數據抽取插件(Reader)、數據寫入插件(Writer),并基于此框架設計一套簡化版的中間數據傳輸格式,從而實現任意結構化、半結構化數據源之間數據傳輸。
實時同步簡介
DataWorks的實時同步暫不支持跨時區同步數據。如果同步任務中同步的數據源與使用的DataWorks資源組不在同一個時區,則會導致同步的數據有誤。
數據集成的實時同步包括實時讀取、轉換和寫入三種基礎插件,各插件之間通過內部定義的中間數據格式進行交互。
一個實時同步任務支持多個轉換插件進行數據清洗,并支持寫入插件實現輸出功能。同時針對某些場景,支持整庫實時同步全增量同步任務,您可以一次性實時同步多個表。詳情請參見實時數據同步。
全增量同步任務簡介
實際業務場景下,數據同步通常不能通過一個或多個簡單離線同步或者實時同步任務完成,而是由多個離線同步、實時同步和數據處理等任務組合完成,這就會導致數據同步場景下的配置復雜度非常高。
為了解決上述問題,DataWorks提出了面向業務場景的同步任務配置化方案,支持不同數據源的一鍵同步功能,例如,“一鍵實時同步至Elasticsearch”、“一鍵實時同步至Hologres”和“一鍵實時同步至MaxCompute”等功能。通過此類功能,您只需要進行簡單的配置,就可以完成一個復雜的業務場景。
以業務數據庫數據同步到MaxCompute數據倉庫為例,當有大量的數據存儲在數據庫系統里,需要將數據庫中的全量及增量數據同步到MaxCompute進行數倉分析時,數據集成傳統方式是通過全量同步或者依賴數據庫表中的modify_time等字段進行增量同步。但實際生產場景下,數據庫表中不一定存在modify_time等字段,因此不能使用傳統的基于JDBC抽取的方式進行增量同步。而“一鍵實時同步至MaxCompute”功能實現了數據庫全增量實時同步到MaxCompute以及在MaxCompute上進行自動的全增量合并,可以使整個同步場景化繁為簡。
全增量同步任務具有如下優勢:
全量數據初始化。
增量數據實時寫入。
增量數據和全量數據定時自動合并寫入新的全量表分區。
全增量同步任務產品能力,詳情請參見:數據集成側同步任務能力說明。
復雜網絡環境下的數據源同步
數據集成支持在復雜網絡環境下的數據源進行異構數據源間的數據同步,包括但不限于以下環境:
數據源與DataWorks工作空間在同一個阿里云主賬號,并且同一個Region。
數據源與DataWorks工作空間不在同一個阿里云主賬號。
數據源與DataWorks工作空間不在同一個Region。
數據源在非阿里云環境。
但在進行上述網絡環境下的數據同步前,您需要確保數據集成用于執行數據同步的資源組與您將同步的數據來源端與目標端網絡環境的連通,數據集成支持您根據數據源所在網絡環境,選擇對應的網絡同步任務,關于網絡連通方案選擇與配置資源組與數據源的網絡連通,詳情請參見:配置資源組與網絡連通。
基本概念
并發數
并發數是數據同步任務中,可以從源并行讀取或并行寫入數據存儲端的最大線程數。
限速
限速是數據集成同步任務可以達到的傳輸速度限制。
臟數據
臟數據是指對于業務沒有意義,格式非法或者同步過程中出現異常的數據。單條數據寫入目標數據源過程中發生了異常,則此條數據為臟數據。 因此只要是寫入失敗的數據均被歸類于臟數據。例如,源端是VARCHAR類型的數據寫入INT類型的目標列中,導致因為轉換不合理而無法寫入的數據。您可以在同步任務配置時,控制同步過程中是否允許臟數據產生,并且支持控制臟數據條數,即當臟數據超過指定條數時,任務失敗退出。
由于臟數據原因導致離線/實時任務失敗,同步任務之前已經成功寫入的數據并不會回滾或撤銷。
數據集成為了提升性能采用批量寫入目的端方式,當寫入異常時,該批次數據是否能回滾取決于目的端是否支持事務機制。數據集成本身不支持事務機制。
數據源
DataWorks所處理的數據的來源,可能是一個數據庫或數據倉庫。DataWorks支持各種類型的數據源,并且支持數據源之間的轉換。
在數據集成同步任務配置前,您可以在DataWorks配置數據源頁面,配置好您需要同步的源端和目標端數據庫或數據倉庫的相關信息,并在同步過程中,通過選擇數據源名稱來控制同步讀取和寫入的數據庫或數據倉庫。