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