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定时增量同步,一种可配置的定时数据同步方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab白噪声模块,matlab白噪
- 下一篇: oracle函数中bitand,Orac