專利名稱:非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)同步領(lǐng)域,尤其涉及一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法。
背景技術(shù):
互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,對(duì)數(shù)據(jù)庫(kù)提出了更高的需求,例如:對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫的需求(High performance);對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求(HugeStorage);對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求(High Scalability & HighAvailability)。而傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)已經(jīng)不能滿足互聯(lián)網(wǎng)web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站的這些需求。非關(guān)系型數(shù)據(jù)庫(kù)是泛指不同于關(guān)系型傳統(tǒng)數(shù)據(jù)庫(kù)的一類數(shù)據(jù)庫(kù),在此類數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)沒(méi)有固定的模式,通常沒(méi)有聯(lián)合(join)操作,可以滿足上述web2.0網(wǎng)站對(duì)數(shù)據(jù)庫(kù)的新需求,現(xiàn)在成了一個(gè)極其熱門的新領(lǐng)域。但同時(shí)也存在很多新的設(shè)計(jì)的難點(diǎn),例如:1.由于遠(yuǎn)程間網(wǎng)絡(luò)的不穩(wěn)定性,需要在遠(yuǎn)程網(wǎng)絡(luò)兩端同時(shí)安裝兩套非關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng);2.如何對(duì)非關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行遠(yuǎn)程雙寫同步以保持?jǐn)?shù)據(jù)一致性成為一個(gè)很重要的問(wèn)題,雙寫同步是指在對(duì)兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)同時(shí)進(jìn)行插入和修改數(shù)據(jù)時(shí),保持多個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)一致,而傳統(tǒng)的非關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的同步機(jī)制,包括主從同步和副本集技術(shù),已不能再滿足需要。因此,需要一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及方法,以解決在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中非關(guān)系型數(shù)據(jù)庫(kù)無(wú)法進(jìn)行雙寫同步的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法,以解決在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中非關(guān)系型數(shù)據(jù)庫(kù)無(wú)法進(jìn)行雙寫同步的問(wèn)題。為解決上述問(wèn)題,本發(fā)明提供一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),包括:本地非關(guān)系型數(shù)據(jù)庫(kù),用于保存本地業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日志;遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù),用于保存遠(yuǎn)程業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日志;本地同步管理器,用于抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,以及將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比以對(duì)本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行更新;遠(yuǎn)程同步管理器,用于抽取所述本地?cái)?shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,以及將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比以對(duì)遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行更新。進(jìn)一步的,所述非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)還包括:本地同步數(shù)據(jù)庫(kù),用于保存所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的本地?cái)?shù)據(jù)日志、本地同步管理器所抽取的遠(yuǎn)程數(shù)據(jù)日志以及其本地?cái)?shù)字簽名;遠(yuǎn)程同步數(shù)據(jù)庫(kù),用于保存所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志、遠(yuǎn)程同步管理器所抽取的本地?cái)?shù)據(jù)日志以及其遠(yuǎn)程數(shù)字簽名。進(jìn)一步的,所述本地非關(guān)系型數(shù)據(jù)庫(kù)的本地?cái)?shù)據(jù)日志為按時(shí)間階段依次產(chǎn)生的本地階段性日志;所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)日志為與所述本地階段性日志所在的相同時(shí)間階段產(chǎn)生的遠(yuǎn)程階段性日志。進(jìn)一步的,所述本地同步管理器包括:本地?cái)?shù)據(jù)抽取模塊,用于抽取所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志;本地?cái)?shù)據(jù)處理模塊,用于為抽取出的遠(yuǎn)程數(shù)據(jù)日志產(chǎn)生本地?cái)?shù)字簽名,并將所述抽取出的遠(yuǎn)程數(shù)據(jù)日志及其本地?cái)?shù)字簽名存入所述本地同步數(shù)據(jù)庫(kù);本地?cái)?shù)據(jù)同步模塊,用于對(duì)比所述抽取出的遠(yuǎn)程數(shù)據(jù)日志與所述本地?cái)?shù)據(jù)日志,將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到本地非關(guān)系型數(shù)據(jù)庫(kù)中,并生成本地同步執(zhí)行記錄。進(jìn)一步的,所述本地?cái)?shù)據(jù)處理模塊還用于在完成所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)到所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步后,清理所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志、遠(yuǎn)程數(shù)據(jù)日志及其本地?cái)?shù)字簽名。進(jìn)一步的,所述本地同步管理器還包括:本地?cái)?shù)據(jù)過(guò)濾模塊,用于對(duì)所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志進(jìn)行識(shí)另IJ,過(guò)濾掉重復(fù)的遠(yuǎn)程數(shù)據(jù)日志,以減少所述本地?cái)?shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作;本地?cái)?shù)據(jù)重放模塊,用于查詢所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條遠(yuǎn)程數(shù)據(jù)日志;若否,則重新執(zhí)行該條遠(yuǎn)程數(shù)據(jù)日志,并記錄到所述本地同步執(zhí)行記錄中。進(jìn)一步的,所述遠(yuǎn)程同步管理器包括:遠(yuǎn)程數(shù)據(jù)抽取模塊,用于抽取所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的本地?cái)?shù)據(jù)日志;遠(yuǎn)程數(shù)據(jù)處理模塊,用于為抽取出的本地?cái)?shù)據(jù)日志產(chǎn)生遠(yuǎn)程數(shù)字簽名,并將所述抽取出的本地?cái)?shù)據(jù)日志及其遠(yuǎn)程數(shù)字簽名存入所述遠(yuǎn)程同步數(shù)據(jù)庫(kù);遠(yuǎn)程數(shù)據(jù)同步模塊,用于對(duì)比所述抽取出的本地?cái)?shù)據(jù)日志與所述遠(yuǎn)程數(shù)據(jù)日志,將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,并生成遠(yuǎn)程同步執(zhí)行記錄。進(jìn)一步的,所述遠(yuǎn)程數(shù)據(jù)處理模塊還用于在完成所述本地非關(guān)系型數(shù)據(jù)庫(kù)到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步后,清理所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志、本地?cái)?shù)據(jù)日志及其遠(yuǎn)程數(shù)字簽名。進(jìn)一步的,所述遠(yuǎn)程同步管理器還包括:遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊,用于對(duì)所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志進(jìn)行識(shí)另IJ,過(guò)濾掉重復(fù)的本地?cái)?shù)據(jù)日志,以減少所述遠(yuǎn)程數(shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作;遠(yuǎn)程數(shù)據(jù)重放模塊,用于查詢所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條本地?cái)?shù)據(jù)日志;若否,則重新執(zhí)行該條本地?cái)?shù)據(jù)日志,并記錄到所述遠(yuǎn)程同步執(zhí)行記錄中。相應(yīng)的,本發(fā)明還提供一種應(yīng)用上述非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的雙寫同步方法,包括:所述本地非關(guān)系型數(shù)據(jù)庫(kù)保存本地業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日志;
所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)保存遠(yuǎn)程業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日志;所述本地同步管理器抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比,同步所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的本地?cái)?shù)據(jù)日志;所述遠(yuǎn)程同步管理器抽取所述本地?cái)?shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比,同步所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的遠(yuǎn)程數(shù)據(jù)日志。進(jìn)一步的,保存所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的本地?cái)?shù)據(jù)日志、本地同步管理器所抽取的遠(yuǎn)程數(shù)據(jù)日志及其本地?cái)?shù)字簽名到一本地同步數(shù)據(jù)庫(kù)中;保存所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志、遠(yuǎn)程同步管理器所抽取的本地?cái)?shù)據(jù)日志其遠(yuǎn)程數(shù)字簽名到一遠(yuǎn)程同步數(shù)據(jù)庫(kù)。與現(xiàn)有技術(shù)相比,本發(fā)明提供的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法,通過(guò)所述本地同步管理器將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)所述遠(yuǎn)程同步管理器將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中本地非關(guān)系型數(shù)據(jù)庫(kù)和遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的雙寫同步操作;進(jìn)一步的,通過(guò)所述本地?cái)?shù)據(jù)過(guò)濾模塊和遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊避免了同步時(shí)大量重復(fù)日志的產(chǎn)生,節(jié)約了存儲(chǔ)資源;通過(guò)本地?cái)?shù)據(jù)重放模塊和遠(yuǎn)程數(shù)據(jù)重放模塊避免了數(shù)據(jù)同步的遺漏。
圖1是本發(fā)明實(shí)施例一的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的架構(gòu)示意圖;圖2是本發(fā)明實(shí)施例一的本地同步管理器的具體結(jié)構(gòu)及其與本地同步數(shù)據(jù)庫(kù)的連接示意圖;圖3是本發(fā)明實(shí)施例一的遠(yuǎn)程同步管理器的具體結(jié)構(gòu)及其與遠(yuǎn)程同步數(shù)據(jù)庫(kù)的連接示意圖;圖4是本發(fā)明實(shí)施例二的基于非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的雙寫同步方法流程圖;圖5是本發(fā)明實(shí)施例二的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)在雙寫同步時(shí)的日志示意圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法作進(jìn)一步詳細(xì)說(shuō)明。實(shí)施例一如圖1所示,本實(shí)施例提供一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),包括:本地非關(guān)系型數(shù)據(jù)庫(kù)11,用于保存本地10業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日志,其中,所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的本地?cái)?shù)據(jù)日志為按時(shí)間階段依次產(chǎn)生的本地階段性曰志;遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21,用于保存遠(yuǎn)程20業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日志,其中,所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的遠(yuǎn)程數(shù)據(jù)日志為與所述本地階段性日志所在的相同時(shí)間階段產(chǎn)生的遠(yuǎn)程階段性日志;
本地同步管理器12,用于抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,以及將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比以對(duì)本地非關(guān)系型數(shù)據(jù)庫(kù)11的數(shù)據(jù)進(jìn)行更新;遠(yuǎn)程同步管理器22,用于抽取所述本地?cái)?shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,以及將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比以對(duì)遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的數(shù)據(jù)進(jìn)行更新;本地同步數(shù)據(jù)庫(kù)13,用于保存所述本地非關(guān)系型數(shù)據(jù)庫(kù)11產(chǎn)生的本地?cái)?shù)據(jù)日志、本地同步管理器12所抽取的遠(yuǎn)程數(shù)據(jù)日志以及其本地?cái)?shù)字簽名;遠(yuǎn)程同步數(shù)據(jù)庫(kù)23,用于保存所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志、遠(yuǎn)程同步管理器22所抽取的本地?cái)?shù)據(jù)日志及其遠(yuǎn)程數(shù)字簽名。如圖2所示,本實(shí)施例中,所述本地同步管理器12包括:本地?cái)?shù)據(jù)抽取模塊121,用于抽取一本地階段性日志的前一時(shí)間階段所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21產(chǎn)生的遠(yuǎn)程階段性日志;本地?cái)?shù)據(jù)處理模塊122,用于為抽取出的遠(yuǎn)程階段性日志產(chǎn)生本地?cái)?shù)字簽名,并將抽取出的遠(yuǎn)程階段性日志及其本地?cái)?shù)字簽名存入所述本地同步數(shù)據(jù)庫(kù)13,還用于在完成所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21到所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的本時(shí)間階段數(shù)據(jù)同步后,清理所述本地同步數(shù)據(jù)庫(kù)11中存儲(chǔ)的本時(shí)間階段以前的本地階段性日志、遠(yuǎn)程階段性日志及其本地?cái)?shù)字簽名;本地?cái)?shù)據(jù)過(guò)濾模塊123,用于對(duì)所述本地同步數(shù)據(jù)庫(kù)13中存儲(chǔ)的遠(yuǎn)程階段性日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的遠(yuǎn)程階段性日志,減少所述本地?cái)?shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作;本地?cái)?shù)據(jù)重放模塊124,用于查詢所述本地同步數(shù)據(jù)庫(kù)13中存儲(chǔ)的遠(yuǎn)程階段性日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條遠(yuǎn)程階段性日志;若否,則重新執(zhí)行該條遠(yuǎn)程階段性日志,并記錄到本地?cái)?shù)據(jù)同步模塊125的本地同步執(zhí)行記錄中;本地?cái)?shù)據(jù)同步模塊125,用于對(duì)比所述抽取出的遠(yuǎn)程階段性日志與所述本地階段性日志,將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的數(shù)據(jù)同步到本地非關(guān)系型數(shù)據(jù)庫(kù)11中,并生成本地同步執(zhí)行記錄。如圖3所示,本實(shí)施例中,所述遠(yuǎn)程同步管理器22包括:遠(yuǎn)程數(shù)據(jù)抽取模塊221,抽取一遠(yuǎn)程階段性日志的前一時(shí)間階段所述本地非關(guān)系型數(shù)據(jù)11產(chǎn)生的本地階段性日志;遠(yuǎn)程數(shù)據(jù)處理模塊222,用于為抽取出的本地階段性日志產(chǎn)生遠(yuǎn)程數(shù)字簽名,并將抽取出的本地階段性日志及其遠(yuǎn)程數(shù)字簽名存入所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23,還用于在完成所述本地非關(guān)系型數(shù)據(jù)庫(kù)11到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的本時(shí)間階段數(shù)據(jù)同步后,清理所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的本階段以前的遠(yuǎn)程階段性日志、本地階段性日志及其遠(yuǎn)程數(shù)字簽名;遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊223,用于對(duì)所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的的本地階段性日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的本地階段性日志,減少所述遠(yuǎn)程同步數(shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作;遠(yuǎn)程數(shù)據(jù)重放模塊224,用于查詢所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的本地階段性日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條本地階段性日志;若否,則重新執(zhí)行該條本地階段性日志,并記錄到遠(yuǎn)程數(shù)據(jù)同步模塊225產(chǎn)生的遠(yuǎn)程同步執(zhí)行記錄中;
遠(yuǎn)程數(shù)據(jù)同步模塊225,用于對(duì)比所述抽取出的本地階段性日志與遠(yuǎn)程階段性日志,將所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的數(shù)據(jù)同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21中,并生成遠(yuǎn)程同步執(zhí)行記錄。需要說(shuō)明的是,本地?cái)?shù)據(jù)處理模塊122和遠(yuǎn)程數(shù)據(jù)處理模塊222可以采用SHAl算法(Secure Hash Algorithm,安全哈希算法)對(duì)抽取的遠(yuǎn)程階段性日志和本地階段性日志中去除時(shí)間標(biāo)記外其他部分添加新的key:value (鍵:值)對(duì)以產(chǎn)生本地?cái)?shù)字簽名和遠(yuǎn)程
數(shù)字簽名。綜上所述,本實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),可以通過(guò)所述本地同步管理器將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)所述遠(yuǎn)程同步管理器將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中本地非關(guān)系型數(shù)據(jù)庫(kù)和遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的雙寫同步操作;進(jìn)一步的,通過(guò)所述本地?cái)?shù)據(jù)過(guò)濾模塊和遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊避免了同步時(shí)大量重復(fù)日志的產(chǎn)生,節(jié)約了存儲(chǔ)資源;通過(guò)本地?cái)?shù)據(jù)重放模塊和遠(yuǎn)程數(shù)據(jù)重放模塊避免了數(shù)據(jù)同步的遺漏。實(shí)施例二如圖4所示,本實(shí)施例提供一種基于本發(fā)明的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的雙寫同步方法,包括步驟SI至步驟S4,下面結(jié)合附圖1-5對(duì)本實(shí)施例所述的雙寫同步方法做進(jìn)一步的詳述。步驟SI,所述本地非關(guān)系型數(shù)據(jù)庫(kù)保存本地業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日
O請(qǐng)參考圖1和圖5,本步驟中,TO-Tl階段,本地非關(guān)系型數(shù)據(jù)庫(kù)11產(chǎn)生本地階段性日志Cl。步驟S2,所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)保存遠(yuǎn)程業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日
O請(qǐng)參考圖1和圖5,本步驟中,TO-Tl階段,遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21產(chǎn)生遠(yuǎn)程階段性日志U1。步驟S3,所述本地同步管理器抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比,同步所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的本地?cái)?shù)據(jù)日志。請(qǐng)參考圖1、圖2和圖5,本步驟中,T1-T2階段,本地非關(guān)系型數(shù)據(jù)庫(kù)11產(chǎn)生本地階段性日志C2,本地?cái)?shù)據(jù)抽取模塊121抽取步驟S2中TO-Tl階段的遠(yuǎn)程階段性日志Ul ;本地?cái)?shù)據(jù)處理模塊122為遠(yuǎn)程階段性日志Ul產(chǎn)生本地?cái)?shù)字簽名,并將遠(yuǎn)程階段性日志Ul及其本地?cái)?shù)字簽名存入所述本地同步數(shù)據(jù)庫(kù)13 ;本地?cái)?shù)據(jù)同步模塊125對(duì)比遠(yuǎn)程階段性日志Ul與本地階段性日志C2,將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的數(shù)據(jù)同步到本地非關(guān)系型數(shù)據(jù)庫(kù)11中,并生成本地同步執(zhí)行記錄。步驟S4, 所述遠(yuǎn)程同步管理器抽取所述本地?cái)?shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比,同步所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的遠(yuǎn)程數(shù)據(jù)日志。請(qǐng)參考圖1、圖2和圖5,本步驟中,T1-T2階段,遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21產(chǎn)生遠(yuǎn)程階段性日志U2,遠(yuǎn)程數(shù)據(jù)抽取模塊221抽取步驟SI中TO-Tl階段的本地階段性日志Cl ;遠(yuǎn)程數(shù)據(jù)處理模塊222為本地階段性日志Cl產(chǎn)生遠(yuǎn)程數(shù)字簽名,并將本地階段性日志Cl及其遠(yuǎn)程數(shù)字簽名存入所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23 ;遠(yuǎn)程數(shù)據(jù)同步模塊225對(duì)比本地階段性日志Cl與遠(yuǎn)程階段性日志U2,將所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的數(shù)據(jù)同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21中,并生成遠(yuǎn)程同步執(zhí)行記錄。進(jìn)一步的,在劃分的時(shí)間階段不只僅有T0-T1-T2時(shí),在后續(xù)時(shí)間階段中,本地非關(guān)系型數(shù)據(jù)庫(kù)11按時(shí)間階段T2-T3、T3-T4、T4-T5依次產(chǎn)生本地階段性日志C3、C4、C5、...,遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21按相同時(shí)間階段依次產(chǎn)生遠(yuǎn)程階段性日志U3,U4、U5、…,只要循環(huán)執(zhí)行步驟S3與步驟S4,即可完成所有時(shí)間階段的本地非關(guān)系型數(shù)據(jù)庫(kù)11與遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的雙寫同步,例如在T2-T3階段:本地非關(guān)系型數(shù)據(jù)庫(kù)11產(chǎn)生本地階段性日志C3,本地?cái)?shù)據(jù)抽取模塊121抽取步驟S2中T1-T2階段的遠(yuǎn)程階段性日志U2 ;本地?cái)?shù)據(jù)處理模塊122為遠(yuǎn)程階段性日志U2產(chǎn)生本地?cái)?shù)字簽名,并將遠(yuǎn)程階段性日志U2及其本地?cái)?shù)字簽名存入所述本地同步數(shù)據(jù)庫(kù)13 ;本地?cái)?shù)據(jù)同步模塊125對(duì)比遠(yuǎn)程階段性日志U2與本地階段性日志C3,將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的數(shù)據(jù)同步到本地非關(guān)系型數(shù)據(jù)庫(kù)11中,并生成本地同步執(zhí)行記錄; 遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21產(chǎn)生遠(yuǎn)程階段性日志U3,遠(yuǎn)程數(shù)據(jù)抽取模塊221抽取步驟SI中T1-T2階段的本地階段性日志C2 ;遠(yuǎn)程數(shù)據(jù)處理模塊222為本地階段性日志C2產(chǎn)生遠(yuǎn)程數(shù)字簽名,并將本地階段性日志C2及其遠(yuǎn)程數(shù)字簽名存入所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23 ;遠(yuǎn)程數(shù)據(jù)同步模塊225對(duì)比本地階段性日志C2與遠(yuǎn)程階段性日志U3,將所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的數(shù)據(jù)同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21中,并生成遠(yuǎn)程同步執(zhí)行記錄。其中,由 于本地階段性日志Cl在T1-T2階段中被同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21中,所以本地同步數(shù)據(jù)庫(kù)13應(yīng)至少保存本時(shí)間階段在內(nèi)的前3個(gè)時(shí)間階段的本地階段性日志,例如在T2-T3階段時(shí),本地同步數(shù)據(jù)庫(kù)13保存本地階段性日志C1、C2、C3(如圖5所示);同樣,遠(yuǎn)程同步數(shù)據(jù)庫(kù)23應(yīng)至少保存本時(shí)間階段在內(nèi)的前3個(gè)時(shí)間階段的遠(yuǎn)程階段性日志,例如在T2-T3階段時(shí),遠(yuǎn)程同步數(shù)據(jù)庫(kù)13保存遠(yuǎn)程階段性日志U1、U2、U3。進(jìn)一步的,在循環(huán)執(zhí)行步驟S3和S4的過(guò)程中,還可以通過(guò)本地?cái)?shù)據(jù)處理模塊122在完成所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21到所述本地非關(guān)系型數(shù)據(jù)庫(kù)11的本時(shí)間階段的數(shù)據(jù)同步后,清理所述本地同步數(shù)據(jù)庫(kù)11中存儲(chǔ)的本時(shí)間階段以前的本地階段性日志、遠(yuǎn)程階段性日志及其本地?cái)?shù)字簽名;通過(guò)遠(yuǎn)程數(shù)據(jù)處理模塊222在完成所述本地非關(guān)系型數(shù)據(jù)庫(kù)11到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)21的本時(shí)間階段數(shù)據(jù)同步后,清理所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的本階段以前的遠(yuǎn)程階段性日志、本地階段性日志及其遠(yuǎn)程數(shù)字簽名;如圖5所示,在T3-T4時(shí)間階段,通過(guò)本地?cái)?shù)據(jù)處理模塊122刪除本地同步數(shù)據(jù)庫(kù)13在T1-T2階段存儲(chǔ)的本地階段性日志Cl、及遠(yuǎn)程階段性日志Ul及其本地?cái)?shù)字簽名;通過(guò)遠(yuǎn)程數(shù)據(jù)處理模塊222刪除遠(yuǎn)程同步數(shù)據(jù)庫(kù)23在T1-T2階段存儲(chǔ)的遠(yuǎn)程階段性日志U1、本地階段性日志Cl及其本地?cái)?shù)字簽名;進(jìn)一步的,在循環(huán)執(zhí)行步驟S3和S4的過(guò)程中,還可以通過(guò)本地?cái)?shù)據(jù)過(guò)濾模塊123對(duì)所述本地同步數(shù)據(jù)庫(kù)13中存儲(chǔ)的遠(yuǎn)程階段性日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的遠(yuǎn)程階段性日志;通過(guò)本地?cái)?shù)據(jù)重放模塊124查詢所述本地同步數(shù)據(jù)庫(kù)13中存儲(chǔ)的遠(yuǎn)程階段性日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條遠(yuǎn)程階段性日志;若否,則重新執(zhí)行該條遠(yuǎn)程階段性日志,并記錄到本地?cái)?shù)據(jù)同步模塊125的本地同步執(zhí)行記錄中。
進(jìn)一步的,在循環(huán)執(zhí)行步驟S3和S4的過(guò)程中,還可以通過(guò)遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊223對(duì)所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的本地階段性日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的本地階段性日志;通過(guò)遠(yuǎn)程數(shù)據(jù)重放模塊224查詢所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)23中存儲(chǔ)的本地階段性日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條本地階段性日志;若否,則重新執(zhí)行該條本地階段性日志,并記錄到遠(yuǎn)程數(shù)據(jù)同步模塊225產(chǎn)生的遠(yuǎn)程同步執(zhí)行記錄中。需要說(shuō)明的是,在雙寫同步過(guò)程中可能出現(xiàn)多種問(wèn)題,考慮對(duì)以下情況進(jìn)行異常處理:1、步驟S3和步驟S4抽取過(guò)程中網(wǎng)絡(luò)中斷,或不能建立和對(duì)方非關(guān)系型數(shù)據(jù)庫(kù)的連接時(shí),網(wǎng)絡(luò)中斷后只對(duì)已經(jīng)抽取的數(shù)據(jù)日志進(jìn)行處理;2、步驟S3和步驟S4抽取過(guò)程中運(yùn)行本地/遠(yuǎn)程同步管理器的主機(jī)死機(jī)時(shí),該主機(jī)重啟后,需要本地/遠(yuǎn)程同步管理器回到以前狀態(tài),檢查本地/遠(yuǎn)程同步數(shù)據(jù)庫(kù),如果不空,繼續(xù)對(duì)抽取的數(shù)據(jù)進(jìn)行重放操作;如果本地/遠(yuǎn)程同步數(shù)據(jù)庫(kù)為空,繼續(xù)下一時(shí)間階段的數(shù)據(jù)同步;3、長(zhǎng)時(shí)間網(wǎng)絡(luò)中斷時(shí),本地/遠(yuǎn)程同步管理器可以合并時(shí)間階段進(jìn)行一次性數(shù)據(jù)同步;4、本地/遠(yuǎn)程同步管理器單方面完成本地/遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步,而遠(yuǎn)程/本地同步管理器未完成本地/遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步時(shí),完成方可繼續(xù)進(jìn)行下一時(shí)間階段的數(shù)據(jù)同步,未完成方需合并從未完成之時(shí)間階段到完成方的前一時(shí)間階段的所有時(shí)間階段進(jìn)行一次性數(shù)據(jù)同步以提高雙寫同步的效率,如本地同步管理器已完成了 T0-T1、T1-T2、T2-T3階段的遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)到本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步,而遠(yuǎn)程同步管理器只完成了 TO-Tl階段的本地非關(guān)系型數(shù)據(jù)庫(kù)到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步時(shí),那么下一時(shí)間階段,遠(yuǎn)程同步管理器合并T1-T2、T2-T3階段,一次性完成的Τ1-Τ3階段的本地非關(guān)系型數(shù)據(jù)庫(kù)到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。綜上所述,本發(fā)實(shí)施例提供的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的雙寫方法,通過(guò)所述本地同步管理器將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)所述遠(yuǎn)程同步管理器將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中本地非關(guān)系型數(shù)據(jù)庫(kù)和遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的雙寫同步操作;進(jìn)一步的,通過(guò)所述本地?cái)?shù)據(jù)過(guò)濾模塊和遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊避免了同步時(shí)大量重復(fù)日志的產(chǎn)生,節(jié)約了存儲(chǔ)資源;通過(guò)本地?cái)?shù)據(jù)重放模塊和遠(yuǎn)程數(shù)據(jù)重放模塊避免了數(shù)據(jù)同步的遺漏。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,包括: 本地非關(guān)系型數(shù)據(jù)庫(kù),用于保存本地業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日志; 遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù),用于保存遠(yuǎn)程業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日志; 本地同步管理器,用于抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,以及將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比以對(duì)所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行更新; 遠(yuǎn)程同步管理器,用于抽取所述本地?cái)?shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,以及將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比以對(duì)所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行更新。
2.如權(quán)利要求1所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)還包括: 本地同步數(shù)據(jù)庫(kù),用于保存所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的本地?cái)?shù)據(jù)日志、本地同步管理器所抽取的遠(yuǎn)程數(shù)據(jù)日志以及其本地?cái)?shù)字簽名; 遠(yuǎn)程同步數(shù)據(jù)庫(kù),用于保存所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志、遠(yuǎn)程同步管理器所抽取的本地?cái)?shù)據(jù)日志以及其遠(yuǎn)程數(shù)字簽名。
3.如權(quán)利要求1或2所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述本地非關(guān)系型數(shù)據(jù)庫(kù)的本地?cái)?shù)據(jù)日志為按時(shí)間階段依次產(chǎn)生的本地階段性日志;所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)日志為與所述本地階段性日志所在的相同時(shí)間階段產(chǎn)生的遠(yuǎn)程階段性日志。
4.如權(quán)利要求1所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述本地同步管理器包括: 本地?cái)?shù)據(jù)抽取模塊,用于抽取所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的遠(yuǎn)程數(shù)據(jù)日志; 本地?cái)?shù)據(jù)處理模塊,用于為抽取出的遠(yuǎn)程數(shù)據(jù)日志產(chǎn)生本地?cái)?shù)字簽名,并將所述抽取出的遠(yuǎn)程數(shù)據(jù)日志及其本地?cái)?shù)字簽名存入所述本地同步數(shù)據(jù)庫(kù); 本地?cái)?shù)據(jù)同步模塊,用于對(duì)比所述抽取出的遠(yuǎn)程數(shù)據(jù)日志與所述本地?cái)?shù)據(jù)日志,將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到本地非關(guān)系型數(shù)據(jù)庫(kù)中,并生成本地同步執(zhí)行記錄。
5.如權(quán)利要求4所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述本地?cái)?shù)據(jù)處理模塊還用于在完成所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)到所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步后,清理所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志、遠(yuǎn)程數(shù)據(jù)日志及其本地?cái)?shù)字簽名。
6.如權(quán)利要求4所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述本地同步管理器還包括: 本地?cái)?shù)據(jù)過(guò)濾模塊,用于對(duì)所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的遠(yuǎn)程數(shù)據(jù)日志,以減少所述本地?cái)?shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作; 本地?cái)?shù)據(jù)重放模塊,用于查詢所述本地同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條遠(yuǎn)程數(shù)據(jù)日志;若否,則重新執(zhí)行該條遠(yuǎn)程數(shù)據(jù)日志,并記錄到所述本地同步執(zhí)行記錄中。
7.如權(quán)利要求1所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述遠(yuǎn)程同步管理器包括: 遠(yuǎn)程數(shù)據(jù)抽取模塊,用于抽取所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生的本地?cái)?shù)據(jù)日志; 遠(yuǎn)程數(shù)據(jù)處理模塊,用于為抽取出的本地?cái)?shù)據(jù)日志產(chǎn)生遠(yuǎn)程數(shù)字簽名,并將所述抽取出的本地?cái)?shù)據(jù)日志及其遠(yuǎn)程數(shù)字簽名存入所述遠(yuǎn)程同步數(shù)據(jù)庫(kù); 遠(yuǎn)程數(shù)據(jù)同步模塊,用于對(duì)比所述抽取出的本地?cái)?shù)據(jù)日志與所述遠(yuǎn)程數(shù)據(jù)日志,將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,并生成遠(yuǎn)程同步執(zhí)行記錄。
8.如權(quán)利要求7所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述遠(yuǎn)程數(shù)據(jù)處理模塊還用于在完成所述本地非關(guān)系型數(shù)據(jù)庫(kù)到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步后,清理所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)日志、本地?cái)?shù)據(jù)日志及其遠(yuǎn)程數(shù)字簽名。
9.如權(quán)利要求7所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng),其特征在于,所述遠(yuǎn)程同步管理器還包括: 遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊,用于對(duì)所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志進(jìn)行識(shí)別,過(guò)濾掉重復(fù)的本地?cái)?shù)據(jù)日志,以減少所述遠(yuǎn)程數(shù)據(jù)同步模塊的重復(fù)數(shù)據(jù)同步操作; 遠(yuǎn)程數(shù)據(jù)重放模塊,用于查詢所述遠(yuǎn)程同步數(shù)據(jù)庫(kù)中存儲(chǔ)的本地?cái)?shù)據(jù)日志是否已經(jīng)被執(zhí)行,若是,則跳過(guò)此條本地?cái)?shù)據(jù)日志;若否,則重新執(zhí)行該條本地?cái)?shù)據(jù)日志,并記錄到所述遠(yuǎn)程同步執(zhí)行記錄中。
10.一種應(yīng)用權(quán)利要求1至9中任一項(xiàng)所述的非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)的雙寫同步方法,其特征在于,包括: 所述本地非關(guān)系型數(shù)據(jù)庫(kù)保存本地業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生本地?cái)?shù)據(jù)日志; 所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)保存遠(yuǎn)程業(yè)務(wù)所需數(shù)據(jù)以及產(chǎn)生遠(yuǎn)程數(shù)據(jù)日志; 所述本地同步管理器抽取所述遠(yuǎn)程數(shù)據(jù)日志并產(chǎn)生本地?cái)?shù)字簽名,將抽取的遠(yuǎn)程數(shù)據(jù)日志與本地?cái)?shù)據(jù)日志對(duì)比,同步所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,所述本地非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的本地?cái)?shù)據(jù)日志; 所述遠(yuǎn)程同步管理器抽取 所述本地?cái)?shù)據(jù)日志并產(chǎn)生遠(yuǎn)程數(shù)字簽名,將抽取的本地?cái)?shù)據(jù)日志與遠(yuǎn)程數(shù)據(jù)日志對(duì)比,同步所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)生新的遠(yuǎn)程數(shù)據(jù)日志。
全文摘要
本發(fā)明提供一種非關(guān)系型數(shù)據(jù)庫(kù)同步系統(tǒng)及雙寫同步方法,通過(guò)所述本地同步管理器將所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述本地非關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)所述遠(yuǎn)程同步管理器將所述本地非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到所述遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境中本地非關(guān)系型數(shù)據(jù)庫(kù)和遠(yuǎn)程非關(guān)系型數(shù)據(jù)庫(kù)的雙寫同步操作;進(jìn)一步的,通過(guò)所述本地?cái)?shù)據(jù)過(guò)濾模塊和遠(yuǎn)程數(shù)據(jù)過(guò)濾模塊避免了同步時(shí)大量重復(fù)日志的產(chǎn)生,節(jié)約了存儲(chǔ)資源;通過(guò)本地?cái)?shù)據(jù)重放模塊和遠(yuǎn)程數(shù)據(jù)重放模塊避免了數(shù)據(jù)同步的遺漏。
文檔編號(hào)G06F17/30GK103106200SQ201110353238
公開(kāi)日2013年5月15日 申請(qǐng)日期2011年11月9日 優(yōu)先權(quán)日2011年11月9日
發(fā)明者段如冰, 郭理靖, 袁岳峰 申請(qǐng)人:上海盛霄云計(jì)算技術(shù)有限公司