項目經驗技術總結三:系統業務基礎資料維護

來源:互聯網
上載者:User

在本系統開發中,遇到了與其他系統資料互動的情況,包括資料下載和資料回寫。(後者本文不做介紹)。資料下載即本系統需要從其他系統的資料庫下載基本業務資料,並且當資料來源更新後,本系統的業務基礎資料也需要更新(不要求即時),資料來源有幾個表的基礎業務資料將近100萬條.

為了便於描述,下面只討論一個表,資料來源表記為A表,下載到本系統的表記為B表

思路:
從A表下載資料到B表的處理可分為2步:
1.第一次下載
第一次下載應是把A表相應的資料全部插入到B表(系統初始化時完成)
此處理比較好辦,一條sql就能搞定。
2.第二次(及以後)下載
分2種情況考慮:A表新增資料和原有資料更新。
為了判斷哪些資料需要處理,可根據A表中記錄的最後更新時間(作為資料來源的系統一般有記錄最後更新時間欄位,以下記為LastUpdateTime)做判斷:
  即如果A表中各記錄的LastUpdateTime的值大於B表資料的LastUpdateTime值視為需要處理的資料:
a.當此類記錄在本系統不存在則為新增業務資料
b.當此類記錄在本系統存在則為本系統需要更新的資料

當然,如果A表中那些LastUpdateTime的值不大於B表資料的LastUpdateTime值則不需要處理。
   
因此,在此情況下下載資料可分2步進行:
第一步把屬於新增的記錄下載到本系統
第二步對需要更新的資料進行更新
需要注意的是,無論是資料插入還是資料更新,在本系統中都需要記錄或更新其LastUpdateDate,否則將無法在以後下載時和A表中的記錄的LastUpdateTime值進行比較
 更新B表中的LastUpdateTime可將所有記錄的LastUpdateTime全部更新,但這樣一來,資料量較大時更新起來也會耗費一定時間。為此,可單獨建一個表C並利用一條記錄儲存B表的最後更新時間,這樣更新時只要更新表C,也就只需要更新一條記錄,可獲得效能提升。

根據以上分析,我們採取了如下方案:
1.在本系統中建立和資料來源內各基礎資料表結構類似(只取需要的資料)的表
2.建立一個表C,專門用來記錄本系統中各業務資料表最後更新記錄日期,表結構如下所示:
Create Table C
(
tableName,varchar(50),
LastUpdateDate Date
)
3.完成資料插入或更新資料時,根據處理的資料每次更新C表中相應記錄的LastUpdateTime

需要注意的是:
1.更新每個表的LastUpdateTime時,其時間不能採用本系統的時間,而應該取資料來源所在系統的時間。
2.當基礎資料表小(業務資料量少)的時候,可在每次執行下載時刪除目的表中的資料並重新下載,則不需要利用本文中採用的方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.