目的:解決數據同步性能問(wèn)題,提高數據時(shí)效性。
適用場(chǎng)景:業(yè)務(wù)庫和分析庫分離、數據倉庫ODS實(shí)時(shí)同步、ETL增量數據處理、跨局域網(wǎng)加速、數據庫實(shí)時(shí)備份、異構數據庫遷移。
前些日子和客戶(hù)聊天,他們用FineReport報表工具5、6個(gè)年頭了,先后做了財務(wù)報表、營(yíng)收分析、生產(chǎn)分析等七八個(gè)模塊,解決了企業(yè)信息化的不少難題。
后續聊到,之前的4個(gè)報表開(kāi)發(fā),2個(gè)專(zhuān)門(mén)去做ETL了,但總是被業(yè)務(wù)追著(zhù)要數據,明明定好的跑數時(shí)間,經(jīng)常要手動(dòng)去運行拿到當前的數據。但一個(gè)任務(wù)又不是馬上能跑完的,經(jīng)常出現“業(yè)務(wù)急、IT忙”的現象。
然而時(shí)效性問(wèn)題不是不想解決,種種原因,初期系統建設規范問(wèn)題、實(shí)時(shí)技術(shù)限制或者是只能有部分數據支持實(shí)時(shí)等,所以體現業(yè)務(wù)上就是數據延遲T+1了。
然后就問(wèn)我們有什么解決方案。然后,就從數據的高時(shí)效、增量聊起......
要做到數據的高時(shí)效,要做到兩點(diǎn):
* 這一章主要介紹數據的實(shí)時(shí)增量獲取,計算能力將在另外的文章進(jìn)行介紹。
常用的ETL模式是增量ETL和全量ETL。其中增量ETL,每次只處理增、刪、改的變化數據,減少大量非變化數據的同步,對比全量ETL,用最少的資源提高數據同步效率。
怎么才能具備增量的條件?一般的增量方法有以下5種:
從對業(yè)務(wù)系統改造最少出發(fā),排除掉時(shí)間戳和觸發(fā)器的方式,從提高同步效率來(lái)說(shuō),排除掉全量對比獲取增量的兩種方式,那么就剩下日志解析的方式了。
FineDataLink的數據管道,通過(guò)MySQL binlog、Oracle LogMiner、和SQL Sever的CDC等日志解析,來(lái)實(shí)現對增量數據的獲取。

同時(shí)采用流式引擎,實(shí)時(shí)捕獲源數據庫的變化,從而在毫秒內更新到目標數據庫,從而實(shí)現多源、異構業(yè)務(wù)系統的數據實(shí)時(shí)同步。

讓大批量的數據同步,分攤到每個(gè)數據發(fā)生變化的時(shí)間點(diǎn)上進(jìn)行增量同步,而不是一個(gè)特定時(shí)間點(diǎn)執行大批量數據,既減輕了對源庫的壓力,同時(shí)還提高了數據獲取的時(shí)效性。
實(shí)時(shí)同步過(guò)來(lái)的作為數據建設的ODS層,數據管道支持自主進(jìn)行主鍵設置,邏輯刪除、物理刪除配置,以及自動(dòng)新增時(shí)間戳,以彌補業(yè)務(wù)數據表進(jìn)行分析的一些弊端,使得后續數據處理過(guò)程具備增量計算的條件。
實(shí)時(shí)數據管道任務(wù)的配置,分以下五步驟:
讀寫(xiě)兩端分離,以保證在持續增量同步過(guò)程中,讀寫(xiě)兩端不會(huì )互相阻塞,從而實(shí)現高性能;以及對不能正常寫(xiě)入目標庫的臟數據進(jìn)行暫存,保證數據的完整性。

屏蔽不同業(yè)務(wù)系統的獨特性和差異性,從底層數據存儲入手,擴大支撐范圍,讓數據實(shí)時(shí)同步簡(jiǎn)單易用。目前FineDataLink支持從MySQL、SQL Server、Oracle、PostgreSQL、GaussDB 200、GreenPlum等之間的整庫全部表、多表進(jìn)行數據實(shí)時(shí)同步。

