專利名稱:一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)業(yè)務(wù)領(lǐng)域,尤其涉及一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法、裝置和系統(tǒng)。
背景技術(shù):
隨著近年來軟件技術(shù)的發(fā)展及企業(yè)信息建設(shè)的需求,現(xiàn)在的應(yīng)用系統(tǒng)所要處理 的數(shù)據(jù)越來越龐大,所要服務(wù)的用戶數(shù)量也不斷加大。應(yīng)用系統(tǒng)中的數(shù)據(jù)大部分存儲在 數(shù)據(jù)庫系統(tǒng)中,用于對用戶的服務(wù)。數(shù)據(jù)量的增加和用戶數(shù)的增多,導(dǎo)致數(shù)據(jù)庫系統(tǒng)負(fù) 荷的增加和工作壓力的增大,使數(shù)據(jù)庫系統(tǒng)就成為整個應(yīng)用系統(tǒng)的瓶頸。為了改進(jìn)數(shù)據(jù)庫系統(tǒng)的性能,除了數(shù)據(jù)庫系統(tǒng)本身架構(gòu)設(shè)計上的演進(jìn)外,應(yīng)用 系統(tǒng)多采用增加應(yīng)用緩存服務(wù)器,通過直接訪問應(yīng)用緩存服務(wù)器的方式,改善數(shù)據(jù)訪問 的性能。應(yīng)用緩存服務(wù)器可以減輕大量的數(shù)據(jù)使用者直接訪問數(shù)據(jù)庫系統(tǒng)、對數(shù)據(jù)庫系 統(tǒng)造成的讀寫壓力和計算壓力,使數(shù)據(jù)庫系統(tǒng)滿足支撐應(yīng)用系統(tǒng)的需要,并提高應(yīng)用系 統(tǒng)的處理能力和響應(yīng)能力。數(shù)據(jù)使用者不再直接訪問數(shù)據(jù)庫系統(tǒng)本身,而是訪問應(yīng)用緩 存服務(wù)器中的數(shù)據(jù),從而提高系統(tǒng)的整體處理能力和響應(yīng)能力。在具體的應(yīng)用中,應(yīng)用緩存服務(wù)器內(nèi)數(shù)據(jù)需要和數(shù)據(jù)庫內(nèi)的數(shù)據(jù)保持一致,即 數(shù)據(jù)庫內(nèi)的數(shù)據(jù)發(fā)生變化時,變化的數(shù)據(jù)需要同步到應(yīng)用緩存服務(wù)器中。常用的技術(shù)手 段包括通過外部同步程序?qū)崿F(xiàn)同步,以及由數(shù)據(jù)訪問者完成數(shù)據(jù)的同步。其中,通過外 部同步程序?qū)崿F(xiàn)同步具體包括,建立外部同步程序,通過該外部同步程序周期性地檢查 數(shù)據(jù)庫內(nèi)數(shù)據(jù)的變化情況,如果發(fā)生變化,則通過外部同步程序把變化的數(shù)據(jù)內(nèi)容更新 到應(yīng)用緩存服務(wù)器之中;由數(shù)據(jù)訪問者完成數(shù)據(jù)的同步具體包括,數(shù)據(jù)訪問者首先訪問 應(yīng)用緩存服務(wù)器時,如果需要的數(shù)據(jù)不存在,則由數(shù)據(jù)訪問者完成相應(yīng)的數(shù)據(jù)在數(shù)據(jù)庫 和應(yīng)用緩存服務(wù)器的同步,還可以為緩存中的每項(xiàng)數(shù)據(jù)都設(shè)置一個數(shù)據(jù)過期時間,當(dāng)數(shù) 據(jù)訪問者再次使用該數(shù)據(jù)時,如果發(fā)現(xiàn)數(shù)據(jù)已經(jīng)過期,重新完成數(shù)據(jù)的同步。發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷對于通過外部同步程序?qū)崿F(xiàn)同步的方法,如果外部同步程序的檢查周期過長, 則無法保證數(shù)據(jù)緩存和數(shù)據(jù)庫內(nèi)數(shù)據(jù)的一致性,影響數(shù)據(jù)使用者的正常使用,如果檢查 周期過短,則必然會對數(shù)據(jù)庫造成讀寫壓力。另外,如果數(shù)據(jù)庫內(nèi)數(shù)據(jù)量巨大,則完成 同步的時間、對數(shù)據(jù)的讀寫壓力、檢索變化數(shù)據(jù)的計算開銷將不可接受。對于由數(shù)據(jù)訪問者完成數(shù)據(jù)的同步的方法,增加了數(shù)據(jù)使用接口的復(fù)雜度;在 初次使用數(shù)據(jù)時完成數(shù)據(jù)的同步,可能會發(fā)生大量數(shù)據(jù)需要同步的情況,數(shù)據(jù)庫系統(tǒng)的 壓力將會出現(xiàn)峰值,從而引發(fā)性能問題;如果使用了數(shù)據(jù)過期時間策略,除了增加數(shù)據(jù) 使用接口的復(fù)雜度,還會產(chǎn)生新的數(shù)據(jù)庫系統(tǒng)訪問瓶頸。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法、裝置和系統(tǒng),滿足了數(shù)據(jù)庫內(nèi)的數(shù)據(jù)同步到應(yīng)用緩 存服務(wù)器的時效性要求,并減輕了數(shù)據(jù)同步時對數(shù) 據(jù)庫的壓力。本發(fā)明實(shí)施例提供了一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法,包括以下步 驟當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù),將所述更新 數(shù)據(jù)添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列中的更新數(shù)據(jù),更新應(yīng)用緩存服務(wù)器中的數(shù)據(jù)。本發(fā)明實(shí)施例還提供了一種應(yīng)用緩存服務(wù)器,包括接收模塊,用于當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新數(shù) 據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列;存儲模塊,用于存儲數(shù)據(jù);更新模塊,與所述接收模塊和所述存儲模塊連接,用于根據(jù)所述接收模塊添加 到消息隊(duì)列中的更新數(shù)據(jù),更新存儲模塊中的數(shù)據(jù)。本發(fā)明實(shí)施例還提供了一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系統(tǒng),包括數(shù)據(jù)使 用設(shè)備、數(shù)據(jù)庫和應(yīng)用緩存服務(wù)器,所述數(shù)據(jù)使用設(shè)備,用于讀取所述應(yīng)用緩存服務(wù)器中的數(shù)據(jù),并對所述數(shù)據(jù)庫 中數(shù)據(jù)進(jìn)行修改;所述數(shù)據(jù)庫,用于在自身的數(shù)據(jù)發(fā)生更新時,將更新數(shù)據(jù)發(fā)送到所述應(yīng)用緩存 服務(wù)器;所述應(yīng)用緩存服務(wù)器,用于當(dāng)所述數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述 數(shù)據(jù)庫的更新數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列中的更 新數(shù)據(jù),更新緩存單元中的數(shù)據(jù)。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)僅在數(shù)據(jù)庫中的數(shù)據(jù)更新的時 刻進(jìn)行數(shù)據(jù)同步,并將更新的數(shù)據(jù)內(nèi)容添加到消息隊(duì)列中,消息處理程序無需再次和數(shù) 據(jù)庫交互,便可把數(shù)據(jù)同步到應(yīng)用緩存服務(wù)器中,滿足了數(shù)據(jù)同步的時效性,減輕了數(shù) 據(jù)同步時對數(shù)據(jù)庫的壓力。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對本發(fā)明實(shí) 施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附 圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性 的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法流程圖;圖2為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系統(tǒng)結(jié)構(gòu)示 意圖;圖3為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步流程圖;圖4為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器結(jié)構(gòu)示意圖;圖6所示,為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供的技術(shù)方案中,提出一種觸發(fā)式同步技術(shù),當(dāng)數(shù)據(jù)庫內(nèi)的數(shù) 據(jù)發(fā)生變化時,變化的數(shù)據(jù)主動同步到應(yīng)用緩存服務(wù)器中,使應(yīng)用緩存服務(wù)器內(nèi)數(shù)據(jù)和 數(shù)據(jù)庫內(nèi)的數(shù)據(jù)保持一致,并解決了數(shù)據(jù)庫內(nèi)數(shù)據(jù)同步到應(yīng)用緩存服務(wù)器中的時效性問 題和數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力問題。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其 他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。如圖1所示,為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法流 程圖,包括以下步驟步驟101,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自該數(shù)據(jù)庫的更新數(shù)據(jù),將該 更新數(shù)據(jù)添加到消息隊(duì)列。步驟102,根據(jù)添加到消息隊(duì)列中的更新數(shù)據(jù),更新應(yīng)用緩存服務(wù)器中的數(shù)據(jù)。如圖2所示,為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系 統(tǒng)結(jié)構(gòu)示意圖,包括數(shù)據(jù)使用設(shè)備100、數(shù)據(jù)庫200 (包括數(shù)據(jù)庫觸發(fā)器)、緩存訪問接口 300、定時全同步程序400、觸發(fā)式同步程序500、緩存單元600、消息隊(duì)列700和外部觸 發(fā)器800。其中,緩存訪問接口 300、定時全同步程序400、觸發(fā)式同步程序500、緩存 單元600、消息隊(duì)列700和外部觸發(fā)器800構(gòu)成應(yīng)用緩存服務(wù)器,為數(shù)據(jù)使用設(shè)備100提 供數(shù)據(jù)讀取服務(wù)。數(shù)據(jù)使用者100通過緩存訪問接口 300完成對緩存服務(wù)器600的讀取 操作,通過數(shù)據(jù)庫200的接口可以完成對數(shù)據(jù)的修改操作。定時全同步程序400用于完 成緩存服務(wù)器600的第一次數(shù)據(jù)加載的初始化,當(dāng)觸發(fā)式同步程序500由于某種意外原因 在同步過程失效時,可以作為一種補(bǔ)充手段完成數(shù)據(jù)同步,該程序可設(shè)定在應(yīng)用系統(tǒng)的 業(yè)務(wù)空閑時段自動執(zhí)行。以下結(jié)合上述應(yīng)用場景對本發(fā)明實(shí)施例中的應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方 法進(jìn)行詳細(xì)、具體的描述。如圖3所示,為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步流程 圖,具體包括以下步驟步驟301,創(chuàng)建定時全同步程序400和數(shù)據(jù)緩存服務(wù)程序。其中,數(shù)據(jù)緩存服務(wù)程序用于完成數(shù)據(jù)在緩存系統(tǒng)中的存儲,并提供數(shù)據(jù)使用 者訪問數(shù)據(jù)的接口,減少數(shù)據(jù)使用設(shè)備100直接訪問數(shù)據(jù)庫系統(tǒng)時造成的壓力,數(shù)據(jù)使 用設(shè)備100通過數(shù)據(jù)緩存服務(wù)程序的數(shù)據(jù)訪問接口,完成對數(shù)據(jù)的讀取操作。步驟302,定時全同步程序400初始化緩存單元600中的數(shù)據(jù),將數(shù)據(jù)庫200中 的數(shù)據(jù)加載到緩存單元600中。步驟303,為需要同步的數(shù)據(jù)庫創(chuàng)建外部觸發(fā)器800。具體地,按照數(shù)據(jù)庫系統(tǒng)的外部過程規(guī)范建立外部觸發(fā)器800,并按照數(shù)據(jù)庫系 統(tǒng)規(guī)范為數(shù)據(jù)庫系統(tǒng)加載外部觸發(fā)器800,該外部觸發(fā)器800用于在數(shù)據(jù)庫內(nèi)的數(shù)據(jù)發(fā)生更新(增加、刪除或修改)時,被觸發(fā)并開始工作,把包含更新數(shù)據(jù)的消息或更新數(shù)據(jù)本 身發(fā)送到消息隊(duì)列中。步驟304,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,數(shù)據(jù)庫200中的數(shù)據(jù)庫觸發(fā)器觸發(fā)外部觸發(fā)器800。步驟305,創(chuàng)建消息隊(duì)列700。其中,消息隊(duì)列用于提供數(shù)據(jù)庫變化通知的隊(duì)列服務(wù),解耦各部分之間的依賴 性,包含更新數(shù)據(jù)的消息或更新數(shù)據(jù)本身進(jìn)入消息隊(duì)列,由觸發(fā)式同步程序500讀取更 新數(shù)據(jù),并完成數(shù)據(jù)的同步;而非由外部觸發(fā)器800直接操作緩存單元600。步驟306,外部觸發(fā)器800將包含更新數(shù)據(jù)的消息或更新數(shù)據(jù)本身添加到消息隊(duì) 列 700。具體地,外部觸發(fā)器800接收來自數(shù)據(jù)庫200中的數(shù)據(jù)庫觸發(fā)器的觸發(fā)命令,將 包含更新數(shù)據(jù)的消息或更新數(shù)據(jù)本身添加到消息隊(duì)列700。步驟307,創(chuàng)建觸發(fā)式同步程序500。其中,觸發(fā)式同步程序500用于連結(jié)消息隊(duì)列,等待包含更新數(shù)據(jù)的消息或更 新數(shù)據(jù)本身進(jìn)入消息隊(duì)列,當(dāng)包含更新數(shù)據(jù)的消息或更新數(shù)據(jù)本身到進(jìn)入消息隊(duì)列時, 確定更新的數(shù)據(jù)內(nèi)容,并根據(jù)該數(shù)據(jù)內(nèi)容更新應(yīng)用緩存服務(wù)器,最終完成應(yīng)用緩存服務(wù) 器和數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)同步。步驟308,觸發(fā)式同步程序500連結(jié)消息隊(duì)列,通過該消息隊(duì)列獲取更新數(shù)據(jù), 并根據(jù)該更新數(shù)據(jù)對緩存單元600中的數(shù)據(jù)進(jìn)行更新,完成觸發(fā)式同步過程。需要說明的是,本發(fā)明實(shí)施例方法可以根據(jù)實(shí)際需要對各個步驟順序進(jìn)行調(diào)
iF. ο本發(fā)明實(shí)施例無需使用外部同步程序進(jìn)行周期性的檢查,消除了檢索變化數(shù)據(jù) 的計算開銷,數(shù)據(jù)同步只發(fā)生在數(shù)據(jù)庫中的數(shù)據(jù)更新的時刻,并將更新的數(shù)據(jù)內(nèi)容添加 到消息隊(duì)列中,消息處理程序無需再次和數(shù)據(jù)庫交互,便可把數(shù)據(jù)同步到應(yīng)用緩存服務(wù) 器中,滿足了數(shù)據(jù)同步的時效性,減輕了數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力,尤其對于數(shù)據(jù)庫 內(nèi)有大量數(shù)據(jù)時。本發(fā)明在上述實(shí)施方式中提供了應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法和多種應(yīng) 用場景,相應(yīng)地,本發(fā)明實(shí)施例還提供了應(yīng)用上述應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法 的裝置和系統(tǒng)。如圖4所示,為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器結(jié)構(gòu)示意圖,包括接收模塊410,用于當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新 數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列。存儲模塊420,用于存儲數(shù)據(jù)。更新模塊430,與接收模塊410和存儲模塊420連接,用于根據(jù)接收模塊410添 加到消息隊(duì)列中的更新數(shù)據(jù),更新存儲模塊420中的數(shù)據(jù)。如圖5所示,為本發(fā)明實(shí)施例應(yīng)用場景中的應(yīng)用緩存服務(wù)器結(jié)構(gòu)示意圖,包括 創(chuàng)建模塊510、接收模塊520、存儲模塊530和更新模塊540,其中,創(chuàng)建模塊510,用于創(chuàng)建消息隊(duì)列,通過所述消息隊(duì)列提供數(shù)據(jù)庫變化通知的隊(duì) 列服務(wù)。
上述創(chuàng)建模塊510,還用于創(chuàng)建觸發(fā)式同步程序,通過所述創(chuàng)建觸發(fā)式同步程序 連結(jié)所述消息隊(duì)列。接收模塊520,與創(chuàng)建模塊510連接,用于當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收 來自數(shù)據(jù)庫的更新數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列。上述接收模塊520,具體用于接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù)和觸發(fā)命令,通過 預(yù)先創(chuàng)建的外部觸發(fā)器將所述更新數(shù)據(jù)添加到所述消息隊(duì)列。存儲模塊530,用于存儲數(shù)據(jù)。初始化模塊540,與存儲模塊530連接,用于通過預(yù)先創(chuàng)建的定時全同步程序初 始化存儲模塊530中的數(shù)據(jù),將所述數(shù)據(jù)庫中的數(shù)據(jù)加載到存儲模塊530中。更新模塊550,與接收模塊520和存儲模塊530連接,用于根據(jù)接收模塊520添 加到消息隊(duì)列中的更新數(shù)據(jù),更新存儲模塊530中的數(shù)據(jù)。本發(fā)明實(shí)施例無需使用外部同步程序進(jìn)行周期性的檢查,消除了檢索變化數(shù)據(jù) 的計算開銷,數(shù)據(jù)同步只發(fā)生在數(shù)據(jù)庫中的數(shù)據(jù)更新的時刻,并將更新的數(shù)據(jù)內(nèi)容添加 到消息隊(duì)列中,消息處理程序無需再次和數(shù)據(jù)庫交互,便可把數(shù)據(jù)同步到應(yīng)用緩存服務(wù) 器中,滿足了數(shù)據(jù)同步的時效性,減輕了數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力,尤其對于數(shù)據(jù)庫 內(nèi)有大量數(shù)據(jù)時。如圖6所示,為本發(fā)明實(shí)施例中的一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系統(tǒng)結(jié) 構(gòu)示意圖,包括數(shù)據(jù)使用設(shè)備610、數(shù)據(jù)庫620和應(yīng)用緩存服務(wù)器630,其中,數(shù)據(jù)使用設(shè)備610,用于讀取所述應(yīng)用緩存服務(wù)器630中的數(shù)據(jù),并對所述數(shù)據(jù) 庫620中數(shù)據(jù)進(jìn)行修改。數(shù)據(jù)庫620,用于在自身的數(shù)據(jù)發(fā)生更新時,將更新數(shù)據(jù)發(fā)送到所述應(yīng)用緩存服 務(wù)器620。應(yīng)用緩存服務(wù)器630,用于當(dāng)所述數(shù)據(jù)庫620中的數(shù)據(jù)發(fā)生更新時,接收來自所 述數(shù)據(jù)庫620的更新數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列 中的更新數(shù)據(jù),更新緩存單元中的數(shù)據(jù)。上述應(yīng)用緩存服務(wù)器630,還用于創(chuàng)建外部觸發(fā)器,所述外部觸發(fā)器用于將所述 更新數(shù)據(jù)添加到所述消息隊(duì)列;相應(yīng)地,上述數(shù)據(jù)庫620,還用于通過自身的數(shù)據(jù)庫觸發(fā)器觸發(fā)所述外部觸發(fā)器工作。上述應(yīng)用緩存服務(wù)器630,還用于創(chuàng)建數(shù)據(jù)緩存服務(wù)程序和定時全同步程序,通 過所述定時全同步程序初始化緩存單元中的數(shù)據(jù),將所述數(shù)據(jù)庫中的數(shù)據(jù)加載到所述緩 存單元中。 上述應(yīng)用緩存服務(wù)器630,還用于創(chuàng)建消息隊(duì)列,通過所述消息隊(duì)列提供數(shù)據(jù)庫 變化通知的隊(duì)列服務(wù)。上述應(yīng)用緩存服務(wù)器630,還用于創(chuàng)建觸發(fā)式同步程序,通過所述創(chuàng)建觸發(fā)式同 步程序連結(jié)所述消息隊(duì)列。本發(fā)明實(shí)施例無需使用外部同步程序進(jìn)行周期性的檢查,消除了檢索變化數(shù)據(jù) 的計算開銷,數(shù)據(jù)同步只發(fā)生在數(shù)據(jù)庫中的數(shù)據(jù)更新的時刻,并將更新的數(shù)據(jù)內(nèi)容添加 到消息隊(duì)列中,消息處理程序無需再次和數(shù)據(jù)庫交互,便可把數(shù)據(jù)同步到應(yīng)用緩存服務(wù)器中,滿足了數(shù)據(jù)同步的時效性,減輕了數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力,尤其對于數(shù)據(jù)庫 內(nèi)有大量數(shù)據(jù)時。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借 助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者 是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做 出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì) 中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),個人計算機(jī),服務(wù)器,或者網(wǎng) 絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤 飾也應(yīng)視本發(fā)明的保護(hù)范圍。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分 布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個或多個裝置中。 上述實(shí)施例的模塊可以集成于一體,也可以分離部署;可以合并為一個模塊,也可以進(jìn) 一步拆分成多個子模塊。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開的僅為本發(fā)明的幾個具體實(shí)施例,但是,本發(fā)明并非局限于此,任何 本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法,其特征在于,包括以下步驟當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù),將所述更新數(shù)據(jù) 添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列中的更新數(shù)據(jù),更新應(yīng)用緩存服務(wù)器中的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述將更新數(shù)據(jù)添加到消息隊(duì)列,具體為接收來自所述數(shù)據(jù)庫中的數(shù)據(jù)庫觸發(fā)器的觸發(fā)命令,通過預(yù)先創(chuàng)建的外部觸發(fā)器將 所述更新數(shù)據(jù)添加到所述消息隊(duì)列。
3.如權(quán)利要求1所述的方法,其特征在于,所述接收來自數(shù)據(jù)庫的更新數(shù)據(jù)之前,還 包括通過預(yù)先創(chuàng)建的定時全同步程序初始化所述應(yīng)用緩存服務(wù)器的緩存單元中的數(shù)據(jù), 將所述數(shù)據(jù)庫中的數(shù)據(jù)加載到所述緩存單元中。
4.如權(quán)利要求1所述的方法,其特征在于,所述更新應(yīng)用緩存服務(wù)器中的數(shù)據(jù)之前, 還包括通過預(yù)先創(chuàng)建的觸發(fā)式同步程序連結(jié)所述消息隊(duì)列,并通過所述消息隊(duì)列獲取所述 更新數(shù)據(jù)。
5.—種應(yīng)用緩存服務(wù)器,其特征在于,包括接收模塊,用于當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù), 將所述更新數(shù)據(jù)添加到消息隊(duì)列; 存儲模塊,用于存儲數(shù)據(jù);更新模塊,與所述接收模塊和所述存儲模塊連接,用于根據(jù)所述接收模塊添加到消 息隊(duì)列中的更新數(shù)據(jù),更新存儲模塊中的數(shù)據(jù)。
6.如權(quán)利要求5所述應(yīng)用緩存服務(wù)器,其特征在于,所述接收模塊,具體用于接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù)和觸發(fā)命令,通過預(yù)先創(chuàng) 建的外部觸發(fā)器將所述更新數(shù)據(jù)添加到所述消息隊(duì)列。
7.如權(quán)利要求5所述應(yīng)用緩存服務(wù)器,其特征在于,還包括初始化模塊,與所述存儲模塊連接,用于通過預(yù)先創(chuàng)建的定時全同步程序初始化所 述存儲模塊中的數(shù)據(jù),將所述數(shù)據(jù)庫中的數(shù)據(jù)加載到所述存儲模塊中。
8.如權(quán)利要求5所述應(yīng)用緩存服務(wù)器,其特征在于,還包括創(chuàng)建模塊,用于創(chuàng)建消息隊(duì)列,通過所述消息隊(duì)列提供數(shù)據(jù)庫變化通知的隊(duì)列服務(wù)。
9.如權(quán)利要求8所述應(yīng)用緩存服務(wù)器,其特征在于,所述創(chuàng)建模塊,還用于創(chuàng)建觸發(fā)式同步程序,通過所述創(chuàng)建觸發(fā)式同步程序連結(jié)所 述消息隊(duì)列。
10.—種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的系統(tǒng),包括數(shù)據(jù)使用設(shè)備、數(shù)據(jù)庫和應(yīng)用緩 存服務(wù)器,其特征在于,所述數(shù)據(jù)使用設(shè)備,用于讀取所述應(yīng)用緩存服務(wù)器中的數(shù)據(jù),并對所述數(shù)據(jù)庫中數(shù) 據(jù)進(jìn)行修改;所述數(shù)據(jù)庫,用于在自身的數(shù)據(jù)發(fā)生更新時,將更新數(shù)據(jù)發(fā)送到所述應(yīng)用緩存服務(wù)器;所述應(yīng)用緩存服務(wù)器,用于當(dāng)所述數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù) 庫的更新數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列中的更新數(shù) 據(jù),更新緩存單元中的數(shù)據(jù)。
全文摘要
本發(fā)明實(shí)施例公開了一種應(yīng)用緩存服務(wù)器與數(shù)據(jù)庫同步的方法,包括以下步驟當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生更新時,接收來自所述數(shù)據(jù)庫的更新數(shù)據(jù),將所述更新數(shù)據(jù)添加到消息隊(duì)列;根據(jù)所述添加到消息隊(duì)列中的更新數(shù)據(jù),更新應(yīng)用緩存服務(wù)器中的數(shù)據(jù)。本發(fā)明實(shí)施例滿足了數(shù)據(jù)庫內(nèi)的數(shù)據(jù)同步到應(yīng)用緩存服務(wù)器的時效性要求,并減輕了數(shù)據(jù)同步時對數(shù)據(jù)庫的壓力。本發(fā)明實(shí)施例同樣公開了一種應(yīng)用上述方法的裝置和系統(tǒng)。
文檔編號G06F17/30GK102023973SQ200910092420
公開日2011年4月20日 申請日期2009年9月14日 優(yōu)先權(quán)日2009年9月14日
發(fā)明者于蓉蓉, 劉越, 王磊, 范曉暉, 鄭冬冬 申請人:中國移動通信集團(tuán)公司