資料上雲,應該選擇全量抽取還是增量抽取?
增量抽取
-
時間戳方式
用時間戳方式抽取增量資料很常見,業務系統在源表上新增一個時間戳欄位,建立、修改表記錄時,同時修改時間戳欄位的值。 抽取任務執行時,進行全表掃描,透過比較抽取任務的業務時間、時間戳欄位來決定抽取哪些資料。
此種資料同步方式,在準確率方面有兩個弊端:
1、只能獲取最新的狀態,無法捕獲過程變更資訊,比如電商購物場景,如果客戶下單後很快支付,隔天抽取增量資料時,只能獲取最新的支付狀態,下單時的狀態有可能已經丟失。針對此種問題,需要根據業務需求來綜合判定是否需要回溯狀態。
2、會丟失已經被delete的記錄。如果在業務系統中,將記錄物理刪除。也就無法進行增量抽取。一般情況下,要求業務系統不刪除記錄,只對記錄進行打標。
業務系統維護時間戳如果使用了Oracle、DB2等傳統關係型資料庫,需要業務系統維護時間戳欄位,業務系統在更新業務資料時,在程式碼中更新時間戳欄位。此種方法很常見,不過由於需要編碼實現,工作量會變大,有可能會出現漏變更的情形
觸發器維護時間戳典型的關係型資料庫,都支援觸發器。當資料庫記錄有變更時,呼叫特定的函式,更新時間戳欄位。典型的樣例如下:
資料庫維護時間戳MySQL可以自動實現變更欄位的維護,一定程度上減輕了開發工作量。 具體的實現樣例如下:
建立記錄
最終的結果如下:
更新記錄
最終的結果如下,資料庫自動變更了時間戳欄位:
-
分析MySQL binlog日誌
近幾年,隨著網際網路的蓬勃發展,網際網路公司一般使用MySQL作為主資料庫,由於是開源資料庫,很多公司都做了定製化開發。 其中一個很大的功能點是透過訂閱MySQL binlog日誌,實現了讀寫分離、主備實時同步,典型的示意圖如下:
解析binlog日誌,給資料同步帶來了新的方法,將解析之後結果傳送到Hive/MaxCompute等大資料平臺,實現秒級延時的資料同步。
解析binlog日誌增量同步方式技術很先進,有3個非常大的優點:
1.資料延時小。在阿里巴巴雙11場景,在巨大的資料量之下,可以做到秒級延時;
2.不丟失資料,可以捕獲資料delete的情形;
3.對業務表無額外要求,可以缺少時間戳欄位;
當然,這種同步方式也有些缺點:
1.技術門檻很高。一般公司的技術儲備不夠,不足以自行完成整個系統搭建。目前國內也僅限於頭部的網際網路公司、大型的國企、央企。不過隨著雲端計算的快速發展,在阿里雲上開放了工具、服務,可以直接實現實時同步,經典的組合是MySQL、DTS、Datahub、MaxCompute;
2.資源成本比較高,要求有一個系統實時接收業務庫的binlog日誌,一直處於執行狀態,佔用資源較多
3.業務表中需要有主鍵,以便進行資料排序
-
分析Oracle Redo Log日誌
Oracle是功能非常強大的資料庫,透過Oracle GoldenGate實時解析Redo Log日誌,並將解析後的結果釋出到指定的系統
全量抽取全量抽取是將資料來源中的表或檢視的資料原封不動的從資料庫中抽取出來,並寫入到Hive、MaxCompute等大資料平臺中,有點類似於業務庫之間的資料遷移。
全量同步比較簡單,常用於小資料量的離線同步場景。不過這種同步方法,也有兩個弊端,與增量離線同步一模一樣:
1.只能獲取最新的狀態
2.會丟失已經被delete的記錄
業務庫表同步策略
-
同步架構圖 從業務視角,可以將離線資料表同步細分為4個場景,總體架構圖表如下:
原則上,在資料上雲這個環節,建議只進行資料映象同步。不進行業務相關的資料轉換工作。從ETL策略轉變為ELT,出發點有3個:
1.機器成本。在庫外進行轉換,需要額外的機器,帶來新的成本;
2.溝通成本。 業務系統的開發人員,也是資料中臺的使用者,這些技術人員對原始的業務庫表很熟悉,如果進行了額外的轉換,他們需要額外的學習其他工具、產品;
3.執行效率。庫外的轉換機器效能,一般會低於MaxCompute、Hadoop叢集,增加了執行時間;
同步過程中,建議全表所有欄位上雲,減少後期變更成本
-
小資料量表 來源資料每日全量更新,採用資料庫直連方式全量抽取,寫入每日/每月全量分割槽表。
-
日誌型表 原始日誌增量抽取到每日增量表,按天增量儲存。因為日誌資料表現為只會有新增不會有修改的情況,因此不需要儲存全量表。
-
大資料量表 資料庫直連方式透過業務時間戳抽取增量資料到今日增量分割槽表,再將今日增量分割槽表merge前一日全量分割槽表,寫入今日全量分割槽表。
-
小時/分鐘增量表/不定期全量 來源資料更新頻率較高,達到分鐘/小時級別,從源資料庫透過時間戳抽取增量資料到小時/分鐘增量分割槽表,將N個小時/分鐘增量分割槽表merge入每日增量分割槽表,再將今日增量分割槽表merge前一日全量分割槽表,寫入今日全量分割槽表。
本文為雲棲社群原創內容,未經允許不得轉載。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947441/viewspace-2662536/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料倉儲系列之ETL中常見的增量抽取方式
- 你應該選擇 Ubuntu 還是 Fedora?Ubuntu
- 資料跟蹤應該是選擇加入而不是選擇退出
- 資料倉儲架構到底選擇內部部署還是上雲?架構
- AMDU資料抽取案例一則
- Transwarp元件Trasporter工具資料抽取元件
- 是否應該在未選中行時禁用刪除按鈕,還是應該在點選按鈕時提示選擇資料?
- 從資料集中隨機抽取一定數量的資料隨機
- 測試開發應該選擇 Java 還是 Go 呢?JavaGo
- 每日安全資訊:資料跟蹤應該是選擇加入而不是選擇退出
- 資料恢復:AMDU資料抽取恢復資料恢復
- MySQL、Oracle後設資料抽取分析MySqlOracle
- 抽取JDBCTemplateJDBC
- [資訊抽取]基於ERNIE3.0的多對多資訊抽取演算法:屬性關係抽取演算法
- 學Python應該選擇Linux系統還是Windows系統?PythonLinuxWindows
- Datax離線資料抽取(MySQL--MySQL)MySql
- Datax離線資料抽取(Oracle--MySQL)OracleMySql
- Datax離線資料抽取(MySQL--Oracle)MySqlOracle
- 從雲資料遷移服務看MySQL大表抽取模式MySql模式
- 資料上雲還是本地儲存?選擇工業閘道器需要提前瞭解下
- 小程式還是APP,企業該如何選擇?APP
- 都 9012了,該選擇 Angular、React,還是Vue?AngularReactVue
- web伺服器該選擇apache還是nginxWeb伺服器ApacheNginx
- 專案管理工具,選擇本地部署還是上雲?專案管理
- 專科生該選擇學習雲端計算還是web前端Web前端
- GoldenGate抽取Informix資料庫安裝及配置GoORM資料庫
- 線上文字實體抽取能力,助力應用解析海量文字資料
- 資料抽取中的CDC(變化資料捕獲)方式
- 分析選擇Salesforce CRM還是Zoho CRM(上)Salesforce
- 網頁可讀內容抽取 API 資料介面網頁API
- RestCloud ETL抽取動態庫表資料實踐RESTCloud
- 【關係抽取-R-BERT】載入資料集
- redis存json資料時選擇string還是hashRedisJSON
- TRIZ——抽取原理·利弊
- 表格全欄位文字識別-表格內容抽取-翔雲API掛接API
- 個人雲主機應該怎麼選擇
- 資料科學領域,你該選 Python 還是 R ?資料科學Python
- 測試,ogg從歸檔日誌中抽取資料