日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java定时增量同步,一种可配置的定时数据同步方法与流程

發布時間:2024/4/11 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java定时增量同步,一种可配置的定时数据同步方法与流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本發明涉及數據交換技術,尤其涉及一種可配置的定時數據同步方法。解決企業內部異構系統之間的數據同步問題。主要利用計算機多線程技術、XML技術、數據庫技術實現。具有簡單配置、快速部署、靈活擴展的特點,并且對于特定系統(比如CRM與ERP系統之間),一次配置后,可重復使用,有利于配置模板的積累。

背景技術:

在企業中,由于開發時間或開發部門的不同,往往有多個異構的、運行在不同的軟硬件平臺上的信息系統同時運行,這些系統的數據源彼此獨立、相互封閉,使得數據難以在系統之間交流、共享和融合,從而形成了"信息孤島"。隨著信息化應用的不斷深入,企業內部、企業與外部信息交互的需求日益強烈,急切需要對已有的信息進行整合,聯通“信息孤島”,共享信息。

數據集成:數據集成通過應用間的數據交換從而達到集成,主要解決數據的分布性和異構性的問題,其前提是被集成應用必須公開數據結構,即必須公開表結構,表間關系,編碼的含義等。

對于數據集通常的解決辦法,一是我們系統中直接訪問對方系統的數據庫的方式。這樣的方式數據實時性好,沒有延遲。缺點是安全性比較差、互相影響的風險也比較大,對方系統可能擔心會打亂數據,影響他們的系統,我們系統也因為對方系統數據庫是否可用而受影響。第二個是把對方系統的數據拿過來,放到我們的系統的數據庫里。

技術實現要素:

對于上述第二種情況,本發明提出了一種可配置的定時數據同步方法,它可以將來自某個系統的數據定時同步到目標系統中。數據同步需要了解5方面信息,數據的來源、來源中的數據、目標、應該放到目標的什么地方還有同步頻率。

1、同步數據信息配置DbCrmJob.config。

在這個文件里需要配置的信息包括數據的來源、目的,需要同步的數據,數據同步的方向和步驟。主要節點如下:

數據庫信息配置節點,配置數據的來源和目的數據庫連接信息,根據實際項目的環境修改配置。

WebService信息配置節點,配置數據的來源和目的為UpdateCrm Interface的連接信息,根據實際項目的環境修改配置,一般只需要修改接口服務器的IP地址。

同步數據配置節點,配置需要同步的數據。每個InfObject相當于數據庫中的一個表,Field相當于表中的字段。如果同步雙方的表結構相同,可以只配置一個,如果雙方的表結構不同都需要配置。

數據同步任務配置節點,配置數據同步的方向,同步的步驟,即將來源于某個數據庫或UpdateCRM中的什么數據同步到目的數據庫或UpdateCRM。每一個Task表示一個同步任務,可包含多個同步步驟Item,Item為具體的需要同步的數據。

2、數據同步任務定時配置文件jobs.xml。

主要對DbCrmJobCfg.xml配置的數據同步任務的定時執行信息進行配置。配置節點如下:

主要配置作業節點Job和時間觸發器節點trigger。Job和DbCrmJobCfg中的任務對應,Job的name需要與DbCrmJob.Config中Task的taskName相同,其他參照注釋說明。

trigger配置作業的執行時間,其中的job-name需要job節點的name相同。Trigger的定時分為兩種Simple和cron,可以滿足不同的需求。

如果需要讓任務只在某個時刻執行一次,或者,在某個時刻開始,然后按照某個時間間隔重復執行,簡單地說,如果你想讓觸發器在2007年8月20日上午11:23:54秒執行,然后每個隔10秒鐘重復執行一次,并且這樣重復5次。那么Simple就可以滿足你的要求。

如果你需要像日歷那樣按日程來觸發任務,而不是像Simpler那樣每隔特定的間隔時間觸發,通常使用cron方式配置定時時間。使用cron,你可以指定諸如“每個周五中午”,或者“每個工作日的9:30”或者“從每個周一、周三、周五的上午9:00到上午10:00之間每隔五分鐘”這樣日程安排來觸發。甚至,象Simple一樣,Cron也有一個StartTime以指定日程從什么時候開始,也有一個(可選的)EndTime以指定何時日程不再繼續。

