国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法

      文檔序號(hào):6332233閱讀:465來(lái)源:國(guó)知局
      專利名稱:內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)處理方法,尤其涉及一種內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步 方法。
      背景技術(shù)
      現(xiàn)代通信對(duì)計(jì)算機(jī)技術(shù)依賴性越來(lái)越強(qiáng),在電信運(yùn)營(yíng)商的不斷發(fā)展中,建立起各 類信息系統(tǒng),包括運(yùn)營(yíng)網(wǎng)絡(luò)系統(tǒng)、綜合營(yíng)帳系統(tǒng)、計(jì)費(fèi)系統(tǒng)、辦公自動(dòng)化系統(tǒng)、客戶服務(wù)系 統(tǒng)、大客戶管理系統(tǒng)、經(jīng)營(yíng)分析與決策系統(tǒng)等等,這些系統(tǒng)積累了海量的有價(jià)值的數(shù)據(jù)資 料,通過(guò)對(duì)這些資料進(jìn)行數(shù)據(jù)挖掘、查詢分析和聯(lián)機(jī)分析,可以識(shí)別市場(chǎng)機(jī)會(huì)、制定市場(chǎng)策 略,進(jìn)一步改善客戶關(guān)系。但是,這些數(shù)據(jù)資料過(guò)于龐大了,記錄條數(shù)動(dòng)輒以億計(jì),以中國(guó)移 動(dòng)為例,其全國(guó)移動(dòng)電話用戶總數(shù)已經(jīng)超過(guò)三億,許多省公司的用戶規(guī)模都超過(guò)千萬(wàn),對(duì)于 如此龐大的數(shù)據(jù)量,傳統(tǒng)的基于磁盤的物理數(shù)據(jù)庫(kù)(RMDB)管理系統(tǒng)越來(lái)越難以應(yīng)付,于是 內(nèi)存數(shù)據(jù)庫(kù)(MDB)在電信領(lǐng)域出現(xiàn)了。由于市場(chǎng)與技術(shù)的快速發(fā)展,電信業(yè)務(wù)在不斷擴(kuò)充,其運(yùn)營(yíng)和管理不斷優(yōu)化,傳統(tǒng) 的一些支撐系統(tǒng)的架構(gòu)已經(jīng)逐漸不能滿足日益增長(zhǎng)的業(yè)務(wù)要求和客戶需求,引入一些新的 技術(shù)來(lái)解決我們生產(chǎn)中遇到的問(wèn)題是必然的。通過(guò)采用內(nèi)存數(shù)據(jù)庫(kù)來(lái)代替以前的共享內(nèi)存 技術(shù),使得原來(lái)在內(nèi)存中不標(biāo)準(zhǔn)的東西,包括接口、格式和管理都標(biāo)準(zhǔn)化了。內(nèi)存數(shù)據(jù)庫(kù),就是將數(shù)據(jù)放在內(nèi)存中直接操作的數(shù)據(jù)庫(kù)。相對(duì)于磁盤,內(nèi)存的數(shù)據(jù) 讀寫速要高出幾個(gè)數(shù)量級(jí),將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問(wèn)能夠極大地提高應(yīng)用的 性能。同時(shí)內(nèi)存數(shù)據(jù)庫(kù)拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè) 計(jì)了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù) 處理速度比傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理速度要快很多,一般都在10倍以上。相對(duì)于利用程序開(kāi)發(fā)手段調(diào)用內(nèi)存處理來(lái)說(shuō),內(nèi)存數(shù)據(jù)庫(kù)自有其優(yōu)勢(shì)。首先,內(nèi)存 數(shù)據(jù)庫(kù)是產(chǎn)品化的數(shù)據(jù)庫(kù)管理軟件,極大縮短了開(kāi)發(fā)周期;其次,內(nèi)存數(shù)據(jù)庫(kù)有著開(kāi)放的平 臺(tái)和接口,程序開(kāi)發(fā)和移植更加靈活便捷,也便于維護(hù)和二次開(kāi)發(fā);第三,可以通過(guò)使用統(tǒng) 一的SQL語(yǔ)言方便地查詢內(nèi)存中的數(shù)據(jù);最后,能在數(shù)據(jù)庫(kù)中保障數(shù)據(jù)的安全性和完整性。 這些優(yōu)勢(shì),對(duì)于快速部署和簡(jiǎn)化維護(hù)都是有利的。電信營(yíng)業(yè)數(shù)據(jù)和計(jì)費(fèi)系統(tǒng)中的數(shù)據(jù)總是在不斷的變化中,這就涉及內(nèi)存數(shù)據(jù)庫(kù)中 的數(shù)據(jù)和物理數(shù)據(jù)庫(kù)(磁盤數(shù)據(jù)庫(kù))數(shù)據(jù)的同步問(wèn)題。系統(tǒng)中的數(shù)據(jù)同步包括兩部分從 內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)同步(反向同步)和從物理數(shù)據(jù)庫(kù)到內(nèi)存數(shù)據(jù)庫(kù)的同步(正向同 步)O1、正向同步。這部分?jǐn)?shù)據(jù)同步采用增量表的方式,營(yíng)業(yè)系統(tǒng)或CRM(客戶關(guān)系管 理)新增或更新的數(shù)據(jù)將生成到物理數(shù)據(jù)庫(kù)的增量表中,然后同步程序把這些數(shù)據(jù)同步到 內(nèi)存數(shù)據(jù)庫(kù)中。由于增量表的數(shù)據(jù)量很小,以及數(shù)據(jù)同步的實(shí)時(shí)性強(qiáng),不會(huì)影響計(jì)費(fèi)程序。2、反向同步。由于物理數(shù)據(jù)庫(kù)的計(jì)費(fèi)后臺(tái)批價(jià)、累賬數(shù)據(jù)幾乎都加載到了內(nèi)存數(shù) 據(jù)庫(kù)中,所以物理數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)表將主要用于對(duì)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)備份和周邊應(yīng)用的數(shù)據(jù)查詢。為了保證周邊應(yīng)用獲取數(shù)據(jù)的正確性,把內(nèi)存表的變動(dòng)生成邏輯日志,然后由同 步程序?qū)崟r(shí)的向物理數(shù)據(jù)庫(kù)中同步。現(xiàn)有的數(shù)據(jù)同步方式需要記錄大量的邏輯日志,數(shù)據(jù)同步效率不高,因此亟需改 進(jìn)。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種高效率的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方 法。為實(shí)現(xiàn)上述目的,本發(fā)明提供一種內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法, 包括步驟1、以SQL操作的形式表示對(duì)源數(shù)據(jù)庫(kù)的操作,將SQL操作分解為SQL語(yǔ)法和 相應(yīng)的SQL參數(shù),注冊(cè)操作源數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù),并將注冊(cè)的SQL語(yǔ)法和SQL參 數(shù)存儲(chǔ)于SQL管理區(qū)中加以管理;步驟2、對(duì)于源數(shù)據(jù)庫(kù)的數(shù)據(jù)變動(dòng),以SQL語(yǔ)法結(jié)合SQL參數(shù)的形式生成邏輯日 志;步驟3、根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志在目的數(shù)據(jù)庫(kù)重 做。其中,步驟3中,每條邏輯日志關(guān)聯(lián)一個(gè)SQL語(yǔ)法,在執(zhí)行目的數(shù)據(jù)庫(kù)的重做時(shí),首 先通過(guò)管理區(qū)中注冊(cè)的SQL語(yǔ)法查找準(zhǔn)備后的SQL語(yǔ)法,如果沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備, 然后再執(zhí)行SQL語(yǔ)法對(duì)目的數(shù)據(jù)庫(kù)重做。一方面,對(duì)于從內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)的數(shù)據(jù)同步步驟1中,當(dāng)系統(tǒng)中能夠操作內(nèi)存數(shù)據(jù)庫(kù)的應(yīng)用進(jìn)程開(kāi)始運(yùn)行時(shí),該應(yīng)用進(jìn)程首 先注冊(cè)SQL語(yǔ)法和SQL參數(shù)到內(nèi)存數(shù)據(jù)庫(kù),同時(shí)生成一份拷貝存儲(chǔ)于SQL管理區(qū)中,該拷貝 供執(zhí)行物理數(shù)據(jù)庫(kù)的日志重做用;步驟2中,捕獲系統(tǒng)中的應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作,以SQL語(yǔ)法結(jié)合SQL參數(shù) 的形式生成邏輯日志;步驟3中,根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志在物理數(shù)據(jù)庫(kù) 中重做。其中,使每個(gè)應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作對(duì)應(yīng)一個(gè)SQL操作組,每個(gè)SQL操作組 包括若干個(gè)SQL操作,每個(gè)SQL操作由SQL語(yǔ)法和SQL參數(shù)組組成。其中,還包括對(duì)于系統(tǒng)中所有需要進(jìn)行數(shù)據(jù)同步的應(yīng)用進(jìn)程,建立應(yīng)用名和對(duì)應(yīng) 的應(yīng)用進(jìn)程的關(guān)系、應(yīng)用進(jìn)程和對(duì)應(yīng)的SQL操作組的關(guān)系。其中,步驟2中生成邏輯日志后,系統(tǒng)還對(duì)生成的邏輯日志進(jìn)行收集對(duì)應(yīng)于應(yīng)用 進(jìn)程的每個(gè)線程關(guān)聯(lián)一個(gè)事務(wù)緩沖區(qū),用來(lái)存儲(chǔ)一個(gè)事務(wù)所生成的邏輯日志;對(duì)應(yīng)于每個(gè) 應(yīng)用進(jìn)程關(guān)聯(lián)一個(gè)應(yīng)用緩沖區(qū),用來(lái)存儲(chǔ)該應(yīng)用進(jìn)程所有實(shí)例所生成的邏輯日志;然后每 個(gè)應(yīng)用進(jìn)程再把所生成的邏輯日志存儲(chǔ)到消息隊(duì)列中;從消息隊(duì)列中獲取應(yīng)用進(jìn)程的邏 輯日志并放在系統(tǒng)緩沖區(qū)中,并把系統(tǒng)緩沖區(qū)中的邏輯日志寫入到內(nèi)存數(shù)據(jù)庫(kù)的日志文件 中。其中,步驟3中,首先加載并解析內(nèi)存數(shù)據(jù)庫(kù)的日志文件,通過(guò)解析日志文件得到步驟2中所生成的邏輯日志,然后根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),把生成的邏輯日志在物 理數(shù)據(jù)庫(kù)中重做。其中,步驟3中,在執(zhí)行物理數(shù)據(jù)庫(kù)的重做時(shí),首先在管理區(qū)中注冊(cè)的SQL語(yǔ)法中 查找準(zhǔn)備后的SQL語(yǔ)法,如果沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備,然后再執(zhí)行SQL語(yǔ)法對(duì)物理數(shù)據(jù)
      庫(kù)重做。另一方面,對(duì)于從物理數(shù)據(jù)庫(kù)到內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)同步步驟1中,根據(jù)物理數(shù)據(jù)庫(kù)的日志文件,在SQL管理區(qū)中設(shè)置SQL語(yǔ)法表和SQL參 數(shù)表,分別用來(lái)注冊(cè)操作物理數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù);步驟2中,根據(jù)物理數(shù)據(jù)庫(kù)的日志文件,設(shè)置邏輯日志表,當(dāng)物理數(shù)據(jù)庫(kù)的數(shù)據(jù)有 變化時(shí),通過(guò)物理數(shù)據(jù)庫(kù)提供的觸發(fā)器機(jī)制,將變化的數(shù)據(jù)寫到邏輯日志表;步驟3中,實(shí)時(shí)掃描邏輯日志表,根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),把步驟2對(duì)應(yīng) 的邏輯日志在內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行重做。其中,步驟3中,在執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的重做時(shí)步驟3. 1、獲取到邏輯日志后,根據(jù)SQL語(yǔ)法表獲取準(zhǔn)備后的SQL語(yǔ)法;步驟3. 2、如果獲取準(zhǔn)備后的SQL語(yǔ)法成功,直接執(zhí)行步驟3. 3 ;如果獲取準(zhǔn)備后的 SQL語(yǔ)法失敗,則在SQL語(yǔ)法表中獲取SQL語(yǔ)法,然后執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的準(zhǔn)備操作,并在SQL 參數(shù)表中獲取參數(shù),然后執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的參數(shù)綁定操作,從而完成內(nèi)存數(shù)據(jù)庫(kù)的重做;步驟3. 3、根據(jù)邏輯日志拆分出所有的SQL參數(shù),依次設(shè)置到SQL語(yǔ)法中,然后執(zhí)行 內(nèi)存數(shù)據(jù)庫(kù)的重做。綜上所述,本發(fā)明的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法利用了一次 prepare和多次execute機(jī)制,大大的提高了同步效率;降低了邏輯日志的大小,減少了系 統(tǒng)傳輸損耗和磁盤空間的浪費(fèi);支持了同步應(yīng)用和對(duì)應(yīng)SQL的變化,支持了系統(tǒng)的升級(jí)和 擴(kuò)展。


      下面結(jié)合附圖,通過(guò)對(duì)本發(fā)明的具體實(shí)施方式
      詳細(xì)描述,將使本發(fā)明的技術(shù)方案 及其他有益效果顯而易見(jiàn)。附圖中,圖1為本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的流程圖;圖2為應(yīng)用了本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的一較佳實(shí)施 例的反向同步系統(tǒng)的結(jié)構(gòu)示意圖;圖3為圖2所示的反向同步系統(tǒng)的反向同步的數(shù)據(jù)流圖;圖4為應(yīng)用了本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的一較佳實(shí)施 例的正向同步系統(tǒng)的數(shù)據(jù)流圖。
      具體實(shí)施例方式圖1所示為本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的流程圖。該方法 包括步驟1、以SQL操作的形式表示對(duì)源數(shù)據(jù)庫(kù)的操作,將SQL操作分解為SQL語(yǔ)法和相 應(yīng)的SQL參數(shù),注冊(cè)操作源數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù),并將注冊(cè)的SQL語(yǔ)法和SQL參數(shù)存儲(chǔ)于SQL管理區(qū)中加以管理;步驟2、對(duì)于源數(shù)據(jù)庫(kù)的數(shù)據(jù)變動(dòng),以SQL語(yǔ)法結(jié)合SQL參 數(shù)的形式生成邏輯日志;步驟3、根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志 在目的數(shù)據(jù)庫(kù)重做。步驟3中,每條邏輯日志關(guān)聯(lián)一個(gè)SQL語(yǔ)法,在執(zhí)行目的數(shù)據(jù)庫(kù)的重做時(shí),首先通 過(guò)管理區(qū)中注冊(cè)的SQL語(yǔ)法查找準(zhǔn)備后的SQL語(yǔ)法,如果沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備,然后 再執(zhí)行SQL語(yǔ)法對(duì)目的數(shù)據(jù)庫(kù)重做。本發(fā)明通過(guò)把SQL語(yǔ)句拆分成SQL語(yǔ)法和動(dòng)態(tài)參數(shù), 邏輯日志由SQL語(yǔ)法編號(hào)和動(dòng)態(tài)參數(shù)組成,這樣大大的降低了邏輯日志的大小,減少了系 統(tǒng)傳輸損耗和磁盤空間的浪費(fèi)。同時(shí)充分利用了 SQL語(yǔ)法的一次pr印are (準(zhǔn)備)和多次 execute (執(zhí)行)機(jī)制,大大的提高了同步效率,減少了數(shù)據(jù)同步的時(shí)間延遲。本發(fā)明的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法適用于同時(shí)具有內(nèi)存數(shù)據(jù) 庫(kù)和物理數(shù)據(jù)庫(kù)的系統(tǒng),這樣的系統(tǒng)可以由若干臺(tái)主機(jī)組成,內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)可 以同時(shí)設(shè)置在于一臺(tái)主機(jī)上,也可以分別設(shè)置在不同的主機(jī)上。例如,這樣的系統(tǒng)可以是電 信的營(yíng)業(yè)數(shù)據(jù)和計(jì)費(fèi)系統(tǒng)。系統(tǒng)中可以支持各種應(yīng)用(應(yīng)用程序)的運(yùn)行,系統(tǒng)中處于運(yùn)行 狀態(tài)的應(yīng)用稱為應(yīng)用進(jìn)程。本發(fā)明的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,同時(shí)支 持從內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)同步(反向同步)和從物理數(shù)據(jù)庫(kù)到內(nèi)存數(shù)據(jù)庫(kù)的同步(正 向同步)。圖2所示為應(yīng)用了本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的一較佳 實(shí)施例的反向同步系統(tǒng)的結(jié)構(gòu)示意圖。此較佳實(shí)施例通過(guò)應(yīng)用本發(fā)明的方法,在具有內(nèi)存 數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的系統(tǒng)中實(shí)現(xiàn)了支持?jǐn)?shù)據(jù)的反向同步和正向同步,根據(jù)數(shù)據(jù)同步的 方向,該較佳實(shí)施例可以劃分為反向同步系統(tǒng)和正向同步系統(tǒng)兩部分。首先參照?qǐng)D2來(lái)詳細(xì)說(shuō)明該較佳實(shí)施例的反向同步系統(tǒng)。1反向同步在此較佳實(shí)施例中,反向同步是基于數(shù)據(jù)庫(kù)的日志重做機(jī)制來(lái)實(shí)現(xiàn),從而可支持 多進(jìn)程和多線程的混合編程模式。反向同步程序(反向同步系統(tǒng))對(duì)外提供操作內(nèi)存數(shù)據(jù) 庫(kù)API (Application Programming Interface,應(yīng)用程序編程接口)和動(dòng)態(tài)庫(kù)的二次開(kāi)發(fā)包 (mdbutil開(kāi)發(fā)包,用于連接內(nèi)存數(shù)據(jù)庫(kù)),應(yīng)用基于該接口開(kāi)發(fā)的反向同步程序(反向同步 系統(tǒng))支持內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)的同步。系統(tǒng)中的應(yīng)用進(jìn)程(應(yīng)用1)對(duì)內(nèi)存數(shù)據(jù)庫(kù) 的操作,被內(nèi)存數(shù)據(jù)mdbutil開(kāi)發(fā)包捕獲并記錄于內(nèi)存數(shù)據(jù)庫(kù)的邏輯日志中,然后通過(guò)反 向同步程序(反向同步系統(tǒng))進(jìn)行日志的持久化(寫入日志文件)和物理數(shù)據(jù)庫(kù)的日志重 做。mdbutil開(kāi)發(fā)包由應(yīng)用管理、SQL管理和日志管理三大模塊組成。所有的管理信息都存 儲(chǔ)在系統(tǒng)的共享存儲(chǔ)區(qū),保證了系統(tǒng)信息的安全。反向同步系統(tǒng)的結(jié)構(gòu)具體說(shuō)明如下。1. 1系統(tǒng)結(jié)構(gòu)1. 1. 1應(yīng)用管理管理主機(jī)(系統(tǒng))中所有需要同步的應(yīng)用進(jìn)程,對(duì)于系統(tǒng)中所有需要進(jìn)行數(shù)據(jù)同 步的應(yīng)用進(jìn)程,維護(hù)建立應(yīng)用名和對(duì)應(yīng)應(yīng)用進(jìn)程的關(guān)系、應(yīng)用進(jìn)程和對(duì)應(yīng)SQL操作組的關(guān) 系。反向同步程序啟動(dòng)時(shí)首先調(diào)用mdbutil的初始化動(dòng)作,同時(shí)對(duì)應(yīng)的應(yīng)用名、進(jìn)程信息注 冊(cè)到同步系統(tǒng)中。1.1. 2SQL 管理SQL管理模塊負(fù)責(zé)內(nèi)存數(shù)據(jù)庫(kù)中的SQL語(yǔ)法和對(duì)應(yīng)參數(shù)的管理。也就是說(shuō),對(duì)應(yīng)于本發(fā)明的步驟1,將表示SQL操作的SQL語(yǔ)句分解為SQL語(yǔ)法和對(duì)應(yīng)的參數(shù)的形式,同時(shí), 當(dāng)應(yīng)用開(kāi)始在內(nèi)存中形成應(yīng)用進(jìn)程時(shí),應(yīng)用進(jìn)程注冊(cè)該應(yīng)用更改內(nèi)存數(shù)據(jù)庫(kù)時(shí)可能用到的 SQL語(yǔ)法和對(duì)應(yīng)的參數(shù)到內(nèi)存數(shù)據(jù)庫(kù),同時(shí)生成一份拷貝存儲(chǔ)在SQL管理區(qū),該拷貝供執(zhí)行 物理數(shù)據(jù)庫(kù)的日志重做用。以SQL語(yǔ)言來(lái)描述,SQL管理區(qū)中的主要的數(shù)據(jù)結(jié)構(gòu)如下//SQL 語(yǔ)法typedef struct
      {TUINT8id:8 ;//應(yīng)用編號(hào)TUINT8oper:8 ;//操作序號(hào)TINT8sql [MDBUTIL_SYNC_SQL_LEN-2] ;//SQL 語(yǔ)句}SSQLSyntax ;//SQL 參數(shù)typedef struct{TUINT32type ;// 參數(shù)類型TUINT32size ;// 參數(shù)大小}SSQLParam ;//SQL 參數(shù)組typedef struct{TINT32num ;// 參數(shù)數(shù)目TINT32unused ;// 占位符SSQLParam array[MDBUTIL_SYNC_SQL_PARAM_NUM];}SSQLParams ;//SQL 操作typedef struct{SSQLSyntax syntax ;//SQL i吾法SSQLParams params ;//SQL 參數(shù)} SDMLOper ;//SQL 操作組typedef struct{SSemLock lock ;//原子鎖TUINT32 id:8 ;/ 應(yīng)用編號(hào)TUINT32 flag:8 ;//使用標(biāo)志TUINT32 num:16 ;//SQL 數(shù)目TUINT32 unused ;// 占位符SDMLOper group[MDBUTIL_SYNC_SQL KIND一SIZE];
      }SDMLOperGroup ;數(shù)據(jù)結(jié)構(gòu)的定義由小到大,使每個(gè)應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作都會(huì)對(duì)應(yīng)一個(gè) SQL操作組(SDMLOperGroup)。每個(gè)SQL操作組包括若干個(gè)SQL操作,每個(gè)SQL操作都是由 SQL 語(yǔ)法(SSQLSyntax)和 SQL 參數(shù)組(SSQLParams)組成。1.1. 3日志管理主要負(fù)責(zé)邏輯日志的生成、打包(邏輯日志的收集)、落地(生成日志文件,日志文 件是所有邏輯日志的綜合)和重做(對(duì)物理數(shù)據(jù)庫(kù))。對(duì)應(yīng)于本發(fā)明的步驟2,反向同步程 序捕獲系統(tǒng)中的應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作,以SQL語(yǔ)法結(jié)合SQL參數(shù)的形式生成邏輯 日志。以SQL語(yǔ)言來(lái)描述,本發(fā)明所采用的邏輯日志的結(jié)構(gòu)定義如下//邏輯日志頭typedef struct{TUINT32 id:8 ;//應(yīng)用編號(hào)TUINT32 oper:8 ;//SQL 編號(hào)TUINT32 Ien: 16;// 日志長(zhǎng)度TUINT32 seq ;// 日志序號(hào)} SLogicHead;//type-length-valuetypedef struct{TUINT32 type:4 ;//數(shù)據(jù)類型TUINT32 Ien: 12;//數(shù)據(jù)長(zhǎng)度TUINT8 value [2] ;//數(shù)值TUINT8 unused[MDBUTIL_SYNC_PARAM_LEN];} STLV ;//邏輯日志體typedef struct{STLV tlv[l] ;//數(shù)組} SLogicBody;//邏輯日志typedef struct{SLogicHead head ;SLogicBody body ;} SLogicLog ;//公共緩沖頭typedef struct
      {
      TUINTL id ;//編號(hào)TUINT32 num ;//數(shù)目TUINT32 Ien ;//長(zhǎng)度} SLogBufHead ;
      //事務(wù)邏輯日志緩沖頭typedef struct{SLogBufHead com ;//公共部分TUINT32 start ;//開(kāi)始時(shí)間TUINT32 group ;//操作組TUINT64 unused ;}STransLogBufHead ;//事務(wù)邏輯日志緩沖typedef struct{STransLogBufHead head ;//TINT8buf [MDBUTIL_SYNC_PLACE HOLD] ;//數(shù)據(jù)緩沖} STransLogBuf ;其中,邏輯日志是操作數(shù)據(jù)庫(kù)的最小單位,事務(wù)日志是同步操作的最小單位,事務(wù) 日志是由一個(gè)或多個(gè)邏輯日志組成。1.1.3.1 邏輯日志邏輯日志由日志頭和日志體兩部分組成,其中日志體由一組參數(shù)(數(shù)目可以為0) 組成,每個(gè)參數(shù)由TLVaype-length-value,類型一長(zhǎng)度-值)結(jié)構(gòu)來(lái)存儲(chǔ)。日志頭由id(編 號(hào))、oper (操作)、Ien(長(zhǎng)度)和seq(序號(hào))組成,其中id和oper用來(lái)指向唯一的SQL 操作,1 en表示邏輯日志的長(zhǎng)度,seq表示事務(wù)中的序號(hào)。1.1.3. 2 事務(wù)日志事務(wù)是邏輯日志的組合,由緩沖頭和緩沖區(qū)兩部分組成。緩沖頭由id、num(數(shù) 目)、len、Start (開(kāi)始時(shí)間)和group (操作組)組成,其中id是執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的事務(wù)序 號(hào)。邏輯日志是按照?qǐng)?zhí)行順序存儲(chǔ)到緩沖區(qū)中。按照本發(fā)明的步驟3,生成邏輯日志可以根據(jù)SQL管理區(qū)中注冊(cè)的SQL語(yǔ)法和SQL 參數(shù)在物理數(shù)據(jù)庫(kù)中重做,由于生成邏輯日志為SQL語(yǔ)法結(jié)合SQL參數(shù)的結(jié)構(gòu),充分利用了 SQL語(yǔ)法的一次pr印are (準(zhǔn)備)和多次execute (執(zhí)行)機(jī)制,大大的提高了同步效率。以上為反向同步系統(tǒng)的系統(tǒng)結(jié)構(gòu),說(shuō)明了本發(fā)明中應(yīng)用與SQL語(yǔ)句(分解為語(yǔ)法 和參數(shù)),SQL語(yǔ)句和邏輯日志的關(guān)系,應(yīng)用對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作以分解為SQL語(yǔ)法和參數(shù) 的SQL語(yǔ)句來(lái)表示,同時(shí)使用SQL語(yǔ)法和參數(shù)來(lái)生成邏輯日志。相較于現(xiàn)有的數(shù)據(jù)同步方 法,本發(fā)明的同步程序支持應(yīng)用和SQL操作的動(dòng)態(tài)的增加,從而支持了系統(tǒng)進(jìn)行平滑的升 級(jí)。通過(guò)SQL語(yǔ)法和參數(shù)的拆分,大大的減少了數(shù)據(jù)傳輸,提高了同步的執(zhí)行效率。對(duì)于從內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)同步的過(guò)程來(lái)說(shuō),邏輯日志重做是整個(gè)同步的核 心內(nèi)容,有邏輯日志打包,邏輯日志的落地以及邏輯日志在物理數(shù)據(jù)庫(kù)的執(zhí)行等等。
      如圖3所示,其為圖2所示的反向同步系統(tǒng)的反向同步的數(shù)據(jù)流圖,圖3中通過(guò)動(dòng) 態(tài)的邏輯日志來(lái)展示同步的工作模式。1.2數(shù)據(jù)流轉(zhuǎn)數(shù)據(jù)流轉(zhuǎn)主要是表示日志由少到多的收集過(guò)程,從邏輯日志到事務(wù)緩沖(T Buf), 再到應(yīng)用緩沖(App Buf),再到消息隊(duì)列(Queue),到系統(tǒng)緩沖(SysBuf),到日志文件(Log file),最終執(zhí)行到物理數(shù)據(jù)庫(kù)。整個(gè)收集過(guò)程類似于海水的形成,小溪、河流、江和海。首先對(duì)應(yīng)于應(yīng)用進(jìn)程(應(yīng)用1,應(yīng)用2......)的每個(gè)線程關(guān)聯(lián)一個(gè)事務(wù)緩沖區(qū),用
      來(lái)存儲(chǔ)一個(gè)事務(wù)的邏輯日志;對(duì)應(yīng)于每個(gè)應(yīng)用有一個(gè)應(yīng)用緩沖區(qū),用來(lái)存儲(chǔ)該應(yīng)用所有實(shí) 例的日志;然后由每個(gè)應(yīng)用再把邏輯日志存儲(chǔ)到消息隊(duì)列中。反向同步程序從消息隊(duì)列中 獲取應(yīng)用日志并放在系統(tǒng)緩沖區(qū)(SysBuf)中,并把系統(tǒng)緩沖區(qū)中的邏輯日志寫入到日志 文件中。最后同步程序加載并解析日志文件,把邏輯日志在物理數(shù)據(jù)庫(kù)中重做。數(shù)據(jù)的整個(gè)流轉(zhuǎn)過(guò)程,充分利用了 SQL語(yǔ)法的一次pr印are (準(zhǔn)備)和多次 execute (執(zhí)行)機(jī)制。大大的提高了同步效率,減少了數(shù)據(jù)同步的時(shí)間延遲。每條邏輯日 志會(huì)關(guān)聯(lián)一個(gè)SQL語(yǔ)法,在執(zhí)行物理數(shù)據(jù)庫(kù)操作時(shí),首先查找pr印are后的SQL語(yǔ)法,如果 沒(méi)有則進(jìn)行SQL語(yǔ)法的pr印are,然后再進(jìn)行SQL語(yǔ)法execute。通過(guò)SQL語(yǔ)法的延遲,支 持了應(yīng)用和SQL的動(dòng)態(tài)增加。1.3動(dòng)態(tài)同步參考現(xiàn)有的數(shù)據(jù)同步系統(tǒng),如果捕獲的邏輯日志是SQL語(yǔ)句(沒(méi)有動(dòng)態(tài)參數(shù)),那 么系統(tǒng)本身就支持動(dòng)態(tài)的同步。但是現(xiàn)有的這種同步方式一方面增加了記錄邏輯日志量, 浪費(fèi)了大量的磁盤存儲(chǔ)空間;同時(shí)沒(méi)有充分利用數(shù)據(jù)庫(kù)的一次prepare和多次execute機(jī) 制,數(shù)據(jù)同步效率不高,不足以支撐實(shí)時(shí)交易系統(tǒng)應(yīng)用。而在本發(fā)明中,首先通過(guò)把SQL語(yǔ)句拆分成SQL語(yǔ)法和動(dòng)態(tài)參數(shù),邏輯日志由SQL 語(yǔ)法編號(hào)和動(dòng)態(tài)參數(shù)組成。這樣大大的降低了邏輯日志的大小,減少了系統(tǒng)傳輸損耗和磁 盤空間的浪費(fèi)。同時(shí)利用了一次pr印are和多次execute機(jī)制,大大的提高了同步效率,在 執(zhí)行物理數(shù)據(jù)庫(kù)的重做時(shí),首先在管理區(qū)中注冊(cè)的SQL語(yǔ)法中查找準(zhǔn)備后的SQL語(yǔ)法,如果 沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備,然后再執(zhí)行SQL語(yǔ)法對(duì)物理數(shù)據(jù)庫(kù)重做。其次本發(fā)明中應(yīng)用和SQL的動(dòng)態(tài)增加,支持了同步應(yīng)用和對(duì)應(yīng)SQL的變化,支持了 系統(tǒng)的升級(jí)和擴(kuò)展;通過(guò)延遲物理數(shù)據(jù)庫(kù)SQL語(yǔ)法的pr印are,保證了新加入的SQL語(yǔ)法可 以重做。SQL的動(dòng)態(tài)增加和延遲SQL語(yǔ)法的pr印are,共同完成了反向的動(dòng)態(tài)同步。其實(shí)整 個(gè)同步過(guò)程也是一次prepare多次execute。2正向同步在此較佳實(shí)施例中,正向同步系統(tǒng)(正向同步程序)是基于物理數(shù)據(jù)庫(kù)的觸發(fā)器 機(jī)制實(shí)現(xiàn),這是由于物理數(shù)據(jù)庫(kù)的存儲(chǔ)方式和操作方式有別于內(nèi)存數(shù)據(jù)庫(kù)。首先,由于物理 數(shù)據(jù)庫(kù)的本身性能不高,觸發(fā)器本身的性能損耗對(duì)物理數(shù)據(jù)庫(kù)應(yīng)用性能影響不大;其次,物 理數(shù)據(jù)庫(kù)的操作入口較多,前臺(tái)、數(shù)據(jù)庫(kù)終端、應(yīng)用的0CI接口(ORACLE調(diào)用接口)等等都 可以作為物理數(shù)據(jù)庫(kù)的操作入口,因此觸發(fā)器可以作為物理數(shù)據(jù)庫(kù)數(shù)據(jù)變動(dòng)的唯一入口。 當(dāng)物理數(shù)據(jù)庫(kù)的數(shù)據(jù)有變化時(shí),通過(guò)物理數(shù)據(jù)庫(kù)自身提供的觸發(fā)器機(jī)制,將變化的數(shù)據(jù)寫 到物理數(shù)據(jù)庫(kù)的邏輯日志表。然后由正向同步程序(正向同步系統(tǒng))實(shí)時(shí)掃描物理數(shù)據(jù)庫(kù) 的邏輯日志表,并把對(duì)應(yīng)邏輯日志在內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行重做。
      11
      如圖4所示,其為應(yīng)用了本發(fā)明內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法的一 較佳實(shí)施例的正向同步系統(tǒng)的數(shù)據(jù)流圖。在此較佳實(shí)施例中,應(yīng)用(前臺(tái)、數(shù)據(jù)庫(kù)終端、應(yīng) 用的OCI接口等等)對(duì)物理數(shù)據(jù)庫(kù)的操作通過(guò)觸發(fā)器機(jī)制反映到物理數(shù)據(jù)庫(kù)的邏輯日志 表,正向同步程序(正向同步系統(tǒng))通過(guò)接口表與物理數(shù)據(jù)庫(kù)進(jìn)行聯(lián)系,接口表由物理數(shù)據(jù) 庫(kù)的邏輯日志表及SQL管理區(qū)的SQL語(yǔ)法表和SQL參數(shù)表組成。從物理數(shù)據(jù)庫(kù)到內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)同步時(shí),按照本發(fā)明的步驟1,根據(jù)物理數(shù)據(jù)庫(kù) 的日志文件,在SQL管理區(qū)中設(shè)置SQL語(yǔ)法表和SQL參數(shù)表,分別用來(lái)注冊(cè)操作物理數(shù)據(jù)庫(kù) 的SQL語(yǔ)法和SQL參數(shù);然后按照本發(fā)明步驟2,根據(jù)物理數(shù)據(jù)庫(kù)的日志文件,設(shè)置邏輯日 志表,當(dāng)物理數(shù)據(jù)庫(kù)的數(shù)據(jù)有變化時(shí),通過(guò)物理數(shù)據(jù)庫(kù)提供的觸發(fā)器機(jī)制,將變化的數(shù)據(jù)寫 到邏輯日志表;按照本發(fā)明步驟3,實(shí)時(shí)掃描邏輯日志表,根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù), 把步驟2對(duì)應(yīng)的邏輯日志在內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行重做。該較佳實(shí)施例中,接口表的設(shè)計(jì)如下2.1接口表設(shè)計(jì)2. 1.1邏輯日志表
      權(quán)利要求
      一種內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,包括步驟1、以SQL操作的形式表示對(duì)源數(shù)據(jù)庫(kù)的操作,將SQL操作分解為SQL語(yǔ)法和相應(yīng)的SQL參數(shù),注冊(cè)操作源數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù),并將注冊(cè)的SQL語(yǔ)法和SQL參數(shù)存儲(chǔ)于SQL管理區(qū)中加以管理;步驟2、對(duì)于源數(shù)據(jù)庫(kù)的數(shù)據(jù)變動(dòng),以SQL語(yǔ)法結(jié)合SQL參數(shù)的形式生成邏輯日志;步驟3、根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志在目的數(shù)據(jù)庫(kù)重做。
      2.如權(quán)利要求1所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,步 驟3中,每條邏輯日志關(guān)聯(lián)一個(gè)SQL語(yǔ)法,在執(zhí)行目的數(shù)據(jù)庫(kù)的重做時(shí),首先通過(guò)管理區(qū)中 注冊(cè)的SQL語(yǔ)法查找準(zhǔn)備后的SQL語(yǔ)法,如果沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備,然后再執(zhí)行SQL 語(yǔ)法對(duì)目的數(shù)據(jù)庫(kù)重做。
      3.如權(quán)利要求2所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,對(duì) 于從內(nèi)存數(shù)據(jù)庫(kù)到物理數(shù)據(jù)庫(kù)的數(shù)據(jù)同步步驟1中,當(dāng)系統(tǒng)中能夠操作內(nèi)存數(shù)據(jù)庫(kù)的應(yīng)用進(jìn)程開(kāi)始運(yùn)行時(shí),該應(yīng)用進(jìn)程首先注 冊(cè)SQL語(yǔ)法和SQL參數(shù)到內(nèi)存數(shù)據(jù)庫(kù),同時(shí)生成一份拷貝存儲(chǔ)于SQL管理區(qū)中,該拷貝供執(zhí) 行物理數(shù)據(jù)庫(kù)的日志重做用;步驟2中,捕獲系統(tǒng)中的應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作,以SQL語(yǔ)法結(jié)合SQL參數(shù)的形 式生成邏輯日志;步驟3中,根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志在物理數(shù)據(jù)庫(kù)中重做。
      4.如權(quán)利要求3所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,使 每個(gè)應(yīng)用進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)的操作對(duì)應(yīng)一個(gè)SQL操作組,每個(gè)SQL操作組包括若干個(gè)SQL 操作,每個(gè)SQL操作由SQL語(yǔ)法和SQL參數(shù)組組成。
      5.如權(quán)利要求4所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,還 包括對(duì)于系統(tǒng)中所有需要進(jìn)行數(shù)據(jù)同步的應(yīng)用進(jìn)程,建立應(yīng)用名和對(duì)應(yīng)的應(yīng)用進(jìn)程的關(guān) 系、應(yīng)用進(jìn)程和對(duì)應(yīng)的SQL操作組的關(guān)系。
      6.如權(quán)利要求3所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,步 驟2中生成邏輯日志后,系統(tǒng)還對(duì)生成的邏輯日志進(jìn)行收集對(duì)應(yīng)于應(yīng)用進(jìn)程的每個(gè)線程 關(guān)聯(lián)一個(gè)事務(wù)緩沖區(qū),用來(lái)存儲(chǔ)一個(gè)事務(wù)所生成的邏輯日志;對(duì)應(yīng)于每個(gè)應(yīng)用進(jìn)程關(guān)聯(lián)一 個(gè)應(yīng)用緩沖區(qū),用來(lái)存儲(chǔ)該應(yīng)用進(jìn)程所有實(shí)例所生成的邏輯日志;然后每個(gè)應(yīng)用進(jìn)程再把 所生成的邏輯日志存儲(chǔ)到消息隊(duì)列中;從消息隊(duì)列中獲取應(yīng)用進(jìn)程的邏輯日志并放在系統(tǒng) 緩沖區(qū)中,并把系統(tǒng)緩沖區(qū)中的邏輯日志寫入到內(nèi)存數(shù)據(jù)庫(kù)的日志文件中。
      7.如權(quán)利要求6所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,步 驟3中,首先加載并解析內(nèi)存數(shù)據(jù)庫(kù)的日志文件,通過(guò)解析日志文件得到步驟2中所生成的 邏輯日志,然后根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),把生成的邏輯日志在物理數(shù)據(jù)庫(kù)中重做。
      8.如權(quán)利要求3所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,步 驟3中,在執(zhí)行物理數(shù)據(jù)庫(kù)的重做時(shí),首先在管理區(qū)中注冊(cè)的SQL語(yǔ)法中查找準(zhǔn)備后的SQL 語(yǔ)法,如果沒(méi)有則進(jìn)行SQL語(yǔ)法的準(zhǔn)備,然后再執(zhí)行SQL語(yǔ)法對(duì)物理數(shù)據(jù)庫(kù)重做。
      9.如權(quán)利要求2所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,對(duì) 于從物理數(shù)據(jù)庫(kù)到內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)同步步驟1中,根據(jù)物理數(shù)據(jù)庫(kù)的日志文件,在SQL管理區(qū)中設(shè)置SQL語(yǔ)法表和SQL參數(shù)表, 分別用來(lái)注冊(cè)操作物理數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù);步驟2中,根據(jù)物理數(shù)據(jù)庫(kù)的日志文件,設(shè)置邏輯日志表,當(dāng)物理數(shù)據(jù)庫(kù)的數(shù)據(jù)有變化 時(shí),通過(guò)物理數(shù)據(jù)庫(kù)提供的觸發(fā)器機(jī)制,將變化的數(shù)據(jù)寫到邏輯日志表;步驟3中,實(shí)時(shí)掃描邏輯日志表,根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),把步驟2對(duì)應(yīng)的邏 輯日志在內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行重做。
      10.如權(quán)利要求9所述的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,其特征在于,步 驟3中,在執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的重做時(shí)步驟3. 1、獲取到邏輯日志后,根據(jù)SQL語(yǔ)法表獲取準(zhǔn)備后的SQL語(yǔ)法; 步驟3. 2、如果獲取準(zhǔn)備后的SQL語(yǔ)法成功,直接執(zhí)行步驟3. 3 ;如果獲取準(zhǔn)備后的SQL 語(yǔ)法失敗,則在SQL語(yǔ)法表中獲取SQL語(yǔ)法,然后執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的準(zhǔn)備操作,并在SQL參 數(shù)表中獲取參數(shù),然后執(zhí)行內(nèi)存數(shù)據(jù)庫(kù)的參數(shù)綁定操作,從而完成內(nèi)存數(shù)據(jù)庫(kù)的重做;步驟3. 3、根據(jù)邏輯日志拆分出所有的SQL參數(shù),依次設(shè)置到SQL語(yǔ)法中,然后執(zhí)行內(nèi)存 數(shù)據(jù)庫(kù)的重做。
      全文摘要
      本發(fā)明涉及一種內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法,包括步驟1、以SQL操作的形式表示對(duì)源數(shù)據(jù)庫(kù)的操作,將SQL操作分解為SQL語(yǔ)法和相應(yīng)的SQL參數(shù),注冊(cè)操作源數(shù)據(jù)庫(kù)的SQL語(yǔ)法和SQL參數(shù),并將注冊(cè)的SQL語(yǔ)法和SQL參數(shù)存儲(chǔ)于SQL管理區(qū)中加以管理;步驟2、對(duì)于源數(shù)據(jù)庫(kù)的數(shù)據(jù)變動(dòng),以SQL語(yǔ)法結(jié)合SQL參數(shù)的形式生成邏輯日志;步驟3、根據(jù)注冊(cè)的SQL語(yǔ)法和SQL參數(shù),將步驟2中的邏輯日志在目的數(shù)據(jù)庫(kù)重做。本發(fā)明的內(nèi)存數(shù)據(jù)庫(kù)和物理數(shù)據(jù)庫(kù)間的數(shù)據(jù)同步方法利用了一次prepare和多次execute機(jī)制,大大的提高了同步效率;降低了邏輯日志的大小,減少了系統(tǒng)傳輸損耗和磁盤空間的浪費(fèi);支持了同步應(yīng)用和對(duì)應(yīng)SQL的變化,支持了系統(tǒng)的升級(jí)和擴(kuò)展。
      文檔編號(hào)G06F17/30GK101944114SQ20101028523
      公開(kāi)日2011年1月12日 申請(qǐng)日期2010年9月16日 優(yōu)先權(quán)日2010年9月16日
      發(fā)明者楊東洋, 汪東升, 蔣述庭 申請(qǐng)人:深圳天源迪科信息技術(shù)股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1