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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

背景技術:

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

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

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

技術實現(xiàn)要素:

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

1、同步數(shù)據(jù)信息配置DbCrmJob.config。

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

數(shù)據(jù)庫信息配置節(jié)點,配置數(shù)據(jù)的來源和目的數(shù)據(jù)庫連接信息,根據(jù)實際項目的環(huán)境修改配置。

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

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

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

2、數(shù)據(jù)同步任務定時配置文件jobs.xml。

主要對DbCrmJobCfg.xml配置的數(shù)據(jù)同步任務的定時執(zhí)行信息進行配置。配置節(jié)點如下:

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

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

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

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

Cron表達式舉例

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

"0 0/5***?"

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

"10 0/5***?"

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

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

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

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

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

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

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

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

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

4、SQL Server生成字段配置SQL

本發(fā)明的有益效果是

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

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

支持系統(tǒng)之間雙向定時數(shù)據(jù)同步;

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

預制CRM系統(tǒng)和ERP系統(tǒng)數(shù)據(jù)處理模板,方便特定系統(tǒng)間的快速部署,提高效率;

采用服務部署方式,運行穩(wěn)定,操作系統(tǒng)啟動后自動重啟,無須人為參與;

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

附圖說明

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

具體實施方式

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

本發(fā)明提供的一種可配置的定時數(shù)據(jù)同步方法與裝置,實現(xiàn)方式是基于數(shù)據(jù)庫層面來實現(xiàn)系統(tǒng)之間的數(shù)據(jù)交換,對現(xiàn)有業(yè)務系統(tǒng)無影響。支持SqlServer/Oracle與SqlServer/Oracle之間、SqlServer/Oracle與UpdateCRM系統(tǒng)之間雙向定時數(shù)據(jù)同步。

主要實現(xiàn)代碼如下:

本發(fā)明特點

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

2、部署一套程序,通過配置,可以支持任意多個系統(tǒng)間的數(shù)據(jù)交換;

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

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

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

6、可為每批數(shù)據(jù)生成記錄序號;

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

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

9、可自動判斷每條數(shù)據(jù)是更新或添加;

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

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

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

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

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

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

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

總結

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

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