主數(shù)據(jù)ETL - 02 系統(tǒng)設計

概覽

總體用例圖


ETL 用例.png

邊寫這篇文章,邊設計這個系統(tǒng),當前尚未實現(xiàn),完成設計后,計劃在下一個具體項目上實施。

設計思路

利用SAP的各種技術,在應用程序層面記錄變更;確定變更信息需要同步的第三方系統(tǒng);按各系統(tǒng)需求生成數(shù)據(jù)包;完成同步。
按照這個思路,設計了三大模塊:

1.變更日志模塊

著眼點是數(shù)據(jù)表,對SAP的表進行簡單分類:

  • 標準表
    • 配置表
      一般伴隨TR,比如公司,工廠,庫位等
    • 主數(shù)據(jù)表
      物料,供應商,客戶,成本中心等
    • 業(yè)務數(shù)據(jù)表
      采購訂單,生產(chǎn)訂單,銷售訂單等
  • 自定義表

不同的表,維護方式差異比較大,對應的記錄變更的方式也會有差異,定義了三種變更日志格式:

  • Change Document
    標準的技術,廣泛存在于標準數(shù)據(jù)表,比如物料,采購訂單,BOM,銷售訂單。

    生產(chǎn)訂單由于變更頻繁,標準不提供Change Document,但是預留了出口,可以自定義Change Document,隨之而來的一個問題就是需要考慮歸檔,Change Document有標準的歸檔對象,技術上問題不大。

  • Transport Request
    配置表通過TR傳輸,所以TR本身就是一種日志。

  • 自定義日志
    按需定制,比如有些表沒有CD,沒有TR,可以在維護的時候生成CD,也可以簡單一點寫入自定義日志。

2.路由模塊

根據(jù)變更日志,判定是否需要同步到特定系統(tǒng),需要同步即確認了路由信息:SAP->第三方系統(tǒng),放入PUSH或者PULL 隊列。

隊列中主要存儲信息:第三方系統(tǒng)標識 + 接口標識 + 變更日志編號 + 時間戳

3.分發(fā)模塊

分發(fā)主要考慮兩個問題:數(shù)據(jù)包生成和同步方式

數(shù)據(jù)包生成

生成時機,由于場景不同,同步方式不同,數(shù)據(jù)包在不同的環(huán)節(jié)生成:

  • 即時
    數(shù)據(jù)變更的同時生成
  • 定時
    可能生成數(shù)據(jù)包的代價特別大,放在后臺任務中定時生成
  • 延遲
    在數(shù)據(jù)同步的時候生成

數(shù)據(jù)包的格式:全量和增量,參見 上篇 01 數(shù)據(jù)同步場景分析

同步方式

Pull和Push模式的說明,也參見上篇。

對于Pull,增量發(fā)送數(shù)據(jù)包必須要有發(fā)送順序控制,實時推送,連續(xù)更改,不加控制可能因為推送執(zhí)行順序不同,導致兩邊系統(tǒng)數(shù)據(jù)不一致。

考慮犧牲一定的實時性要求(對第三方系統(tǒng)來說也無感的),推送是使用單線程的模式,只有一個消費者從Push隊列中提取同步任務。后續(xù)討論使用Event + Lock技術實現(xiàn)這個功能。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,306評論 2 89
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,974評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 第六課作業(yè) 甜蜜家族里的故事 在糖類這個大家族里還真是熱鬧非凡呢,有獨行俠葡萄糖、果糖、半乳糖、核糖、木糖、阿拉伯...
    3c2e97818ff5閱讀 378評論 29 12

友情鏈接更多精彩內(nèi)容