目標庫的表既可以選擇“自動(dòng)創(chuàng )建”新的目標表,也可以選擇“已存在表”,用于歷史任務(wù)遷移、目標表已存在等場(chǎng)景。

同時(shí),在這里提供了新增“時(shí)間戳”和“邏輯刪除標志位”,在目標表追加fdl_marked_deleted、fdl_update_timestamp標記字段,用于記錄數據的刪除狀態(tài),以及實(shí)際新增、更新的時(shí)間。
從而彌補業(yè)務(wù)系統表不一定都有時(shí)間戳和邏輯刪除位的問(wèn)題,那么后續的處理邏輯可以從原來(lái)的全量重刷大量數據,變?yōu)橛羞x擇性處理發(fā)生過(guò)變化的小部分數據,減少處理數據量,節省計算資源,提升處理效率,多用于增量計算、增量加載和拉鏈表計算等場(chǎng)景。

另外,在進(jìn)行實(shí)時(shí)同步過(guò)程中,來(lái)源端結構可能因業(yè)務(wù)調整等原因發(fā)生變動(dòng),如增刪表、增刪字段、修改字段名稱(chēng)、修改字段類(lèi)型等,目標端可以自動(dòng)同步這些來(lái)源端的調整,不需要進(jìn)行人為的調整適配。

3、自動(dòng)表字段映射
當需要異構數據庫數據同步時(shí),字段自動(dòng)映射功能,不用手動(dòng)進(jìn)行自動(dòng)映射,提高配置環(huán)節效率。
同時(shí)支持目標端的更多自定義修改,例如編輯表名,編輯、刪除、重命名字段名,新增字段主鍵、非空等配置,規范數據輸出標準。

當遇到臟數據等時(shí)候,不希望影響正常數據的實(shí)時(shí)同步,那么通過(guò)設置閾值,讓整個(gè)同步過(guò)程正常運行,臟數據到達一定程度,通過(guò)短信、郵件等的方式告知,然后進(jìn)行異常數據的處理。

完成任務(wù)配置后,即可通過(guò)監控頁(yè)面看到讀取、輸出的總量和速度,以及是否存在臟數據和待同步數據,讓整個(gè)同步過(guò)程完全透明。

實(shí)時(shí)為強依賴(lài)這部分數據而工作的的人提供了立即識別和快速解決問(wèn)題的能力。
制造業(yè)某一客戶(hù),每天都需要進(jìn)行生產(chǎn)回顧,根據當前的庫存、訂單、產(chǎn)線(xiàn)以及機器情況等,對當天生產(chǎn)進(jìn)行計劃排期。
工作人員每天早上6點(diǎn),甚至更早開(kāi)始工作,去MES系統導出數據、進(jìn)行EXCEL匯總分析,準備會(huì )議材料,進(jìn)行異常狀況追蹤。然后從8點(diǎn)起,開(kāi)始進(jìn)行從課>>部>>處>>廠(chǎng)逐層進(jìn)行開(kāi)會(huì ),完成當天的生產(chǎn)排期會(huì )議。
另外,由于數據的時(shí)效性,有時(shí)候存在兩個(gè)小時(shí)甚至更長(cháng)時(shí)間的數據偏差,并不能完全真實(shí)、準確把控當前計劃是否合理,并且此類(lèi)重復性人工處理的方式,希望將其智能化自動(dòng)處理的,為企業(yè)帶來(lái)更大的價(jià)值。
采用了實(shí)時(shí)數據同步和增量計算方案后,當需要開(kāi)展生產(chǎn)排期會(huì )議時(shí),各層級相關(guān)人員打開(kāi)排產(chǎn)系統,即可看到由FineDataLink處理提供的最新庫存、訂單、產(chǎn)品情況、機器情況等數據。
這樣工作人員通過(guò)數據,結合實(shí)際進(jìn)行問(wèn)題排查,在會(huì )議前上傳異常報告,擺脫了之前需要提前幾個(gè)小時(shí)進(jìn)行數據準備且數據準確度不足的窘迫,方便會(huì )議高效進(jìn)行,快速解決問(wèn)題。
聯(lián)系客服