專利名稱:一種nosql與rdbms的數(shù)據(jù)庫同步方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種NOSQL與RDBMS的數(shù)據(jù)庫同步方法和系統(tǒng)。
背景技術(shù):
典型的應(yīng)用架構(gòu)是通過Action層接收用戶請(qǐng)求處理層,如用戶在交互界面上點(diǎn)擊“保存”按鈕。通過Service層(業(yè)務(wù)操作/事務(wù)處理層)如插入用戶數(shù)據(jù),涉及到多個(gè)數(shù)據(jù)原子操作。還通過Dao層(數(shù)據(jù)原子操作處理層)如插入一條數(shù)據(jù)。其操作性能和處理時(shí)間依賴RDBMS數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的RDBMS數(shù)據(jù)庫(relationaldatabasemanagement system,關(guān)系數(shù)據(jù)庫)在應(yīng)付web2. 0網(wǎng)站時(shí),特別是超大規(guī)模和高并發(fā)的web2. 0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,比如l、High performance-對(duì)數(shù)據(jù)庫高并發(fā)讀寫的需求;2、Huge Storage-對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問的需求;3、High ScalabiIity&&High Availability-對(duì)數(shù)據(jù)庫的高可擴(kuò)展性和高可用性的需求;對(duì)于上述的三個(gè)技術(shù)問題,NOSQL數(shù)據(jù)庫(NoSQL (NoSQL=Not Only SQL,非關(guān)系數(shù)據(jù)庫)能夠很好的解決。但是NOSQL數(shù)據(jù)庫無法有效的進(jìn)行數(shù)據(jù)復(fù)雜計(jì)算和數(shù)據(jù)備份,而且管理復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提出一種NOSQL與RDBMS的數(shù)據(jù)庫同步方法,旨在解決現(xiàn)有技術(shù)中RDBMS數(shù)據(jù)庫無法實(shí)現(xiàn)高并發(fā)讀寫、海量數(shù)據(jù)高效存儲(chǔ)的技術(shù)問題,還用于解決RDBMS數(shù)據(jù)庫擴(kuò)展性和可用性差的技術(shù)問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種NOSQL與RDBMS的數(shù)據(jù)庫同步方法,所述方法包括步驟獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。本發(fā)明實(shí)施例的另一目的在于提出一種NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng),所述系統(tǒng)包括獲取請(qǐng)求模塊、第一轉(zhuǎn)換模塊、第一存儲(chǔ)模塊、獲取變更信息模塊、第二轉(zhuǎn)換模塊和第二存儲(chǔ)模塊;
所述獲取請(qǐng)求模塊,與所述第一轉(zhuǎn)換模塊相連,用于獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;所述第一轉(zhuǎn)換模塊,與所述獲取請(qǐng)求模塊和第一存儲(chǔ)模塊相連,用于根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;所述第一存儲(chǔ)模塊,與所述第一轉(zhuǎn)換模塊和獲取變更信息模塊相連,用于將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;所述獲取變更信息模塊,與所述第一存儲(chǔ)模塊和第二轉(zhuǎn)換模塊相連,用于獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;所述第二轉(zhuǎn)換模塊,與所述獲取變更信息模塊和第二存儲(chǔ)模塊相連,用于將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;所述第二存儲(chǔ)模塊,與所述第二轉(zhuǎn)換模塊相連,用于調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。本發(fā)明通過將數(shù)據(jù)操作方法所需要保存的JAVA格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JSON格式,再將JSON格式實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;當(dāng)檢測(cè)到NOSQL數(shù)據(jù)庫有更新記錄,就將所述JSON格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JAVA格式,再通過所述JAVA格式實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法將所述JAVA格式實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。為現(xiàn)有系統(tǒng)從RDBMS存儲(chǔ)方式向NOSQL存儲(chǔ)方式提供良好過渡,使得現(xiàn)有系統(tǒng)只需要簡單修改數(shù)據(jù)存儲(chǔ)層即可體驗(yàn)NOSQL帶來的高性能,且無需修改業(yè)務(wù)代碼,還保留了 RDBMS存儲(chǔ)支持,使得數(shù)據(jù)完整性得到良好的保障。
圖1是本發(fā)明NOSQL與RDBMS的數(shù)據(jù)庫同步方法第一優(yōu)選實(shí)施例流程圖;圖2是本發(fā)明NOSQL與RDBMS的數(shù)據(jù)庫同步方法第二優(yōu)選實(shí)施例流程圖;圖3是本發(fā)明NOSQL與RDBMS的數(shù)據(jù)庫同步方法第三優(yōu)選實(shí)施例流程圖;圖4是本發(fā)明NOSQL與RDBMS的數(shù)據(jù)庫同步方法第四優(yōu)選實(shí)施例流程圖;圖5是本發(fā)明NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。應(yīng)當(dāng)理解,此處所描寫的具體實(shí)施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明通過將數(shù)據(jù)操作方法所需要保存的JAVA格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JSON格式,再將JSON格式實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;當(dāng)檢測(cè)到NOSQL數(shù)據(jù)庫有更新記錄,就將所述JSON格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JAVA格式,再通過所述JAVA格式實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法將所述JAVA格式實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。為現(xiàn)有系統(tǒng)從RDBMS存儲(chǔ)方式向NOSQL存儲(chǔ)方式提供良好過渡,使得現(xiàn)有系統(tǒng)只需要簡單修改數(shù)據(jù)存儲(chǔ)層即可體驗(yàn)NOSQL帶來的高性能,且無需修改業(yè)務(wù)代碼,還保留了 RDBMS存儲(chǔ)支持,使得數(shù)據(jù)完整性得到良好的保障。
實(shí)施例一圖1是本發(fā)明NOSQL數(shù)據(jù)庫與RDBMS數(shù)據(jù)庫的同步方法第一優(yōu)選實(shí)施例流程圖。S101,獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;所述數(shù)據(jù)操作方法包括修改方法和刪除方法,還可以包括新增方法等;S102,根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象,并將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;所述第一實(shí)體實(shí)例對(duì)象為java格式的實(shí)體實(shí)例對(duì)象;所述第二實(shí)體實(shí)例對(duì)象為JSON (JavaScript Object Notation, —種輕量級(jí)的數(shù)據(jù)交換格式)格式的實(shí)體實(shí)例對(duì)象;可以使用google的JSON開源組件Gson進(jìn)行格式轉(zhuǎn)換;S103,獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;實(shí)時(shí)或定時(shí)監(jiān)控NOSQL數(shù)據(jù)庫,檢測(cè)是否有變更的第二實(shí)體實(shí)例對(duì)象,若是則獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;所述變更的第二實(shí)體實(shí)例對(duì)象包括增加、刪除、修改的第二實(shí)體實(shí)例對(duì)象;S104,將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;S105,調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。從而能夠通過異步的方式將保存在NOSQL數(shù)據(jù)庫中的實(shí)體實(shí)例對(duì)象數(shù)據(jù)通過hibernate開源組件保存到RDBMS數(shù)據(jù)庫中。實(shí)施例二圖2是本發(fā)明NOSQL數(shù)據(jù)庫與RDBMS數(shù)據(jù)庫的同步方法第二優(yōu)選實(shí)施例流程圖。S201,獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;S202,判斷所述請(qǐng)求所需調(diào)用的數(shù)據(jù)操作方法是否具有公共權(quán)限且預(yù)置了攔截注解標(biāo)識(shí),若是則進(jìn)入步驟S203 ;若否則進(jìn)入步驟S208 ;所述公共權(quán)限指public權(quán)限;所述攔截注解標(biāo)識(shí)是預(yù)置在需要攔截的數(shù)據(jù)操作方法中的起標(biāo)識(shí)性作用的標(biāo)識(shí)性信息;本步驟可以通過Spring AOP處理方式用于預(yù)置需要攔截的數(shù)據(jù)操作方法和攔截后的處理邏輯,未經(jīng)攔截的數(shù)據(jù)操作方法按照現(xiàn)有技術(shù)公知流程進(jìn)行處理所述請(qǐng)求;S203,將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;S204,根據(jù)NOSQL數(shù)據(jù)庫中與所述數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;S205,獲取所述NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;S206,將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;S207,調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫;S208,響應(yīng)所述請(qǐng)求;即直接通過java api調(diào)用所述數(shù)據(jù)操作方法(不需要攔截)。
實(shí)施例三圖3是本發(fā)明NOSQL數(shù)據(jù)庫與RDBMS數(shù)據(jù)庫的同步方法第三優(yōu)選實(shí)施例流程圖。S301,獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;S302,判斷所述請(qǐng)求所需調(diào)用的數(shù)據(jù)操作方法是否具有公共權(quán)限且預(yù)置了攔截注解標(biāo)識(shí),若是則進(jìn)入步驟S303 ;若否則進(jìn)入步驟S313 ;S303,獲取所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象;S304,獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值;S305,存儲(chǔ)所述哈希值與所述數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系;所述對(duì)應(yīng)關(guān)系可以存儲(chǔ)到方法注冊(cè)表中;所述方法注冊(cè)表為key (關(guān)鍵詞)、value (關(guān)鍵詞對(duì)應(yīng)的值)形式,即保存或讀取實(shí)體實(shí)例對(duì)象和dao層方法的對(duì)應(yīng)關(guān)系,主要用來收集實(shí)體實(shí)例對(duì)象數(shù)據(jù)的保存行為;所述哈希值(hash值)由JAVA Object hashCode方法計(jì)算得出,或JAVAJDK定制的底層API計(jì)算得出,或者調(diào)用實(shí)體實(shí)例對(duì)象的hashcode (hashCode是jdk根據(jù)對(duì)象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值)方法獲取到所述hash值;S306,將所述第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;S307,根據(jù)NOSQL數(shù)據(jù)庫中與所述數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;可以通過調(diào)用tokyo tyrant (Tokyo Cabinet 是 Mikio Hirabayashi 開發(fā)的一款DBM數(shù)據(jù)庫)提供的HTTP接口(或tokyo cabinet提供的網(wǎng)絡(luò)異步處理接口)進(jìn)行NOSQL的相關(guān)處理操作,所述處理操作包括所有保存操作;S308,獲取所述NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;S309,將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;S310,獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值;S311,根據(jù)所述對(duì)應(yīng)關(guān)系獲取所述哈希值對(duì)應(yīng)的數(shù)據(jù)操作方法;通過存儲(chǔ)哈希值與數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系,能夠快速定位到所述數(shù)據(jù)操作方法;S312,調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫;S313,響應(yīng)所述請(qǐng)求。實(shí)施例四圖4是本發(fā)明NOSQL數(shù)據(jù)庫與RDBMS數(shù)據(jù)庫的同步方法第四優(yōu)選實(shí)施例流程圖。S401,獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求;S402,判斷所述請(qǐng)求所需調(diào)用的數(shù)據(jù)操作方法是否具有公共權(quán)限且預(yù)置了攔截注解標(biāo)識(shí),若是則進(jìn)入步驟S403 ;若否則進(jìn)入步驟S415 ;S403,獲取所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象;S404,獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值;S405,存儲(chǔ)所述哈希值與所述數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系;S406,獲取所述數(shù)據(jù)操作方法中所預(yù)置的操作類型;S407,根據(jù)所述操作類型獲取NOSQL數(shù)據(jù)庫中與所述數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法;攔截注解標(biāo)識(shí)描述了所述處理方法的一系列處理行為,其中操作類型operation屬性明確指出需要做出的處理操作,如取值為’add’的時(shí)候是新增,’update’的時(shí)候是更新,’ del’的時(shí)候是刪除,上述處理操作都是操作NOSQL數(shù)據(jù)庫中保存的實(shí)體實(shí)例對(duì)象的行為;S408,將所述第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;S409,根據(jù)所述處理方法將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;S410,獲取所述NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象;S411,將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象;S412,獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值;S413,根據(jù)所述哈希值獲取所述哈希值對(duì)應(yīng)的數(shù)據(jù)操作方法;S414,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫;S415,響應(yīng)所述請(qǐng)求。為便于理解,舉例說明,通過Spring AOP攔截方式注入到各種應(yīng)用架構(gòu)中,通過java注解方式聲明需要攔截的數(shù)據(jù)操作方法,并在所述數(shù)據(jù)操作方法中預(yù)置攔截注解標(biāo)識(shí)和操作類型;AOP攔截處理樣例代碼如下
權(quán)利要求
1.ー種NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述方法包括步驟 獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求; 根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象; 將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫; 獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象; 將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象; 調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求I所述的NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述“將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫”之后還包括步驟 獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值; 存儲(chǔ)所述哈希值與所述數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系; 所述步驟“將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象”之后還包括步驟 獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值; 根據(jù)所述對(duì)應(yīng)關(guān)系獲取所述哈希值對(duì)應(yīng)的數(shù)據(jù)操作方法。
3.根據(jù)權(quán)利要求I或2所述的NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述步驟“將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫”具體為 根據(jù)NOSQL數(shù)據(jù)庫中與數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫。
4.根據(jù)權(quán)利要求3所述的NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述步驟“存儲(chǔ)所述哈希值與所述數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系”之后還包括步驟 獲取所述數(shù)據(jù)操作方法中所預(yù)置的操作類型; 根據(jù)所述操作類型獲取NOSQL數(shù)據(jù)庫中與所述數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法。
5.根據(jù)權(quán)利要求4所述的NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述“根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象”包括 判斷所述請(qǐng)求所需調(diào)用的數(shù)據(jù)操作方法是否具有公共權(quán)限且預(yù)置了攔截注解標(biāo)識(shí),若是則將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;若否則響應(yīng)所述請(qǐng)求。
6.根據(jù)權(quán)利要求5所述的NOSQL與RDBMS的數(shù)據(jù)庫同步方法,其特征在于,所述第一實(shí)體實(shí)例對(duì)象為java格式的實(shí)體實(shí)例對(duì)象; 所述第二實(shí)體實(shí)例對(duì)象為JSON格式的實(shí)體實(shí)例對(duì)象。
7.—種NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述系統(tǒng)包括獲取請(qǐng)求模塊、第一轉(zhuǎn)換模塊、第一存儲(chǔ)模塊、獲取變更信息模塊、第二轉(zhuǎn)換模塊和第二存儲(chǔ)模塊; 所述獲取請(qǐng)求模塊,與所述第一轉(zhuǎn)換模塊相連,用于獲取調(diào)用數(shù)據(jù)操作方法的請(qǐng)求; 所述第一轉(zhuǎn)換模塊,與所述獲取請(qǐng)求模塊和第一存儲(chǔ)模塊相連,用于根據(jù)所述請(qǐng)求將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象;所述第一存儲(chǔ)模塊,與所述第一轉(zhuǎn)換模塊和獲取變更信息模塊相連,用于將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫; 所述獲取變更信息模塊,與所述第一存儲(chǔ)模塊和第二轉(zhuǎn)換模塊相連,用于獲取NOSQL數(shù)據(jù)庫中變更的第二實(shí)體實(shí)例對(duì)象; 所述第二轉(zhuǎn)換模塊,與所述獲取變更信息模塊和第二存儲(chǔ)模塊相連,用于將所述變更的第二實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第一實(shí)體實(shí)例對(duì)象; 所述第二存儲(chǔ)模塊,與所述第二轉(zhuǎn)換模塊相連,用于調(diào)用所述第一實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法,通過所述數(shù)據(jù)操作方法將所述第一實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求7所述的NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述系統(tǒng)還包括第一哈希模塊、第三存儲(chǔ)模塊、第二哈希模塊和獲取操作方法模塊; 所述第一轉(zhuǎn)換模塊還用于將第一實(shí)體實(shí)例對(duì)象發(fā)送到所述第一哈希模塊; 所述第一哈希模塊,與所述第一轉(zhuǎn)換模塊和第三存儲(chǔ)模塊相連,用于接收所述第一轉(zhuǎn)換模塊發(fā)送的第一實(shí)體實(shí)例對(duì)象,并獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值; 所述第三存儲(chǔ)模塊,與所述第一哈希模塊和獲取操作方法模塊相連,用于存儲(chǔ)所述哈希值與所述數(shù)據(jù)操作方法的對(duì)應(yīng)關(guān)系; 所述第二轉(zhuǎn)換模塊,還用于將轉(zhuǎn)換后的第一實(shí)體實(shí)例對(duì)象發(fā)送到所述第二哈希模塊;所述第二哈希模塊,與所述第二轉(zhuǎn)換模塊和獲取操作方法模塊相連,用于接收所述第ニ轉(zhuǎn)換模塊發(fā)送的第一實(shí)體實(shí)例對(duì)象,并獲取所述第一實(shí)體實(shí)例對(duì)象的哈希值; 所述獲取操作方法模塊,與所述第三存儲(chǔ)模塊、第二哈希模塊和第二存儲(chǔ)模塊相連,用于根據(jù)所述對(duì)應(yīng)關(guān)系獲取所述哈希值對(duì)應(yīng)的數(shù)據(jù)操作方法。
9.根據(jù)權(quán)利要求7或8所述的NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述系統(tǒng)還包括獲取操作類型模塊和獲取處理方法模塊; 所述第三存儲(chǔ)模塊還用于將所述數(shù)據(jù)操作方法發(fā)送到所述獲取操作類型模塊; 所述獲取操作類型模塊,與所述第三存儲(chǔ)模塊和獲取處理方法模塊相連,用于接收所述第三存儲(chǔ)模塊發(fā)送的數(shù)據(jù)操作方法,并獲取所述數(shù)據(jù)操作方法中所預(yù)置的操作類型;所述獲取處理方法模塊,與所述獲取操作類型模塊和第一存儲(chǔ)模塊相連,用于根據(jù)所述操作類型獲取NOSQL數(shù)據(jù)庫中與所述數(shù)據(jù)操作方法對(duì)應(yīng)的處理方法; 所述第一存儲(chǔ)模塊還用于根據(jù)所述處理方法將所述第二實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫。
10.根據(jù)權(quán)利要求9所述的NOSQL與RDBMS的數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述第一轉(zhuǎn)換模塊包括判斷單元、轉(zhuǎn)換單元和響應(yīng)單元; 所述判斷単元,與所述轉(zhuǎn)換単元和響應(yīng)單元相連,用于判斷所述請(qǐng)求所需調(diào)用的數(shù)據(jù)操作方法是否具有公共權(quán)限且預(yù)置了攔截注解標(biāo)識(shí),若是則發(fā)送轉(zhuǎn)換指令到所述轉(zhuǎn)換單元;若否則發(fā)送響應(yīng)指令到所述響應(yīng)單元; 所述轉(zhuǎn)換単元,與所述判斷単元和第一存儲(chǔ)模塊相連,用于接收所述判斷單元發(fā)送的轉(zhuǎn)換指令,根據(jù)所述轉(zhuǎn)換指令將所述數(shù)據(jù)操作方法所需要保存的第一實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為第二實(shí)體實(shí)例對(duì)象; 所述響應(yīng)単元,與所述判斷単元相連,用于接收所述判斷單元發(fā)送的響應(yīng)指令,根據(jù)所述響應(yīng)指令響應(yīng)所述請(qǐng)求。
全文摘要
本發(fā)明公開了一種NOSQL與RDBMS的數(shù)據(jù)庫同步方法和系統(tǒng)。本發(fā)明通過將數(shù)據(jù)操作方法所需要保存的JAVA格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JSON格式,再將JSON格式實(shí)體實(shí)例對(duì)象存儲(chǔ)到NOSQL數(shù)據(jù)庫;當(dāng)檢測(cè)到NOSQL數(shù)據(jù)庫有更新記錄,就將所述JSON格式實(shí)體實(shí)例對(duì)象轉(zhuǎn)換為JAVA格式,再通過所述JAVA格式實(shí)體實(shí)例對(duì)象對(duì)應(yīng)的數(shù)據(jù)操作方法將所述JAVA格式實(shí)體實(shí)例對(duì)象保存到RDBMS數(shù)據(jù)庫。為現(xiàn)有系統(tǒng)從RDBMS存儲(chǔ)方式向NOSQL存儲(chǔ)方式提供良好過渡,使得現(xiàn)有系統(tǒng)只需要簡單修改數(shù)據(jù)存儲(chǔ)層即可體驗(yàn)NOSQL帶來的高性能,且無需修改業(yè)務(wù)代碼,還保留了RDBMS存儲(chǔ)支持,使得數(shù)據(jù)完整性得到良好的保障。
文檔編號(hào)G06F17/30GK102982130SQ20121046072
公開日2013年3月20日 申請(qǐng)日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者阮航 申請(qǐng)人:深圳市融創(chuàng)天下科技股份有限公司