對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及分布式數(shù)據(jù)庫數(shù)據(jù)驗(yàn)證技術(shù)。
【背景技術(shù)】
[0002]隨著云計(jì)算的發(fā)展,分布式數(shù)據(jù)庫系統(tǒng)應(yīng)用越來越普遍。在分布式數(shù)據(jù)庫的應(yīng)用場景當(dāng)中,如何驗(yàn)證分布式數(shù)據(jù)庫系統(tǒng),特別是正在提供服務(wù)的系統(tǒng)的數(shù)據(jù)正確性,具有重要的現(xiàn)實(shí)意義。
[0003]常見實(shí)現(xiàn)方案是這樣的:
[0004]在分布式數(shù)據(jù)庫當(dāng)中,同一張邏輯表的記錄,根據(jù)主鍵進(jìn)行hash分布,會被分布在多個數(shù)據(jù)節(jié)點(diǎn)當(dāng)中。當(dāng)需要驗(yàn)證分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)正確性時,通常會有以下兩個方案:
[0005]1.對各個數(shù)據(jù)庫節(jié)點(diǎn)逐一進(jìn)行查詢,并進(jìn)行匯總,最終形成邏輯表的匯總數(shù)據(jù),從而完成數(shù)據(jù)的校驗(yàn)工作。
[0006]2.通過與應(yīng)用使用相同的分布式數(shù)據(jù)庫系統(tǒng)的接口,對數(shù)據(jù)庫進(jìn)行查詢,從而驗(yàn)證應(yīng)用對數(shù)據(jù)庫進(jìn)行的各種數(shù)據(jù)操作是否得到了正確結(jié)果。
[0007]具體地,設(shè)想以下場景:一張邏輯表TABLEl根據(jù)主鍵hash被分布在了 10個數(shù)據(jù)節(jié)點(diǎn)當(dāng)中,分別是N0DE1,N0DE2……N0DE10?,F(xiàn)在需要驗(yàn)證分布式數(shù)據(jù)庫系統(tǒng)正確地處理了應(yīng)用的各種更新和插入請求。
[0008]傳統(tǒng)的方案一:
[0009]當(dāng)需要驗(yàn)證邏輯表TABLEl的數(shù)據(jù)在10個數(shù)據(jù)節(jié)點(diǎn)當(dāng)中是否完整時,用戶需要兩個信息,第一個是一共有哪幾個數(shù)據(jù)節(jié)點(diǎn),第二個是采用什么hash算法。然后用戶根據(jù)主鍵的分布,逐一去遍歷數(shù)據(jù)節(jié)點(diǎn),并且進(jìn)行匯總,最終合并出一張邏輯表,在這張邏輯表當(dāng)中驗(yàn)證是否和用戶所期望的數(shù)據(jù)一致。
[0010]以上方案一存在如下幾個問題:
[0011]1.數(shù)據(jù)節(jié)點(diǎn)如果由10個變成1000個,驗(yàn)證工作會隨著分布式數(shù)據(jù)庫的數(shù)據(jù)節(jié)點(diǎn)數(shù)量的增加,復(fù)雜度相應(yīng)增加;
[0012]2.如果數(shù)據(jù)節(jié)點(diǎn)是同時為線上提供服務(wù)的話,驗(yàn)證工作對線上環(huán)境是有損害的;
[0013]3.主鍵在數(shù)據(jù)庫中的分布規(guī)則(hash算法)變化時,驗(yàn)證工作也需要跟著變化。
[0014]傳統(tǒng)的方案二:
[0015]通過與應(yīng)用使用相同的接口,驗(yàn)證程序?qū)Ψ植际綌?shù)據(jù)庫系統(tǒng)進(jìn)行查詢,確認(rèn)查詢得到的結(jié)果是否與預(yù)期一致,從而驗(yàn)證數(shù)據(jù)的正確性。
[0016]以上方案二存在如下幾個問題:
[0017]1.使用與應(yīng)用相同的接口,會影響分布式數(shù)據(jù)庫系統(tǒng)的性能,驗(yàn)證工作對線上環(huán)境也是有損害的。
[0018]2.應(yīng)用和驗(yàn)證使用的是同一接口,且分布式數(shù)據(jù)庫不支持特定的驗(yàn)證方式,對正確性的驗(yàn)證不夠充分。
【發(fā)明內(nèi)容】
[0019]本發(fā)明的目的在于提供一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法及其系統(tǒng),當(dāng)數(shù)據(jù)節(jié)點(diǎn)個數(shù)發(fā)生變化或者使數(shù)據(jù)分布在不同數(shù)據(jù)節(jié)點(diǎn)的算法發(fā)生了調(diào)整,也不會影響到驗(yàn)證的邏輯,更不會對線上環(huán)境產(chǎn)生損害。
[0020]為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式公開了一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法,分布式數(shù)據(jù)庫的數(shù)據(jù)分布在N個數(shù)據(jù)節(jié)點(diǎn)中,該方法包括以下步驟:
[0021]對分布式數(shù)據(jù)庫進(jìn)行操作后,如果該操作使N個數(shù)據(jù)節(jié)點(diǎn)中至少一個數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變化,則數(shù)據(jù)庫增量復(fù)制平臺獲取各個數(shù)據(jù)節(jié)點(diǎn)中發(fā)生變化的數(shù)據(jù);
[0022]數(shù)據(jù)庫增量復(fù)制平臺將所獲取的發(fā)生變化的數(shù)據(jù)同步到獨(dú)立于N個數(shù)據(jù)節(jié)點(diǎn)的驗(yàn)證數(shù)據(jù)庫;
[0023]對驗(yàn)證數(shù)據(jù)庫進(jìn)行查詢,驗(yàn)證對分布式數(shù)據(jù)庫進(jìn)行的操作是否得到了正確結(jié)果。
[0024]本發(fā)明的實(shí)施方式還公開了一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的系統(tǒng),分布式數(shù)據(jù)庫的數(shù)據(jù)分布在N個數(shù)據(jù)節(jié)點(diǎn)中,該系統(tǒng)包括分布式數(shù)據(jù)庫,分布式數(shù)據(jù)庫增量復(fù)制平臺,驗(yàn)證數(shù)據(jù)庫和驗(yàn)證模塊;
[0025]對分布式數(shù)據(jù)庫進(jìn)行操作后,如果該操作使N個數(shù)據(jù)節(jié)點(diǎn)中至少一個數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變化,則數(shù)據(jù)庫增量復(fù)制平臺獲取各個數(shù)據(jù)節(jié)點(diǎn)中發(fā)生變化的數(shù)據(jù);
[0026]數(shù)據(jù)庫增量復(fù)制平臺將所獲取的發(fā)生變化的數(shù)據(jù)同步到獨(dú)立于N個數(shù)據(jù)節(jié)點(diǎn)的驗(yàn)證數(shù)據(jù)庫;
[0027]驗(yàn)證模塊用于對驗(yàn)證數(shù)據(jù)庫進(jìn)行查詢,驗(yàn)證對分布式數(shù)據(jù)庫進(jìn)行的操作是否得到了正確結(jié)果。
[0028]本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于:
[0029]本發(fā)明增加了一個驗(yàn)證數(shù)據(jù)庫,并利用分布式數(shù)據(jù)庫增量復(fù)制平臺將分布式數(shù)據(jù)庫中的更新數(shù)據(jù)同步到驗(yàn)證數(shù)據(jù)庫中,當(dāng)數(shù)據(jù)節(jié)點(diǎn)個數(shù)發(fā)生變化或者使數(shù)據(jù)分布在不同數(shù)據(jù)節(jié)點(diǎn)的hash (哈希)算法發(fā)生了調(diào)整,也不會影響到驗(yàn)證的邏輯,更不會對線上環(huán)境產(chǎn)生損害。
[0030]進(jìn)一步地,本實(shí)施方式中通過及時刪除驗(yàn)證數(shù)據(jù)庫中已被驗(yàn)證的數(shù)據(jù),能夠保證驗(yàn)證數(shù)據(jù)庫中的數(shù)據(jù)總量較少,提高了驗(yàn)證效率。
[0031]進(jìn)一步地,分布式數(shù)據(jù)庫和驗(yàn)證數(shù)據(jù)庫位于不同的物理服務(wù)器中,當(dāng)對驗(yàn)證數(shù)據(jù)庫進(jìn)行驗(yàn)證時,即使分布式數(shù)據(jù)庫正在提供服務(wù),也不會占用分布式數(shù)據(jù)庫所在系統(tǒng)的計(jì)算資源。
[0032]進(jìn)一步地,在本發(fā)明的各個實(shí)施方式中,使用分布式數(shù)據(jù)庫不支持的聚合類函數(shù)和/或排序類函數(shù)對驗(yàn)證數(shù)據(jù)庫進(jìn)行查詢以驗(yàn)證,能夠使得對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行的驗(yàn)證足夠充分。
【附圖說明】
[0033]圖1是本發(fā)明第一實(shí)施方式中一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法的流程示意圖;
[0034]圖2是本發(fā)明第二實(shí)施方式中一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法的整體架構(gòu)圖;
[0035]圖3是本發(fā)明第四實(shí)施方式中一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0036]在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。
[0037]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0038]本發(fā)明第一實(shí)施方式涉及一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法,圖1是該對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法的流程示意圖。
[0039]具體地說,該分布式數(shù)據(jù)庫的數(shù)據(jù)分布在N個數(shù)據(jù)節(jié)點(diǎn)中,如圖1所示,該方法包括以下步驟:
[0040]在步驟101中,對分布式數(shù)據(jù)庫進(jìn)行操作后,如果該操作使N個數(shù)據(jù)節(jié)點(diǎn)中至少一個數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變化,則數(shù)據(jù)庫增量復(fù)制平臺獲取各個數(shù)據(jù)節(jié)點(diǎn)中發(fā)生變化的數(shù)據(jù)。
[0041]上述對分布式數(shù)據(jù)庫進(jìn)行的操作包括通過分布式數(shù)據(jù)庫訪問入口進(jìn)行的各種刪除,更新和插入,或者其它操作。
[0042]此后進(jìn)入步驟102,數(shù)據(jù)庫增量復(fù)制平臺將所獲取的發(fā)生變化的數(shù)據(jù)同步到獨(dú)立于N個數(shù)據(jù)節(jié)點(diǎn)的驗(yàn)證數(shù)據(jù)庫。
[0043]此后進(jìn)入步驟103,對驗(yàn)證數(shù)據(jù)庫進(jìn)行查詢,驗(yàn)證對分布式數(shù)據(jù)庫進(jìn)行的操作是否得到了正確結(jié)果。
[0044]此后結(jié)束此流程。
[0045]可以理解,分布式數(shù)據(jù)庫增量復(fù)制平臺原本主要用于同步。本發(fā)明增加了一個驗(yàn)證數(shù)據(jù)庫,并利用分布式數(shù)據(jù)庫增量復(fù)制平臺將分布式數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)同步到驗(yàn)證數(shù)據(jù)庫中,從而能夠?qū)Ψ植际綌?shù)據(jù)庫的數(shù)據(jù)進(jìn)行驗(yàn)證。即使當(dāng)數(shù)據(jù)節(jié)點(diǎn)個數(shù)發(fā)生變化或者使數(shù)據(jù)分布在不同數(shù)據(jù)節(jié)點(diǎn)的hash算法發(fā)生了調(diào)整,也不會影響到驗(yàn)證的邏輯,更不會對線上環(huán)境產(chǎn)生損害。
[0046]本發(fā)明第二實(shí)施方式涉及一種對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行實(shí)時驗(yàn)證的方法,第二實(shí)施方式在第一實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn)。
[0047]具體地說,在步驟101之前,還包括步驟:
[0048]部署分布式數(shù)據(jù)庫增量復(fù)制平臺。
[0049]上述部署分布式數(shù)據(jù)庫增量復(fù)制平臺的步驟包括以下子步驟:
[0050]指定分布式數(shù)據(jù)庫增量復(fù)制平臺的同步數(shù)據(jù)源為分布式數(shù)據(jù)庫的各數(shù)據(jù)節(jié)點(diǎn);
[0051]指定分布式數(shù)據(jù)庫增量復(fù)制平臺的同步目的數(shù)據(jù)庫為驗(yàn)證數(shù)據(jù)庫;
[0052]開啟分布式數(shù)據(jù)庫增量復(fù)制平臺的同步功能。
[0053]在另一優(yōu)選例中,分布式數(shù)據(jù)庫和驗(yàn)證數(shù)據(jù)庫位于不同的物理服務(wù)器中,分布式數(shù)據(jù)庫的數(shù)據(jù)根據(jù)主鍵hash分布在N個數(shù)據(jù)節(jié)點(diǎn)中。
[0054]分布式數(shù)據(jù)庫和驗(yàn)證數(shù)據(jù)庫位于不同的物理服務(wù)器中,因此當(dāng)對驗(yàn)證數(shù)據(jù)庫進(jìn)行驗(yàn)證時,即使分布式數(shù)據(jù)庫正在提供服務(wù),也不會占用分布式數(shù)據(jù)庫所在系統(tǒng)的計(jì)算資源
[0055]需要說明的是,在本發(fā)明的其他實(shí)施方式中,分布式數(shù)據(jù)庫和驗(yàn)證數(shù)據(jù)庫并不一定位于不同的物理服務(wù)器中,也可以位于同一組服務(wù)器中。此外,分布式數(shù)據(jù)庫的數(shù)據(jù)也并不一定是根據(jù)主鍵hash來進(jìn)行分布。
[0056]作為本實(shí)施方式的優(yōu)選例,現(xiàn)結(jié)合圖2對解決方案進(jìn)行進(jìn)一步說明。如圖2所示為對分布式數(shù)據(jù)庫的數(shù)據(jù)進(jìn)