Cron表達式舉例

例1–一個簡單的每隔5分鐘觸發一次的表達式

"0 0/5***?"

例2–在每分鐘的10秒后每隔5分鐘觸發一次的表達式(例如.10:00:10am,10:05:10等.)。

"10 0/5***?"

例3–在每個周三和周五的10:30,11:30,12:30觸發的表達式。

"0 30 10-13?*WED,FRI"

例4–在每個月的5號,20號的8點和10點之間每隔半個小時觸發一次且不包括10點,只是8:30,9:00和9:30的表達式。

"0 0/30 8-9 5,20*?"注意,對于單獨觸發器來說,有些日程需求可能過于復雜而不能用表達式表述,例如:9:00到10:00之間每隔5分鐘觸發一次,下午1:00到10點每隔20分鐘觸發一次。這個解決方案就是創建兩個觸發器,兩個觸發器都運行相同的任務。

3、日志配置文件JobScheduler.exe.config。

對程序的運行信息、任務執行信息、錯誤信息的日志輸出配置。程序默認配置為錯誤信息輸出到文件(運行目錄下的log目錄)并且將錯誤日志發送郵件給指定的的維護人員。對于程序的運行日志可運行logView.bat查看實時日志。

部署時主要修改如下信息:

[測試項目]修改為實際的項目名稱

***@inspur.com修改維護人員的郵件地址

4、SQL Server生成字段配置SQL

本發明的有益效果是

基于XML配置,配置靈活、使用簡單;

支持全量更新與增量更新;

支持系統之間雙向定時數據同步;

靈活的定時策略,包括固定頻次重復執行和特定時間點執行,支持cron表達式;

預制CRM系統和ERP系統數據處理模板,方便特定系統間的快速部署,提高效率;

采用服務部署方式,運行穩定,操作系統啟動后自動重啟,無須人為參與;

完備的反饋機制,出現錯誤自動發送郵件給維護人員,及時解決,調試信息和運行信息可通過配置決定是否輸出。

附圖說明

圖1是DbCrmJob.xml和Jobs.xml各配置節點關系示意圖。

具體實施方式

下面對本發明的內容進行更加詳細的闡述:

本發明提供的一種可配置的定時數據同步方法與裝置,實現方式是基于數據庫層面來實現系統之間的數據交換,對現有業務系統無影響。支持SqlServer/Oracle與SqlServer/Oracle之間、SqlServer/Oracle與UpdateCRM系統之間雙向定時數據同步。

主要實現代碼如下:

本發明特點

1、在數據庫層面完成數據同步,支持Oracle、SqlServer兩種數據庫,預制數據庫訪問層接口,可通過擴展支持其他數據庫;

2、部署一套程序,通過配置,可以支持任意多個系統間的數據交換;

3、可通過xml配置,Sql和存儲過程三種方式獲取數據;

4、可根據不同系統的要求配置字段的時間格式,如20160819、2016-08-19、2016/08/09;

5、可為每次數據同步的一批數據生成一個批號,以方便導入之后的處理;

6、可為每批數據生成記錄序號;

7、對于主從表,可以先導入主表數據,再導入從表數據,然后通過本次批次號做后續處理;

8、對于目標數據記錄,可以配置數據同步時間信息(何時同步的數據);

9、可自動判斷每條數據是更新或添加;

10、支持全量更新和增量更新;

11、存錯過程支持靈活的時間表達式;

12、支持在同步前調用源數據庫的存儲過程,以便對本次同步的數據做預處理;

13、在同步后可以調用目標數據庫的存儲過程,以便對本次同步的數據做后處理,比如對本批次數據做數據轉換;

14、數據同步定時時間,支持Cron表達式,可按固定頻次,如沒5秒執行,以及特定時間點循環執行,如表達式“0 0 23**?”表示每天晚上11點執行。

15、可以配置日志的輸出,如調試日志、運行日志、錯誤日志等

16、出現錯誤后,將錯誤日志發送郵件給維護人,以便及時解決問題。

總結

以上是生活随笔為你收集整理的java定时增量同步,一种可配置的定时数据同步方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。