本發(fā)明涉及數(shù)據(jù)庫查詢,尤其涉及一種基于集群數(shù)據(jù)庫的sql查詢方法及系統(tǒng)。
背景技術(shù):
1、在集群中,各個(gè)節(jié)點(diǎn)需要如何實(shí)現(xiàn)字符集的統(tǒng)一處理是一個(gè)重要的挑戰(zhàn),尤其是分布式數(shù)據(jù)庫,每個(gè)節(jié)點(diǎn)的字符集存在不一致的情況時(shí),如何能夠通過管理節(jié)點(diǎn)統(tǒng)一調(diào)配,實(shí)現(xiàn)數(shù)據(jù)互通,是一個(gè)重要的研究方向。
2、除了管理節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)之間的一致性統(tǒng)一,還需要考慮用戶客戶端的字符集配置問題,如果用戶使用的產(chǎn)品的客戶端字符集和gbase數(shù)據(jù)庫本身的字符集不一致,則會造成gbase拿到的sql包含亂碼的情況,數(shù)據(jù)庫無法正常使用;另外對于生僻字的兼容問題,數(shù)據(jù)庫對生僻字的支持也是必不可少。
3、以上的問題都會造成結(jié)果集錯(cuò)誤的問題,當(dāng)不同的算子進(jìn)行交互時(shí),如果其字符集格式不匹配,可能會引起結(jié)果集錯(cuò)誤,如算子的值相同但是字符集不同,則進(jìn)行比較時(shí),仍舊為匹配失敗。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在至少解決相關(guān)技術(shù)中存在的技術(shù)問題之一。為此,本發(fā)明提供一種基于集群數(shù)據(jù)庫的sql查詢方法及系統(tǒng)。
2、本發(fā)明提供一種基于集群數(shù)據(jù)庫的sql查詢方法,包括:
3、s1:接收客戶端發(fā)送的sql指令;
4、s2:解析所述sql指令,并根據(jù)解析后的sql指令生成執(zhí)行計(jì)劃;
5、s3:將所述執(zhí)行計(jì)劃通過utf8mb4編碼方式進(jìn)行編碼獲得第一字符集,根據(jù)所述第一字符集進(jìn)行sql查詢獲得執(zhí)行結(jié)果;
6、s4:將所述執(zhí)行結(jié)果進(jìn)行編碼獲得第二字符集,并將所述第二字符集返回客戶端。
7、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢方法,步驟s3中的所述第一字符集為system_charset字符集類型。
8、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢方法,步驟s4中的所述第二字符集為result_charset字符集類型。
9、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢方法,步驟s4中所述result_charset字符集類型的格式與所述客戶端的字符集類型的格式相同。
10、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢方法,步驟s3中,將所述執(zhí)行計(jì)劃進(jìn)行編碼時(shí),對所述執(zhí)行計(jì)劃對應(yīng)的sql指令中的裸字符串進(jìn)行編碼。
11、本發(fā)明還提供一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),用于執(zhí)行如以上任一項(xiàng)所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,包括:
12、接收模塊:用于接收客戶端發(fā)送的sql指令;
13、生成模塊:用于解析所述sql指令,并根據(jù)解析后的sql指令生成執(zhí)行計(jì)劃;
14、第一轉(zhuǎn)換模塊:用于將所述執(zhí)行計(jì)劃通過utf8mb4編碼方式進(jìn)行編碼獲得第一字符集;
15、執(zhí)行模塊:用于根據(jù)所述第一字符集進(jìn)行sql查詢獲得執(zhí)行結(jié)果;
16、第二轉(zhuǎn)換模塊:用于將所述執(zhí)行結(jié)果進(jìn)行編碼獲得第二字符集;
17、返回模塊:用于將所述第二字符集返回客戶端。
18、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),所述接收模塊、所述生成模塊及所述第一轉(zhuǎn)換模塊均基于集群節(jié)點(diǎn)建立。
19、根據(jù)本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),所述執(zhí)行模塊、所述第二轉(zhuǎn)換模塊及所述返回模塊均基于單機(jī)節(jié)點(diǎn)建立。
20、本發(fā)明提供的一種基于集群數(shù)據(jù)庫的sql查詢方法及系統(tǒng),支持各種生僻字,并且兼容集群數(shù)據(jù)庫內(nèi)多節(jié)點(diǎn)的字符集靈活設(shè)置,能夠?qū)崿F(xiàn)高效的信息管理,另外兼容各種字符集編碼的客戶端,使產(chǎn)品的可用性增強(qiáng),減少字符集的頻繁轉(zhuǎn)換,節(jié)省了大量的性能。
21、本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
1.一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,步驟s3中的所述第一字符集為system_charset字符集類型。
3.根據(jù)權(quán)利要求1所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,步驟s4中的所述第二字符集為result_charset字符集類型。
4.根據(jù)權(quán)利要求3所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,步驟s4中所述result_charset字符集類型的格式與所述客戶端的字符集類型的格式相同。
5.根據(jù)權(quán)利要求1所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,步驟s3中,將所述執(zhí)行計(jì)劃進(jìn)行編碼時(shí),對所述執(zhí)行計(jì)劃對應(yīng)的sql指令中的裸字符串進(jìn)行編碼。
6.一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),用于執(zhí)行如權(quán)利要求1至5任一項(xiàng)所述的一種基于集群數(shù)據(jù)庫的sql查詢方法,其特征在于,包括:
7.根據(jù)權(quán)利要求6所述的一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),其特征在于,所述接收模塊、所述生成模塊及所述第一轉(zhuǎn)換模塊均基于集群節(jié)點(diǎn)建立。
8.根據(jù)權(quán)利要求6所述的一種基于集群數(shù)據(jù)庫的sql查詢系統(tǒng),其特征在于,所述執(zhí)行模塊、所述第二轉(zhuǎn)換模塊及所述返回模塊均基于單機(jī)節(jié)點(diǎn)建立。