專利名稱:一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)同步技術(shù),尤其涉及一種基于掃描服務(wù)器端數(shù)據(jù)庫表中的 數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)和方法。
背景技術(shù):
目前,隨著網(wǎng)絡(luò)的普及,在人們生產(chǎn)生活中,基于網(wǎng)絡(luò)的數(shù)據(jù)共享已經(jīng)成為 人們獲得最新數(shù)據(jù)資源不可或缺的方式。為了更好地實(shí)現(xiàn)數(shù)據(jù)共享需要實(shí)現(xiàn)共 享數(shù)據(jù)的同步。共享數(shù)據(jù)的同步對于企業(yè)來說更加重要,比如,企業(yè)的服務(wù)器 端用于管理分屬于企業(yè)不同部門的不同客戶端,并且在服務(wù)器端存儲有管理數(shù) 據(jù)。那么為了方便服務(wù)器端對客戶端進(jìn)行管理,同時提高客戶端的數(shù)據(jù)處理效 率,需要保證客戶端與服務(wù)器端之間的數(shù)據(jù)同步。這里,所謂數(shù)據(jù)同步指基于 寬帶網(wǎng)絡(luò),使服務(wù)器端的數(shù)據(jù)能與客戶端的數(shù)據(jù)保持一致。并且,如果對服務(wù) 器端的數(shù)據(jù)進(jìn)行了修改,則將修改后的數(shù)據(jù)及時同步更新到客戶端。然而,由于服務(wù)器端存儲數(shù)據(jù)的重要性,因此,不能隨意修改服務(wù)器的配置, 并且也不能開放給客戶端過多的操作權(quán)限。那么,在現(xiàn)有的數(shù)據(jù)同步過程中, 當(dāng)客戶端對服務(wù)器端的操作權(quán)限不足時,服務(wù)器端無法將服務(wù)器端數(shù)據(jù)庫表中 的數(shù)據(jù)及時同步到客戶端。而客戶端是將同步數(shù)據(jù)存儲到客戶端數(shù)據(jù)庫表中, 并基于客戶端數(shù)據(jù)庫表進(jìn)行數(shù)據(jù)處理的。從而,現(xiàn)有的這種低效率、配置不方 便的數(shù)據(jù)同步技術(shù)勢必會降低客戶端的數(shù)據(jù)處理效率,并且使客戶端數(shù)據(jù)庫表 被鎖時間較長。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng),能高效 率地實(shí)現(xiàn)數(shù)據(jù)同步,并將服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)及時同步到客戶端。從而 提高了客戶端的數(shù)據(jù)處理效率。本發(fā)明的另一目的在于提供一種實(shí)現(xiàn)數(shù)據(jù)同步的方法,能高效率地實(shí)現(xiàn)數(shù) 據(jù)同步,并將服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)及時同步到客戶端。從而提高了客戶 端的數(shù)據(jù)處理效率。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括客戶端數(shù)據(jù)庫、客戶端數(shù)據(jù)庫連接 單元、消息服務(wù)器、服務(wù)器端數(shù)據(jù)庫、服務(wù)器端數(shù)據(jù)庫連接單元、消息總線單 元,該系統(tǒng)還包括時間調(diào)度單元和掃描單元;其中,時間調(diào)度單元,用于定時或周期性地調(diào)用所述掃描單元,使掃描單元執(zhí)行 掃描程序;掃描單元,用于根據(jù)所述時間調(diào)度單元的調(diào)用執(zhí)行掃描程序,并通過所述 服務(wù)器端數(shù)據(jù)庫連接單元對所述服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取后, 經(jīng)由所述消息服務(wù)器中的所述消息總線單元以及通過所述客戶端數(shù)據(jù)庫連接單 元,將所述掃描讀取的數(shù)據(jù)同步到客戶端的所述客戶端數(shù)據(jù)庫。其中,所述時間調(diào)度單元和所述掃描單元在所述消息月良務(wù)器中,該系統(tǒng)還 包括消息隊(duì)列單元,用于在客戶端啟動所述消息服務(wù)器后,從所述客戶端接收 消息事件;通過所述消息事件來激活和驅(qū)動所述時間調(diào)度單元。其中,所述時間調(diào)度單元和所述掃描單元在客戶端中,所述客戶端用于在 客戶端啟動所述消息服務(wù)器時,直接激活和驅(qū)動所述時間調(diào)度單元。其中,所述掃描單元還包括掃描策略模塊,用于存儲全量數(shù)據(jù)掃描策略和增量數(shù)據(jù)掃描策略;所述掃描單元通過讀取所述掃描策略模塊中的所述全量數(shù)據(jù)掃描策略,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的全量數(shù)據(jù)掃描;或者,所述掃描單元通過 讀取所述掃描策略模塊中的增量數(shù)據(jù)掃描策略,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表 中數(shù)據(jù)的增量數(shù)據(jù)掃描。其中,所述消息服務(wù)器為獨(dú)立部署的部件,或者與所述客戶端和服務(wù)器端 部署在一起的部件。一種實(shí)現(xiàn)數(shù)據(jù)同步的方法,該方法包括以下步驟A、 客戶端啟動消息服務(wù)器后,激活并驅(qū)動時間調(diào)度單元;所述時間調(diào)度 單元調(diào)用掃描單元來執(zhí)行掃描程序;B、 所述客戶端向服務(wù)器端請求讀取服務(wù)器端數(shù)據(jù)庫表讀權(quán)限的認(rèn)證,所 述服務(wù)器端將讀權(quán)限的認(rèn)證結(jié)果返回客戶端;當(dāng)所述認(rèn)證結(jié)果為認(rèn)證成功時, 掃描單元開始對所述服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀??;之后,所述服 務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫。其中,步驟A中,所述時間調(diào)度單元進(jìn)一步定時或周期性地調(diào)用掃描單元 來執(zhí)行掃描程序。其中,步驟B中,所述服務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫具體為Bl、所述服務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)返回所述掃描單元;B2、掃描單元將所述當(dāng)前掃描讀取的數(shù)據(jù)轉(zhuǎn)換成消息事件的形式后,分批推入消息總線單元;消息總線單元通過客戶端數(shù)據(jù)庫連接單元,將當(dāng)前掃描讀取的數(shù)據(jù)同步到所述客戶端的客戶端數(shù)據(jù)庫。其中,步驟A中,所述掃描單元來執(zhí)行掃描程序進(jìn)一步為Al、根據(jù)當(dāng)前業(yè)務(wù)需求采用不同的掃描策略來執(zhí)行掃描程序,并執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的掃描讀取。其中,當(dāng)采用的掃描策略為全量數(shù)據(jù)掃描策略時候,步驟A1具體為 所述掃描單元讀取掃描策略模塊中的全量數(shù)據(jù)掃描策略后,通過服務(wù)器端數(shù)據(jù)庫連接單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的全量數(shù)據(jù)掃描。其中,當(dāng)采用的掃描策略為增量數(shù)據(jù)掃描策略時,步驟A1具體為 掃描單元讀取掃描策略模塊中的增量數(shù)據(jù)掃描策略后,通過服務(wù)器端數(shù)據(jù)庫連接單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的增量數(shù)據(jù)掃描?;诜?wù)器端存儲數(shù)據(jù)重要性的考慮,本發(fā)明并未開力丈給客戶端修改服務(wù) 器端數(shù)據(jù)庫表配置的改權(quán)限,而將讀取服務(wù)器端數(shù)據(jù)庫表的讀權(quán)限開放給客戶端。那么通過時間調(diào)度單元定時或周期性地調(diào)用掃描單元,使掃描單元執(zhí)行掃 描程序?qū)Ψ?wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取,就可以獲知服務(wù)器端的數(shù) 據(jù),從而將服務(wù)器端的數(shù)據(jù)及時同步到客戶端。從而提高了客戶端的數(shù)據(jù)處理 效率。進(jìn)而,掃描單元還可以根據(jù)客戶端配置信息中的數(shù)據(jù)量大小及業(yè)務(wù)要求 選擇釆用不同的掃描策略執(zhí)行掃描程序,對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃 描讀取后,將服務(wù)器端的數(shù)據(jù)及時同步到客戶端。這里,掃描策略包括全量數(shù) 據(jù)掃描和增量數(shù)據(jù)掃描。其中,全量數(shù)據(jù)掃描指將服務(wù)器端的數(shù)據(jù)全部同步到 客戶端。增量數(shù)據(jù)掃描指將服務(wù)器端修改后的數(shù)據(jù)同步到客戶端。綜上所述,采用本發(fā)明,在不影響服務(wù)器端數(shù)據(jù)庫表操作的情況下,能高 效率地實(shí)現(xiàn)數(shù)據(jù)同步,并將服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)及時同步到客戶端。從 而提高了客戶端的數(shù)據(jù)處理效率。
圖1為本發(fā)明系統(tǒng)一實(shí)施例的組成結(jié)構(gòu)示意圖; 圖2為本發(fā)明系統(tǒng)另一實(shí)施例的組成結(jié)構(gòu)示意圖; 圖3為本發(fā)明方法原理的實(shí)現(xiàn)流程示意圖。
具體實(shí)施方式
本發(fā)明的核心思想是通過時間調(diào)度單元定時或周期性地調(diào)用掃描單元, 使掃描單元執(zhí)行掃描程序?qū)Ψ?wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取,就可以 獲知服務(wù)器端的數(shù)據(jù),從而將服務(wù)器端的數(shù)據(jù)及時同步到客戶端。從而提高了 客戶端的數(shù)據(jù)處理效率。下面結(jié)合附圖對技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括客戶端數(shù)據(jù)庫、客戶端數(shù)據(jù)庫連 接單元、消息服務(wù)器、服務(wù)器端數(shù)據(jù)庫、服務(wù)器端數(shù)據(jù)庫連接單元、消息總線 單元、時間調(diào)度單元和掃描單元。其中,客戶端數(shù)據(jù)庫、客戶端數(shù)據(jù)庫連接單元、消息服務(wù)器、服務(wù)器端數(shù)據(jù)庫、服務(wù)器端數(shù)據(jù)庫連接單元、消息總線單元是現(xiàn)有的,以下對他們的功能 分別進(jìn)行闡述??蛻舳藬?shù)據(jù)庫和服務(wù)器端數(shù)據(jù)庫皆為數(shù)據(jù)庫,不同的是一個針對客戶端而 言,另一個針對服務(wù)器端而言。數(shù)據(jù)庫位于用戶與操作系統(tǒng)之間,用于管理數(shù) 據(jù)庫中保存的表,數(shù)據(jù)庫中保存的表可以為網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷榷?種形式。這里,數(shù)據(jù)庫中保持的表也可以簡稱為數(shù)據(jù)庫表??蛻舳藬?shù)據(jù)庫連接 單元和服務(wù)器端數(shù)據(jù)庫連接單元皆為數(shù)據(jù)庫連接單元,不同的是一個針對客戶 端而言,另一個針對服務(wù)器端而言。數(shù)據(jù)庫連接單元主要用于連接各種本地及 遠(yuǎn)程數(shù)據(jù)庫,屏蔽不同數(shù)據(jù)庫之間的訪問差異和數(shù)據(jù)獲取語句的差異。消息總 線單元位于消息服務(wù)器中,而消息服務(wù)器用于管理消息總線上傳輸?shù)臄?shù)據(jù)。那 么消息總線單元在消息服務(wù)器的管理下,用于從服務(wù)器端lt據(jù)庫接收數(shù)據(jù),并 發(fā)送到客戶端數(shù)據(jù)庫。這里需要指出的是,消息服務(wù)器即可獨(dú)立部署,也可與 客戶端和服務(wù)器端部署在一起。時間調(diào)度單元,用于定時或周期性地調(diào)用掃描單元,使掃描單元執(zhí)行掃描 程序。掃描單元,用于根據(jù)時間調(diào)度單元的調(diào)用執(zhí)行掃描程序。并且配置數(shù)據(jù) 的輸入端口、數(shù)據(jù)的輸出端口、掃描的表名稱和需掃描的表字段的名稱。其中,掃描單元還包括掃描策略模塊,用于存儲全量數(shù)據(jù)掃描策略和增量 數(shù)據(jù)掃描策略。那么掃描單元通過讀取掃描策略模塊中的全量數(shù)據(jù)掃描策略,執(zhí)行對服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的全量數(shù)據(jù)掃描;或者,掃描單元通過讀取掃 描策略模塊中的增量數(shù)據(jù)掃描策略,執(zhí)行對服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的增量數(shù) 據(jù)掃描。具體來說,時間調(diào)度單元和掃描單元的部署包括兩種情況。第一種情況是,時間調(diào)度單元和掃描單元可以部署在消息服務(wù)器中,那么,掃描單元通過服務(wù) 器端數(shù)據(jù)庫連接單元對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取后,經(jīng)由消息總線單元以及通過客戶端數(shù)據(jù)庫連接單元,將掃描讀取的數(shù)據(jù)及時同步到客戶 端的客戶端數(shù)據(jù)庫。另外,在這種情況下,實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)還包括消息隊(duì) 列單元。消息隊(duì)列單元位于消息服務(wù)器中,當(dāng)客戶端啟動消息服務(wù)器時,消息服務(wù)器將從客戶端接收的消息事件轉(zhuǎn)發(fā)給消息隊(duì)列單元,那么,消息隊(duì)列單元 用于通過消息事件來激活和驅(qū)動時間調(diào)度單元。從而使時間調(diào)度單元能定時或 周期性地調(diào)用掃描單元,使掃描單元執(zhí)行掃描程序。這里,舉例來說,當(dāng)將時間調(diào)度單元和掃描單元部署在消息服務(wù)器中時,數(shù)據(jù)的輸入端口為服務(wù)器端數(shù)據(jù)庫連接單元與掃描單元的接口;數(shù)據(jù)的輸出端 口為掃描單元與消息總線的接口 ,掃描單元通過服務(wù)器端數(shù)據(jù)庫連接單元從服 務(wù)器端數(shù)據(jù)庫表中獲取掃描數(shù)據(jù),并將獲取的掃描數(shù)據(jù)以消息事件的方式分批 推入消息總線。第二種情況是,時間調(diào)度單元和掃描單元還可以部署在在客戶端中,那么 掃描單元通過服務(wù)器端數(shù)據(jù)庫連接單元對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描 讀取后,服務(wù)器端數(shù)據(jù)庫連接單元將掃描讀取的數(shù)據(jù)返回消息總線單元,經(jīng)由 消息總線單元以及通過客戶端數(shù)據(jù)庫連接單元,將掃描讀取的數(shù)據(jù)及時同步到 客戶端的客戶端數(shù)據(jù)庫。系統(tǒng)實(shí)施例一為將時間調(diào)度單元和掃描單元部署在消息服務(wù)器中的情況。 如圖l所示,本實(shí)施例中,實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)包括客戶端l中的客戶 端數(shù)據(jù)庫11和客戶端數(shù)據(jù)庫連接單元12,消息服務(wù)器2中的消息隊(duì)列單元21、 時間調(diào)度單元22、掃描單元23和消息總線單元24,服務(wù)器端3中的服務(wù)器端 數(shù)據(jù)庫31和服務(wù)器端數(shù)據(jù)庫連接單元32。這里,當(dāng)客戶端1啟動消息服務(wù)器2時,消息服務(wù)器2將從客戶端1接收 的消息事件轉(zhuǎn)發(fā)給消息隊(duì)列單元21,消息隊(duì)列單元21通過消息事件來激活時 間調(diào)度單元22。并且,消息隊(duì)列單元21通過消息事件驅(qū)動時間調(diào)度單元22定 時或周期性地調(diào)用掃描單元23,使掃描單元23執(zhí)行掃描程序。掃描單元23通 過服務(wù)器端數(shù)據(jù)庫連接單元32對服務(wù)器端數(shù)據(jù)庫31表中的數(shù)據(jù)進(jìn)行掃描讀取 后,將掃描讀取的數(shù)據(jù)經(jīng)由消息總線單元24以及通過客戶端數(shù)據(jù)庫連接單元 12,將掃描讀取的數(shù)據(jù)及時同步到客戶端1的客戶端數(shù)據(jù)庫11。系統(tǒng)實(shí)施例二為將時間調(diào)度單元和掃描單元部署在客戶端中的情況。 如圖2所示,本實(shí)施例中,實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)包括客戶端l中的客戶端數(shù)據(jù)庫ll、客戶端數(shù)據(jù)庫連接單元12、時間調(diào)度單元22和掃描單元23,消 息服務(wù)器2中的消息總線單元24,服務(wù)器端3中的服務(wù)器端數(shù)據(jù)庫31和服務(wù) 器端數(shù)據(jù)庫連接單元32。這里,當(dāng)客戶端1啟動消息服務(wù)器2時,由客戶端1直接驅(qū)動時間調(diào)度單 元22定時或周期性地調(diào)用掃描單元23,使掃描單元23執(zhí)行掃描程序。掃描單描讀取后,服務(wù)器端數(shù)據(jù)庫連接單元32將掃描讀取的數(shù)據(jù)返回消息總線單元 24,經(jīng)由消息總線單元24以及通過客戶端數(shù)據(jù)庫連接單元12,將掃描讀取的 數(shù)據(jù)及時同步到客戶端1的客戶端數(shù)據(jù)庫11。對比系統(tǒng)實(shí)施例一與系統(tǒng)實(shí)施例二可知,系統(tǒng)實(shí)施例一中,當(dāng)客戶端1啟 動消息服務(wù)器2時,消息服務(wù)器2將從客戶端1接收的消息事件轉(zhuǎn)發(fā)給消息隊(duì) 列單元21,消息隊(duì)列單元21通過消息事件來激活時間調(diào)度單元22。并且,消 息隊(duì)列單元21通過消息事件驅(qū)動時間調(diào)度單元22定時或周期性地調(diào)用掃描單 元23,使掃描單元23執(zhí)行掃描程序?qū)Ψ?wù)器端數(shù)據(jù)庫31表中的數(shù)據(jù)進(jìn)行掃描 讀取后,將服務(wù)器端3的數(shù)據(jù)及時同步到客戶端1。系統(tǒng)實(shí)施例二中,由于將時間調(diào)度單元22和掃描單元23直接部署在客戶 端1,因此當(dāng)客戶端1啟動消息服務(wù)器2時,可以由客戶端1直接驅(qū)動時間調(diào) 度單元22定時或周期性地調(diào)用掃描單元23 ,使掃描單元23執(zhí)行掃描程序?qū)Ψ?務(wù)器端數(shù)據(jù)庫31表中的數(shù)據(jù)進(jìn)行掃描讀取后,將服務(wù)器端3的數(shù)據(jù)及時同步到 客戶端1。這里的消息服務(wù)器2只負(fù)責(zé)數(shù)據(jù)的接收和發(fā)送。那么,客戶端l可 靈活地實(shí)現(xiàn)對時間調(diào)度單元22進(jìn)行控制,而不影響消息服務(wù)器2對數(shù)據(jù)的接收 和發(fā)送。如圖3所示, 一種實(shí)現(xiàn)數(shù)據(jù)同步的方法,該方法包括以下步驟步驟101、客戶端啟動消息服務(wù)器后,激活并驅(qū)動時間調(diào)度單元;時間調(diào)度單元調(diào)用掃描單元來執(zhí)行掃描程序。步驟102、客戶端向服務(wù)器端請求讀取服務(wù)器端數(shù)據(jù)庫表讀權(quán)限的認(rèn)證,服務(wù)器端將讀權(quán)限的認(rèn)證結(jié)果返回客戶端;當(dāng)認(rèn)證結(jié)果為認(rèn)證成功時,掃描單元開始對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取。步驟103、服務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)同步到客戶端的客戶端 數(shù)據(jù)庫。方法實(shí)施例一為以圖1所示的實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng)為例,本實(shí)施例基于 該系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)同步的方法包括以下步驟步驟201、客戶端啟動消息服務(wù)器后,消息服務(wù)器初始化,并通過內(nèi)嵌初 始化程序?qū)目蛻舳私邮盏淖址D(zhuǎn)換成消息事件,向消息隊(duì)列單元發(fā)送該消 息事件。步驟202、消息隊(duì)列單元通過該消息事件激活并驅(qū)動時間調(diào)度單元定時或 周期性地調(diào)用掃描單元,使掃描單元執(zhí)行掃描程序。這里,掃描單元執(zhí)行掃描程序時,掃描單元可以根據(jù)不同掃描策略執(zhí)行對 服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的掃描讀取。具體包括兩種情況。第一種情況是,當(dāng)掃描策略為全量數(shù)據(jù)掃描策略時,掃描單元可以通過配 置文件讀取掃描策略模塊中的全量數(shù)據(jù)掃描策略后,通過服務(wù)器端數(shù)據(jù)庫連接 單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的全量數(shù)據(jù)掃描。 并且配置數(shù)據(jù)的輸入端口、數(shù)據(jù)的輸出端口、掃描的表名稱、需掃描的表字段 的名稱。通過數(shù)據(jù)庫連接模塊連接到服務(wù)器端數(shù)據(jù)庫掃描數(shù)據(jù)。第二種情況是,當(dāng)掃描策略為增量數(shù)據(jù)掃描策略時,掃描單元可以通過配 置文件讀取掃描策略才莫塊中的增量數(shù)據(jù)掃描策略后,通過服務(wù)器端數(shù)據(jù)庫連接 單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對服務(wù)器端lt據(jù)庫表中數(shù)據(jù)的增量數(shù)據(jù)掃描。 并且配置數(shù)據(jù)的輸入端口、數(shù)據(jù)的輸出端口、掃描的表名稱、需掃描的表字段 的名稱。通過數(shù)據(jù)庫連接模塊連接到服務(wù)器端數(shù)據(jù)庫掃描數(shù)據(jù)。步驟203、客戶端向服務(wù)器端發(fā)送請求讀權(quán)限認(rèn)證的請求消息,并向服務(wù) 器端請求讀取服務(wù)器端數(shù)據(jù)庫表讀權(quán)限的認(rèn)證,服務(wù)器端將讀權(quán)限的認(rèn)證結(jié)果 返回客戶端;如果讀權(quán)限的認(rèn)證結(jié)果為認(rèn)證成功,則執(zhí)行步驟204;否則,讀 權(quán)限的認(rèn)證結(jié)果為認(rèn)證不成功,客戶端重新配置向服務(wù)器端請求讀權(quán)限認(rèn)證的 請求消息后,轉(zhuǎn)入執(zhí)行步驟201 。這里,針對讀權(quán)限的認(rèn)證而言,認(rèn)證方式包括兩種情況。以下分別闡述。 第一種情況是通過賬號進(jìn)行認(rèn)證。具體來說,客戶端和服務(wù)器端事先約定 好賬號,如果客戶端向服務(wù)器端發(fā)送的請求讀權(quán)限認(rèn)證的請求消息中包括了該 賬號,則服務(wù)器端解析出該賬號就可以判定該客戶端有讀權(quán)限。第二種情況是 通過IP地址進(jìn)行認(rèn)證。具體來說,服務(wù)器端事先知道IP地址對應(yīng)的客戶端是 否有讀權(quán)限,那么,當(dāng)服務(wù)器端收到從與該IP地址對應(yīng)的客戶端發(fā)來的該請求 消息時,根據(jù)該IP地址就可以判定該客戶端是否有讀權(quán)限。步驟204、掃描單元通過服務(wù)器端數(shù)據(jù)庫連接單元連接到服務(wù)器端數(shù)據(jù)庫, 開始對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取。服務(wù)器端數(shù)據(jù)庫將掃描讀取 的數(shù)據(jù)返回掃描單元。步驟205、掃描單元將當(dāng)前掃描讀取的數(shù)據(jù)轉(zhuǎn)換成消息事件的形式,之后 分批推入消息總線單元。消息總線單元通過客戶端數(shù)據(jù)庫連接單元,將當(dāng)前掃 描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫。以下對步驟202中涉及到的第一種情況進(jìn)行具體闡述。當(dāng)數(shù)據(jù)同步初始化或者同步的數(shù)據(jù)量較少時,可以釆用全量掃描策略。那 么第 一種情況的具體實(shí)現(xiàn)流程包括以下步驟步驟20211、采用全量掃描策略,開始執(zhí)行對服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的 全量數(shù)據(jù)掃描讀取。步驟20212、判斷是否需要設(shè)置掃描次數(shù),如果需要,則執(zhí)行步驟20213; 否則,執(zhí)行步驟20216。這里需要指出的是,根據(jù)業(yè)務(wù)需求在掃描過程中可以設(shè)置對服務(wù)器端數(shù)據(jù) 庫表以次數(shù)全量掃描的方式或以循環(huán)全量掃描的方式。步驟20213、以次數(shù)全量掃描的方式對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃 描讀取。將當(dāng)前掃描讀取的數(shù)據(jù)推入消息總線單元。步驟20214、判斷客戶端數(shù)據(jù)庫表中是否存在該掃描讀取的數(shù)據(jù),如果存 在,則更新客戶端數(shù)據(jù)庫表中該數(shù)據(jù),之后執(zhí)行步驟20215;否則,將該掃描 讀取的數(shù)據(jù)寫入到客戶端數(shù)據(jù)庫表中,之后執(zhí)行步驟20215。步驟20215、判斷掃描次數(shù)是否為零,如果是,則結(jié)束當(dāng)前全量數(shù)據(jù)掃描 讀取的流程;否則,轉(zhuǎn)入^U亍20213。步驟20216、以循環(huán)全量掃描的方式對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃 描讀取。將當(dāng)前掃描讀取的數(shù)據(jù)推入消息總線單元。步驟20217、判斷客戶端數(shù)據(jù)庫表中是否存在該掃描讀取的數(shù)據(jù),如果存 在,則更新客戶端數(shù)據(jù)庫表中該數(shù)據(jù),之后結(jié)束當(dāng)前全量數(shù)據(jù)掃描讀取的流程; 否則,將該掃描讀取的數(shù)據(jù)寫入到客戶端數(shù)據(jù)庫表中,之后結(jié)束當(dāng)前全量數(shù)據(jù) 掃描讀取的流程。以下對步驟202中涉及到的第二種情況進(jìn)行具體闡述。當(dāng)同步的數(shù)據(jù)量較多時,可以采用增量數(shù)據(jù)掃描策略。那么第二種情況的 具體實(shí)現(xiàn)流程包括以下步驟步驟20221、采用增量數(shù)據(jù)掃描策略,開始執(zhí)行對服務(wù)器端數(shù)據(jù)庫表中數(shù) 據(jù)的增量數(shù)據(jù)掃描讀取。步驟20222、判斷服務(wù)器端數(shù)據(jù)庫表中是否存在唯一標(biāo)識列值比如時間戳, 如果存在,則執(zhí)行步驟20223;否則,執(zhí)行步驟20227。這里,標(biāo)識列值用于標(biāo)識表中的每行數(shù)據(jù)。步驟20223、從服務(wù)器端的配置表中獲取上次掃描讀取處理的最大唯一標(biāo) i口、歹lH直,i己為max Value 。步驟20224、周期性地從服務(wù)器端數(shù)據(jù)庫表中獲取唯一標(biāo)識列值大于 max Value的數(shù)據(jù)。步驟20225、判斷從服務(wù)器端數(shù)據(jù)庫表中獲取數(shù)據(jù)的對應(yīng)記錄數(shù)是否為零, 如果為零,則結(jié)束當(dāng)前增量數(shù)據(jù)掃描讀取的流程;否則,執(zhí)行步驟20226。步驟20226、將當(dāng)前掃描讀取的數(shù)據(jù)推入消息總線單元。判斷客戶端數(shù)據(jù) 庫表中是否存在該掃描讀取的數(shù)據(jù),如果存在,則更新客戶端數(shù)據(jù)庫表中該數(shù) 據(jù),更新唯一標(biāo)識列值和配置表中的maxValue,之后結(jié)束當(dāng)前增量數(shù)據(jù)掃描讀 取的流程;否則,將該掃描讀取的數(shù)據(jù)寫入到客戶端數(shù)據(jù)庫表中,更新唯一標(biāo) 識列值和配置表中的maxValue,之后結(jié)束當(dāng)前增量數(shù)據(jù)掃描讀取的流程。步驟20227、通過哈希(Hash)算法,將服務(wù)器端數(shù)據(jù)庫表中每行數(shù)據(jù)算 出 一個唯一 Hash值。將該算出的唯一 Hash值存入哈希表HashMap中并置入緩存。步驟20228、周期性地從服務(wù)器端數(shù)據(jù)庫表中獲取數(shù)據(jù)后,判斷該數(shù)據(jù)對 應(yīng)的Hash值是否存在于HashMap中,如果存在,則結(jié)束當(dāng)前增量數(shù)據(jù)掃描讀 取的流程;否則,扭j亍步驟20229。步驟20229、將當(dāng)前掃描讀取的數(shù)據(jù)推入消息總線單元,并將該數(shù)據(jù)對應(yīng) 的Hash值寫入HashMap。判斷客戶端數(shù)據(jù)庫表中是否存在該掃描讀取的數(shù)據(jù), 如果存在,則更新客戶端數(shù)據(jù)庫表中該數(shù)據(jù),之后結(jié)束當(dāng)前增量數(shù)據(jù)掃描讀取 的流程;否則,將該掃描讀取的數(shù)據(jù)寫入到客戶端數(shù)據(jù)庫表中,之后結(jié)束當(dāng)前 增量數(shù)據(jù)掃描讀取的流程。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括客戶端數(shù)據(jù)庫、客戶端數(shù)據(jù)庫連接單元、消息服務(wù)器、服務(wù)器端數(shù)據(jù)庫、服務(wù)器端數(shù)據(jù)庫連接單元、消息總線單元,其特征在于,該系統(tǒng)還包括時間調(diào)度單元和掃描單元;其中,時間調(diào)度單元,用于定時或周期性地調(diào)用所述掃描單元,使掃描單元執(zhí)行掃描程序;掃描單元,用于根據(jù)所述時間調(diào)度單元的調(diào)用執(zhí)行掃描程序,并通過所述服務(wù)器端數(shù)據(jù)庫連接單元對所述服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取后,經(jīng)由所述消息服務(wù)器中的所述消息總線單元以及通過所述客戶端數(shù)據(jù)庫連接單元,將所述掃描讀取的數(shù)據(jù)同步到客戶端的所述客戶端數(shù)據(jù)庫。
2、 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述時間調(diào)度單元和所述掃 描單元在所述消息服務(wù)器中,該系統(tǒng)還包括消息隊(duì)列單元,用于在客戶端啟動 所述消息服務(wù)器后,^v所述客戶端接收消息事件;通過所述消息事件來激活和 驅(qū)動所述時間調(diào)度單元。
3、 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述時間調(diào)度單元和所述掃 描單元在客戶端中,所述客戶端用于在客戶端啟動所述消息服務(wù)器時,直接激 活和驅(qū)動所述時間調(diào)度單元。
4、 根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的系統(tǒng),其特征在于,所述掃描單元 還包括掃描策略模塊,用于存儲全量數(shù)據(jù)掃描策略和增量ft據(jù)掃描策略;所述掃描單元通過讀取所述掃描策略模塊中的所述全量數(shù)據(jù)掃描策略,執(zhí) 行對所述服務(wù)器端it據(jù)庫表中數(shù)據(jù)的全量數(shù)據(jù)掃描;或者,所述掃描單元通過 讀取所述掃描策略模塊中的增量數(shù)據(jù)掃描策略,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表 中數(shù)據(jù)的增量數(shù)據(jù)掃描。
5、 根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述消息服務(wù)器為獨(dú)立部署 的部件,或者與所述客戶端和服務(wù)器端部署在一起的部件。
6、 一種實(shí)現(xiàn)數(shù)據(jù)同步的方法,其特征在于,該方法包括以下步驟A、 客戶端啟動消息服務(wù)器后,激活并驅(qū)動時間調(diào)度單元;所述時間調(diào)度 單元調(diào)用掃描單元來執(zhí)行掃描程序;B、 所述客戶端向服務(wù)器端請求讀取服務(wù)器端數(shù)據(jù)庫表讀權(quán)限的認(rèn)證,所 述服務(wù)器端將讀權(quán)限的認(rèn)證結(jié)果返回客戶端;當(dāng)所述認(rèn)證結(jié)果為認(rèn)證成功時, 掃描單元開始對所述服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀?。恢?,所述服 務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫。
7、 根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟A中,所述時間調(diào)度 單元進(jìn)一步定時或周期性地調(diào)用掃描單元來執(zhí)行掃描程序。
8、 根據(jù)權(quán)利要求6或7所述的方法,其特征在于,步驟B中,所述服務(wù) 器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫具體為Bl、所述服務(wù)器端數(shù)據(jù)庫將當(dāng)前掃描讀取的數(shù)據(jù)返回所述掃描單元;B2、掃描單元將所述當(dāng)前掃描讀取的數(shù)據(jù)轉(zhuǎn)換成消息事件的形式后,分批推入消息總線單元;消息總線單元通過客戶端數(shù)據(jù)庫連"l婁單元,將當(dāng)前掃描讀取的數(shù)據(jù)同步到所述客戶端的客戶端數(shù)據(jù)庫。
9、 根據(jù)權(quán)利要求6或7所述的方法,其特征在于,步驟A中,所述掃描 單元來執(zhí)行掃描程序進(jìn)一步為Al、根據(jù)當(dāng)前業(yè)務(wù)需求采用不同的掃描策略來執(zhí)行掃描程序,并執(zhí)行對所 述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的掃描讀取。
10、 根據(jù)權(quán)利要求9所述的方法,其特征在于,當(dāng)采用的掃描策略為全量 數(shù)據(jù)掃描策略時候,步驟A1具體為所述掃描單元讀取掃描策略模塊中的全量數(shù)據(jù)掃描策略后,通過服務(wù)器端 數(shù)據(jù)庫連接單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù) 的全量數(shù)據(jù)掃描。
11、 根據(jù)權(quán)利要求9所述的方法,其特征在于,當(dāng)采用的掃描策略為增量 數(shù)據(jù)掃描策略時,步驟A1具體為掃描單元讀取掃描策略模塊中的增量數(shù)據(jù)掃描策略后,通過服務(wù)器端數(shù)據(jù) 庫連接單元連接到服務(wù)器端數(shù)據(jù)庫,執(zhí)行對所述服務(wù)器端數(shù)據(jù)庫表中數(shù)據(jù)的增量數(shù)據(jù)掃描。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括客戶端數(shù)據(jù)庫、客戶端數(shù)據(jù)庫連接單元、消息服務(wù)器、服務(wù)器端數(shù)據(jù)庫、服務(wù)器端數(shù)據(jù)庫連接單元、消息總線單元、時間調(diào)度單元和掃描單元。其中,掃描單元用于根據(jù)時間調(diào)度單元的調(diào)用執(zhí)行掃描程序,并通過服務(wù)器端數(shù)據(jù)庫連接單元對服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)進(jìn)行掃描讀取后,經(jīng)由消息服務(wù)器中的消息總線單元以及通過客戶端數(shù)據(jù)庫連接單元,將掃描讀取的數(shù)據(jù)同步到客戶端的客戶端數(shù)據(jù)庫。本發(fā)明還公開了一種實(shí)現(xiàn)數(shù)據(jù)同步的方法。采用本發(fā)明的系統(tǒng)及方法,能高效率地實(shí)現(xiàn)數(shù)據(jù)同步,并將服務(wù)器端數(shù)據(jù)庫表中的數(shù)據(jù)及時同步到客戶端。從而提高了客戶端的數(shù)據(jù)處理效率。
文檔編號H04L12/54GK101227379SQ200810056908
公開日2008年7月23日 申請日期2008年1月25日 優(yōu)先權(quán)日2008年1月25日
發(fā)明者琦 袁 申請人:中興通訊股份有限公司