本發(fā)明涉及分布式數(shù)據(jù)庫(kù),尤其涉及一種維護(hù)分布式元數(shù)據(jù)一致性的方法、裝置及介質(zhì)。
背景技術(shù):
1、在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,元數(shù)據(jù)一致性是非常重要的,因?yàn)樵獢?shù)據(jù)是用來(lái)描述數(shù)據(jù)的數(shù)據(jù),是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的重要組成部分,包括數(shù)據(jù)的結(jié)構(gòu)、存儲(chǔ)位置、索引信息、數(shù)據(jù)分片等。如果各個(gè)數(shù)據(jù)節(jié)點(diǎn)上元數(shù)據(jù)不一致,可能會(huì)導(dǎo)致數(shù)據(jù)不一致,影響插入、查詢(xún)等操作結(jié)果的正確性,比如某個(gè)節(jié)點(diǎn)上能訪(fǎng)問(wèn)到這張表,而其他節(jié)點(diǎn)上該表已經(jīng)被刪除了,導(dǎo)致用戶(hù)只能讀到部分的結(jié)果。此外,數(shù)據(jù)庫(kù)系統(tǒng)通常會(huì)根據(jù)元數(shù)據(jù)信息來(lái)進(jìn)行查詢(xún)優(yōu)化,比如找到合適的索引,如果各個(gè)節(jié)點(diǎn)上元數(shù)據(jù)不一致,可能會(huì)導(dǎo)致性能下降,因此,保證各個(gè)節(jié)點(diǎn)上元數(shù)據(jù)的一致性是確保整個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)正常運(yùn)行、數(shù)據(jù)準(zhǔn)確性和一致性的重要保障?,F(xiàn)有技術(shù)中,通過(guò)分布式事務(wù)來(lái)管理元數(shù)據(jù),使各個(gè)數(shù)據(jù)節(jié)點(diǎn)上元數(shù)據(jù)保持一致,但分布式事務(wù)操作較復(fù)雜,因此,在使各個(gè)數(shù)據(jù)節(jié)點(diǎn)上元數(shù)據(jù)保持一致的過(guò)程中,如何改進(jìn)分布式數(shù)據(jù)庫(kù)的操作流程,以在降低資源占用和提高操作效率的同時(shí)保證分布式元數(shù)據(jù)一致性成為亟需解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本申請(qǐng)實(shí)施例提供了一種維護(hù)分布式元數(shù)據(jù)一致性的方法、裝置及介質(zhì),以解決在使各個(gè)數(shù)據(jù)節(jié)點(diǎn)上元數(shù)據(jù)保持一致的過(guò)程中,分布式事務(wù)操作較復(fù)雜的問(wèn)題。
2、第一方面,本申請(qǐng)實(shí)施例提供一種維護(hù)分布式元數(shù)據(jù)一致性的方法,應(yīng)用于分布式數(shù)據(jù)庫(kù),所述分布式數(shù)據(jù)庫(kù)包括一個(gè)中心節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)與至少一個(gè)參與節(jié)點(diǎn),所述中心節(jié)點(diǎn)與每個(gè)參與節(jié)點(diǎn)間通信連接,所述維護(hù)分布式元數(shù)據(jù)一致性的方法包括:
3、所述中心節(jié)點(diǎn)接收目標(biāo)語(yǔ)句,確定所述目標(biāo)語(yǔ)句中目標(biāo)對(duì)象的標(biāo)識(shí),對(duì)所述目標(biāo)對(duì)象進(jìn)行加鎖,由于所有元數(shù)據(jù)修改都會(huì)首先到所述中心節(jié)點(diǎn)上嘗試對(duì)目標(biāo)對(duì)象加鎖,
4、若所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象操作成功,則所述中心節(jié)點(diǎn)得到所述目標(biāo)對(duì)象的第一版本號(hào);
5、所述中心節(jié)點(diǎn)將所述目標(biāo)語(yǔ)句、所述目標(biāo)對(duì)象的標(biāo)識(shí)與所述第一版本號(hào)發(fā)送至參與節(jié)點(diǎn)和協(xié)調(diào)節(jié)點(diǎn);
6、針對(duì)任一參與節(jié)點(diǎn),獲取所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)中對(duì)應(yīng)標(biāo)識(shí)的目標(biāo)對(duì)象的第二版本號(hào),若所述第一版本號(hào)比所述第二版本號(hào)大1,則在所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)上對(duì)所述目標(biāo)對(duì)象進(jìn)行操作;
7、若每個(gè)所有參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象操作成功,則所述中心節(jié)點(diǎn)提交對(duì)所述目標(biāo)對(duì)象進(jìn)行操作的目標(biāo)事務(wù);
8、若所述中心節(jié)點(diǎn)提交所述目標(biāo)事務(wù)成功,則所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)提交所述目標(biāo)事務(wù);
9、若所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)提交所述目標(biāo)事務(wù)成功,則所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象進(jìn)行放鎖。
10、第二方面,本申請(qǐng)實(shí)施例提供一種維護(hù)分布式元數(shù)據(jù)一致性的裝置,應(yīng)用于分布式數(shù)據(jù)庫(kù),所述分布式數(shù)據(jù)庫(kù)包括一個(gè)中心節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)與至少一個(gè)參與節(jié)點(diǎn),所述中心節(jié)點(diǎn)與每個(gè)參與節(jié)點(diǎn)間通信連接,所述維護(hù)分布式元數(shù)據(jù)一致性的裝置包括:
11、第一操作模塊,用于所述中心節(jié)點(diǎn)接收目標(biāo)語(yǔ)句,確定所述目標(biāo)語(yǔ)句中目標(biāo)對(duì)象的標(biāo)識(shí),對(duì)所述目標(biāo)對(duì)象進(jìn)行加鎖,根據(jù)所述目標(biāo)對(duì)象的標(biāo)識(shí)與所述目標(biāo)語(yǔ)句對(duì)所述目標(biāo)對(duì)象進(jìn)行操作;
12、得到模塊,用于若所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象操作成功,則所述中心節(jié)點(diǎn)得到所述目標(biāo)對(duì)象的第一版本號(hào);
13、發(fā)送模塊,用于所述中心節(jié)點(diǎn)將所述目標(biāo)語(yǔ)句、所述目標(biāo)對(duì)象的標(biāo)識(shí)與所述第一版本號(hào)發(fā)送至參與節(jié)點(diǎn)和協(xié)調(diào)節(jié)點(diǎn);
14、第二操作模塊,用于針對(duì)任一參與節(jié)點(diǎn),獲取所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)中對(duì)應(yīng)標(biāo)識(shí)的目標(biāo)對(duì)象的第二版本號(hào),若所述第一版本號(hào)比所述第二版本號(hào)大1,則在所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)上對(duì)所述目標(biāo)對(duì)象進(jìn)行操作;
15、第一提交模塊,用于若每個(gè)所有參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象操作成功,則所述中心節(jié)點(diǎn)提交對(duì)所述目標(biāo)對(duì)象進(jìn)行操作的目標(biāo)事務(wù);
16、第二提交模塊,用于若所述中心節(jié)點(diǎn)提交所述目標(biāo)事務(wù)成功,則所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)提交所述目標(biāo)事務(wù);
17、放鎖模塊,用于若所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)提交所述目標(biāo)事務(wù)成功,則所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象進(jìn)行放鎖。
18、第三方面,本申請(qǐng)實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面所述的維護(hù)分布式元數(shù)據(jù)一致性的方法。
19、本發(fā)明與現(xiàn)有技術(shù)相比存在的有益效果是:
20、中心節(jié)點(diǎn)接收目標(biāo)語(yǔ)句,確定目標(biāo)語(yǔ)句中目標(biāo)對(duì)象的標(biāo)識(shí),對(duì)目標(biāo)對(duì)象進(jìn)行加鎖,根據(jù)目標(biāo)對(duì)象的標(biāo)識(shí)與目標(biāo)語(yǔ)句對(duì)目標(biāo)對(duì)象進(jìn)行操作,若中心節(jié)點(diǎn)對(duì)目標(biāo)對(duì)象操作成功,則中心節(jié)點(diǎn)得到目標(biāo)對(duì)象的第一版本號(hào),中心節(jié)點(diǎn)將目標(biāo)語(yǔ)句、目標(biāo)對(duì)象的標(biāo)識(shí)與第一版本號(hào)發(fā)送至參與節(jié)點(diǎn)和協(xié)調(diào)節(jié)點(diǎn),針對(duì)任一參與節(jié)點(diǎn),獲取參與節(jié)點(diǎn)與協(xié)調(diào)節(jié)點(diǎn)中對(duì)應(yīng)標(biāo)識(shí)的目標(biāo)對(duì)象的第二版本號(hào),若第一版本號(hào)比第二版本號(hào)大1,則在參與節(jié)點(diǎn)與協(xié)調(diào)節(jié)點(diǎn)上對(duì)目標(biāo)對(duì)象進(jìn)行操作,若每個(gè)所有參與節(jié)點(diǎn)與協(xié)調(diào)節(jié)點(diǎn)對(duì)目標(biāo)對(duì)象操作成功,則中心節(jié)點(diǎn)提交對(duì)目標(biāo)對(duì)象進(jìn)行操作的目標(biāo)事務(wù),若中心節(jié)點(diǎn)提交目標(biāo)事務(wù)成功,則參與節(jié)點(diǎn)與協(xié)調(diào)節(jié)點(diǎn)提交目標(biāo)事務(wù),若參與節(jié)點(diǎn)與協(xié)調(diào)節(jié)點(diǎn)提交目標(biāo)事務(wù)成功,則中心節(jié)點(diǎn)對(duì)目標(biāo)對(duì)象進(jìn)行放鎖。本申請(qǐng)中,在分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)定義語(yǔ)言的執(zhí)行過(guò)程中,中心節(jié)點(diǎn)與參與節(jié)點(diǎn)先后對(duì)目標(biāo)對(duì)象進(jìn)行操作,并根據(jù)目標(biāo)對(duì)象在所有節(jié)點(diǎn)上的操作結(jié)果,確定中心節(jié)點(diǎn)是否具備提交條件,若中心節(jié)點(diǎn)具備提交條件,則認(rèn)為協(xié)調(diào)節(jié)點(diǎn)和參與節(jié)點(diǎn)也具備提交條件,將分布式數(shù)據(jù)定義語(yǔ)言的操作簡(jiǎn)化為一個(gè)單節(jié)點(diǎn)問(wèn)題,改進(jìn)了分布式數(shù)據(jù)庫(kù)的元數(shù)據(jù)操作流程。且本申請(qǐng)中,在執(zhí)行數(shù)據(jù)定義語(yǔ)言和數(shù)據(jù)操作語(yǔ)句時(shí),只需要對(duì)需執(zhí)行的參與節(jié)點(diǎn)中元數(shù)據(jù)的版本號(hào)進(jìn)行判斷,在需執(zhí)行的參與節(jié)點(diǎn)中元數(shù)據(jù)的版本號(hào)相等的情況下,就可以正常執(zhí)行,不需要等待整個(gè)集群的元數(shù)據(jù)版本號(hào)達(dá)到一致,通過(guò)元數(shù)據(jù)版本號(hào)達(dá)到局部鎖的效果,最大程度支持?jǐn)?shù)據(jù)定義語(yǔ)言和數(shù)據(jù)操作語(yǔ)句并發(fā)執(zhí)行。
1.一種維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,應(yīng)用于分布式數(shù)據(jù)庫(kù),所述分布式數(shù)據(jù)庫(kù)包括一個(gè)中心節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)與至少一個(gè)參與節(jié)點(diǎn),所述中心節(jié)點(diǎn)與每個(gè)參與節(jié)點(diǎn)間通信連接,所述維護(hù)分布式元數(shù)據(jù)一致性的方法包括:
2.如權(quán)利要求1所述維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述中心節(jié)點(diǎn)接收目標(biāo)語(yǔ)句,確定所述目標(biāo)語(yǔ)句中目標(biāo)對(duì)象的標(biāo)識(shí),對(duì)所述目標(biāo)對(duì)象進(jìn)行加鎖,根據(jù)所述目標(biāo)對(duì)象的標(biāo)識(shí)與所述目標(biāo)語(yǔ)句對(duì)所述目標(biāo)對(duì)象進(jìn)行操作之前,還包括:
3.如權(quán)利要求2所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述分布式數(shù)據(jù)庫(kù)還包括服務(wù)端,所述中心節(jié)點(diǎn)、每個(gè)參與節(jié)點(diǎn)、所述協(xié)調(diào)節(jié)點(diǎn)與所述服務(wù)端間通信連接,所述根據(jù)所述目標(biāo)對(duì)象的標(biāo)識(shí)與所述目標(biāo)語(yǔ)句對(duì)所述目標(biāo)對(duì)象進(jìn)行操作之后,還包括:
4.如權(quán)利要求3所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述針對(duì)任一參與節(jié)點(diǎn),獲取所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)中對(duì)應(yīng)標(biāo)識(shí)的目標(biāo)對(duì)象的第二版本號(hào),若所述第一版本號(hào)比所述第二版本號(hào)大1,則在所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)上對(duì)所述目標(biāo)對(duì)象進(jìn)行操作之后,還包括:
5.如權(quán)利要求3所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述中心節(jié)點(diǎn)提交對(duì)所述目標(biāo)對(duì)象進(jìn)行操作的目標(biāo)事務(wù)之后,還包括:
6.如權(quán)利要求3所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述參與節(jié)點(diǎn)與所述協(xié)調(diào)節(jié)點(diǎn)提交所述目標(biāo)事務(wù)之后,還包括:
7.如權(quán)利要求3所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象進(jìn)行放鎖之前,還包括:
8.如權(quán)利要求3所述的維護(hù)分布式元數(shù)據(jù)一致性的方法,其特征在于,所述中心節(jié)點(diǎn)對(duì)所述目標(biāo)對(duì)象進(jìn)行放鎖之后,還包括:
9.一種維護(hù)分布式元數(shù)據(jù)一致性的裝置,其特征在于,應(yīng)用于分布式數(shù)據(jù)庫(kù),所述分布式數(shù)據(jù)庫(kù)包括一個(gè)中心節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)與至少一個(gè)參與節(jié)點(diǎn),所述中心節(jié)點(diǎn)與每個(gè)參與節(jié)點(diǎn)間通信連接,所述維護(hù)分布式元數(shù)據(jù)一致性的裝置包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至8所述的維護(hù)分布式元數(shù)據(jù)一致性的方法。