前些日子和客戶聊天,他們用FineReport報表工具5、6個年頭了,先后做了財務(wù)報表、營收分析、生產(chǎn)分析等七八個模塊,解決了企業(yè)信息化的不少難題。 后續(xù)聊到,之前的4個報表開發(fā),2個專門去做ETL了,但總是被業(yè)務(wù)追著要數(shù)據(jù),明明定好的跑數(shù)時間,經(jīng)常要手動去運行拿到當(dāng)前的數(shù)據(jù)。但一個任務(wù)又不是馬上能跑完的,經(jīng)常出現(xiàn)“業(yè)務(wù)急、IT忙”的現(xiàn)象。 然而時效性問題不是不想解決,種種原因,初期系統(tǒng)建設(shè)規(guī)范問題、實時技術(shù)限制或者是只能有部分?jǐn)?shù)據(jù)支持實時等,所以體現(xiàn)業(yè)務(wù)上就是數(shù)據(jù)延遲T+1了。 然后就問我們有什么解決方案。然后,就從數(shù)據(jù)的高時效、增量聊起...... 要做到數(shù)據(jù)的高時效,要做到兩點:
* 這一章主要介紹數(shù)據(jù)的實時增量獲取,計算能力將在另外的文章進行介紹。 1、實時增量技術(shù)難嗎?怎么實現(xiàn)常用的ETL模式是增量ETL和全量ETL。其中增量ETL,每次只處理增、刪、改的變化數(shù)據(jù),減少大量非變化數(shù)據(jù)的同步,對比全量ETL,用最少的資源提高數(shù)據(jù)同步效率。 怎么才能具備增量的條件?一般的增量方法有以下5種:
從對業(yè)務(wù)系統(tǒng)改造最少出發(fā),排除掉時間戳和觸發(fā)器的方式,從提高同步效率來說,排除掉全量對比獲取增量的兩種方式,那么就剩下日志解析的方式了。 FineDataLink的數(shù)據(jù)管道,通過MySQL binlog、Oracle LogMiner、和SQL Sever的CDC等日志解析,來實現(xiàn)對增量數(shù)據(jù)的獲取。 同時采用流式引擎,實時捕獲源數(shù)據(jù)庫的變化,從而在毫秒內(nèi)更新到目標(biāo)數(shù)據(jù)庫,從而實現(xiàn)多源、異構(gòu)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)實時同步。 讓大批量的數(shù)據(jù)同步,分?jǐn)偟矫總€數(shù)據(jù)發(fā)生變化的時間點上進行增量同步,而不是一個特定時間點執(zhí)行大批量數(shù)據(jù),既減輕了對源庫的壓力,同時還提高了數(shù)據(jù)獲取的時效性。 實時同步過來的作為數(shù)據(jù)建設(shè)的ODS層,數(shù)據(jù)管道支持自主進行主鍵設(shè)置,邏輯刪除、物理刪除配置,以及自動新增時間戳,以彌補業(yè)務(wù)數(shù)據(jù)表進行分析的一些弊端,使得后續(xù)數(shù)據(jù)處理過程具備增量計算的條件。 2、管道任務(wù)是如何構(gòu)建的?學(xué)習(xí)、管理成本高嗎?實時數(shù)據(jù)管道任務(wù)的配置,分以下五步驟: 1、消息隊列配置讀寫兩端分離,以保證在持續(xù)增量同步過程中,讀寫兩端不會互相阻塞,從而實現(xiàn)高性能;以及對不能正常寫入目標(biāo)庫的臟數(shù)據(jù)進行暫存,保證數(shù)據(jù)的完整性。 2、“多源、異構(gòu)”數(shù)據(jù)源、目的地選擇屏蔽不同業(yè)務(wù)系統(tǒng)的獨特性和差異性,從底層數(shù)據(jù)存儲入手,擴大支撐范圍,讓數(shù)據(jù)實時同步簡單易用。目前FineDataLink支持從MySQL、SQL Server、Oracle、PostgreSQL、GaussDB 200、GreenPlum等之間的整庫全部表、多表進行數(shù)據(jù)實時同步。 目標(biāo)庫的表既可以選擇“自動創(chuàng)建”新的目標(biāo)表,也可以選擇“已存在表”,用于歷史任務(wù)遷移、目標(biāo)表已存在等場景。 同時,在這里提供了新增“時間戳”和“邏輯刪除標(biāo)志位”,在目標(biāo)表追加fdl_marked_deleted、fdl_update_timestamp標(biāo)記字段,用于記錄數(shù)據(jù)的刪除狀態(tài),以及實際新增、更新的時間。 從而彌補業(yè)務(wù)系統(tǒng)表不一定都有時間戳和邏輯刪除位的問題,那么后續(xù)的處理邏輯可以從原來的全量重刷大量數(shù)據(jù),變?yōu)橛羞x擇性處理發(fā)生過變化的小部分?jǐn)?shù)據(jù),減少處理數(shù)據(jù)量,節(jié)省計算資源,提升處理效率,多用于增量計算、增量加載和拉鏈表計算等場景。 另外,在進行實時同步過程中,來源端結(jié)構(gòu)可能因業(yè)務(wù)調(diào)整等原因發(fā)生變動,如增刪表、增刪字段、修改字段名稱、修改字段類型等,目標(biāo)端可以自動同步這些來源端的調(diào)整,不需要進行人為的調(diào)整適配。 3、自動表字段映射 當(dāng)需要異構(gòu)數(shù)據(jù)庫數(shù)據(jù)同步時,字段自動映射功能,不用手動進行自動映射,提高配置環(huán)節(jié)效率。 同時支持目標(biāo)端的更多自定義修改,例如編輯表名,編輯、刪除、重命名字段名,新增字段主鍵、非空等配置,規(guī)范數(shù)據(jù)輸出標(biāo)準(zhǔn)。 4、管道控制,保障數(shù)據(jù)質(zhì)量當(dāng)遇到臟數(shù)據(jù)等時候,不希望影響正常數(shù)據(jù)的實時同步,那么通過設(shè)置閾值,讓整個同步過程正常運行,臟數(shù)據(jù)到達一定程度,通過短信、郵件等的方式告知,然后進行異常數(shù)據(jù)的處理。 5、任務(wù)監(jiān)控,運維安心完成任務(wù)配置后,即可通過監(jiān)控頁面看到讀取、輸出的總量和速度,以及是否存在臟數(shù)據(jù)和待同步數(shù)據(jù),讓整個同步過程完全透明。 3、實踐場景實時為強依賴這部分?jǐn)?shù)據(jù)而工作的的人提供了立即識別和快速解決問題的能力。 制造業(yè)某一客戶,每天都需要進行生產(chǎn)回顧,根據(jù)當(dāng)前的庫存、訂單、產(chǎn)線以及機器情況等,對當(dāng)天生產(chǎn)進行計劃排期。 工作人員每天早上6點,甚至更早開始工作,去MES系統(tǒng)導(dǎo)出數(shù)據(jù)、進行EXCEL匯總分析,準(zhǔn)備會議材料,進行異常狀況追蹤。然后從8點起,開始進行從課>>部>>處>>廠逐層進行開會,完成當(dāng)天的生產(chǎn)排期會議。 另外,由于數(shù)據(jù)的時效性,有時候存在兩個小時甚至更長時間的數(shù)據(jù)偏差,并不能完全真實、準(zhǔn)確把控當(dāng)前計劃是否合理,并且此類重復(fù)性人工處理的方式,希望將其智能化自動處理的,為企業(yè)帶來更大的價值。 采用了實時數(shù)據(jù)同步和增量計算方案后,當(dāng)需要開展生產(chǎn)排期會議時,各層級相關(guān)人員打開排產(chǎn)系統(tǒng),即可看到由FineDataLink處理提供的最新庫存、訂單、產(chǎn)品情況、機器情況等數(shù)據(jù)。 這樣工作人員通過數(shù)據(jù),結(jié)合實際進行問題排查,在會議前上傳異常報告,擺脫了之前需要提前幾個小時進行數(shù)據(jù)準(zhǔn)備且數(shù)據(jù)準(zhǔn)確度不足的窘迫,方便會議高效進行,快速解決問題。 |
|
來自: sifehefuan > 《待分類》