本申請(qǐng)涉及數(shù)據(jù)庫(kù),具體而言,本申請(qǐng)涉及一種數(shù)據(jù)庫(kù)訪問方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、訪問數(shù)據(jù)庫(kù)通常依賴于傳輸控制協(xié)議(transmission?control?protocol,tcp)連接,這是因?yàn)閠cp連接提供了一種可靠的、面向連接的通信機(jī)制,確保數(shù)據(jù)在客戶端和服務(wù)器之間傳輸?shù)姆€(wěn)定性和順序性。
2、在傳統(tǒng)的服務(wù)器-客戶端模型中,客戶端會(huì)通過tcp協(xié)議直接與數(shù)據(jù)庫(kù)服務(wù)器建立連接,執(zhí)行sql操作,然后接收結(jié)果。然而,在現(xiàn)代的計(jì)算環(huán)境中,尤其是在移動(dòng)設(shè)備、瀏覽器或邊緣計(jì)算場(chǎng)景中,不能直接通過tcp連接訪問數(shù)據(jù)庫(kù),因此在這些場(chǎng)景中存在數(shù)據(jù)庫(kù)訪問限制的問題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)實(shí)施例提供了一種數(shù)據(jù)庫(kù)訪問方法、裝置、電子設(shè)備、計(jì)算機(jī)存儲(chǔ)介質(zhì)及計(jì)算機(jī)程序產(chǎn)品,可以解決在一些場(chǎng)景中因不能建立tcp連接而無法訪問數(shù)據(jù)庫(kù)的問題。所述技術(shù)方案如下:
2、根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供了一種數(shù)據(jù)庫(kù)訪問方法,由代理服務(wù)執(zhí)行,所述代理服務(wù)與數(shù)據(jù)庫(kù)部署在同一主干網(wǎng)絡(luò),所述方法包括:
3、接收客戶端發(fā)送的針對(duì)所述數(shù)據(jù)庫(kù)的第一操作請(qǐng)求,所述第一操作請(qǐng)求是基于超文本傳輸協(xié)議http的請(qǐng)求,所述第一操作請(qǐng)求中包括數(shù)據(jù)庫(kù)操作語句,其中,所述客戶端與所述代理服務(wù)之間的通信連接為http連接;
4、在不滿足第一條件的情況下,創(chuàng)建所述客戶端與所述代理服務(wù)之間的第一會(huì)話,并建立所述代理服務(wù)與所述數(shù)據(jù)庫(kù)的第一傳輸控制協(xié)議tcp連接,將所述第一會(huì)話的會(huì)話標(biāo)識(shí)與所述第一tcp連接的連接標(biāo)識(shí)的對(duì)應(yīng)關(guān)系存儲(chǔ)到第一映射關(guān)系中;將所述第一tcp連接作為目標(biāo)tcp連接;將所述第一會(huì)話的第一會(huì)話信息發(fā)送給所述客戶端;其中,任一會(huì)話的會(huì)話信息包括所述任一會(huì)話的會(huì)話標(biāo)識(shí);所述第一映射關(guān)系包括至少一個(gè)已創(chuàng)建的會(huì)話的會(huì)話標(biāo)識(shí)與對(duì)應(yīng)的tcp連接的連接標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系;所述不滿足第一條件包括所述第一操作請(qǐng)求中不包括會(huì)話信息;
5、若所述第一操作請(qǐng)求包括會(huì)話信息,將所述會(huì)話信息作為第二會(huì)話信息,并基于存儲(chǔ)的第一映射關(guān)系,確定所述第二會(huì)話信息中的會(huì)話標(biāo)識(shí)對(duì)應(yīng)的連接標(biāo)識(shí),將所述連接標(biāo)識(shí)對(duì)應(yīng)的第二tcp連接作為目標(biāo)tcp連接;
6、通過所述目標(biāo)tcp連接與所述數(shù)據(jù)庫(kù)通信,并通過所述數(shù)據(jù)庫(kù)執(zhí)行所述數(shù)據(jù)庫(kù)操作語句,獲得執(zhí)行結(jié)果,將所述執(zhí)行結(jié)果發(fā)送至所述客戶端。
7、根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供了一種數(shù)據(jù)庫(kù)訪問裝置,該裝置應(yīng)用于代理服務(wù),該代理服務(wù)與數(shù)據(jù)庫(kù)部署在同一個(gè)主干網(wǎng)絡(luò),該裝置包括:
8、調(diào)度模塊,用于接收客戶端發(fā)送的針對(duì)所述數(shù)據(jù)庫(kù)的第一操作請(qǐng)求,所述第一操作請(qǐng)求是基于超文本傳輸協(xié)議http的請(qǐng)求,所述第一操作請(qǐng)求中包括數(shù)據(jù)庫(kù)操作語句,其中,所述客戶端與所述代理服務(wù)之間的通信連接為http連接;
9、連接緩存模塊,用于在不滿足第一條件的情況下,創(chuàng)建所述客戶端與所述代理服務(wù)之間的第一會(huì)話,并建立所述代理服務(wù)與所述數(shù)據(jù)庫(kù)的第一傳輸控制協(xié)議tcp連接,將所述第一會(huì)話的會(huì)話標(biāo)識(shí)與所述第一tcp連接的連接標(biāo)識(shí)的對(duì)應(yīng)關(guān)系存儲(chǔ)到第一映射關(guān)系中;將所述第一tcp連接作為目標(biāo)tcp連接;其中,任一會(huì)話的會(huì)話信息包括所述任一會(huì)話的會(huì)話標(biāo)識(shí);所述第一映射關(guān)系包括至少一個(gè)已創(chuàng)建的會(huì)話的會(huì)話標(biāo)識(shí)與對(duì)應(yīng)的tcp連接的連接標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系;所述不滿足第一條件包括所述第一操作請(qǐng)求中不包括會(huì)話信息;
10、所述連接緩存模塊,還用于若所述第一操作請(qǐng)求包括會(huì)話信息,將所述會(huì)話信息作為第二會(huì)話信息,并基于存儲(chǔ)的第一映射關(guān)系,確定所述第二會(huì)話信息中的會(huì)話標(biāo)識(shí)對(duì)應(yīng)的連接標(biāo)識(shí),將所述連接標(biāo)識(shí)對(duì)應(yīng)的第二tcp連接作為目標(biāo)tcp連接;
11、執(zhí)行模塊,用于通過所述目標(biāo)tcp連接與所述數(shù)據(jù)庫(kù)通信,并通過所述數(shù)據(jù)庫(kù)執(zhí)行所述數(shù)據(jù)庫(kù)操作語句;
12、數(shù)據(jù)處理模塊,用于將所述第一會(huì)話的第一會(huì)話信息發(fā)送給所述客戶端;還用于獲得執(zhí)行結(jié)果,將所述執(zhí)行結(jié)果發(fā)送至所述客戶端。
13、根據(jù)本申請(qǐng)實(shí)施例的第三方面,提供了一種電子設(shè)備,該電子設(shè)備包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上的計(jì)算機(jī)程序,處理器執(zhí)行程序時(shí)實(shí)現(xiàn)如第一方面所提供的方法的步驟。
14、根據(jù)本申請(qǐng)實(shí)施例的第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面所提供的方法的步驟。
15、根據(jù)本申請(qǐng)實(shí)施例的第五方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)指令,該計(jì)算機(jī)指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,當(dāng)計(jì)算機(jī)設(shè)備的處理器從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取該計(jì)算機(jī)指令,處理器執(zhí)行該計(jì)算機(jī)指令,使得該計(jì)算機(jī)設(shè)備執(zhí)行實(shí)現(xiàn)如第一方面所提供的方法的步驟。
16、本申請(qǐng)實(shí)施例提供的技術(shù)方案帶來的有益效果是:通過接收客戶端通過http發(fā)送的第一操作請(qǐng)求后,根據(jù)該第一操作請(qǐng)求中是否包括會(huì)話信息,確定該第一操作請(qǐng)求是否有對(duì)應(yīng)的tcp連接,并在沒有對(duì)應(yīng)的tcp連接時(shí),建立tcp連接,在有對(duì)應(yīng)的tcp連接時(shí),通過該tcp連接執(zhí)行第一操作請(qǐng)求中的數(shù)據(jù)庫(kù)操作語句,獲得執(zhí)行結(jié)果,并將執(zhí)行結(jié)果返回至客戶端,從而實(shí)現(xiàn)了基于http訪問數(shù)據(jù)庫(kù),解決了一些場(chǎng)景中不能建立tcp連接從而不能訪問數(shù)據(jù)庫(kù)的問題。并且,本申請(qǐng)實(shí)施例,在第一操作請(qǐng)求中不包括會(huì)話信息時(shí),建立客戶端與代理服務(wù)間的會(huì)話,生成會(huì)話信息,并建立了會(huì)話的會(huì)話表示與tcp連接的連接標(biāo)識(shí)間的對(duì)應(yīng)關(guān)系,使得同一會(huì)話對(duì)應(yīng)的第一操作請(qǐng)求能夠通過同一tcp連接進(jìn)行執(zhí)行,從而本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)訪問方法,能夠支持事務(wù)型數(shù)據(jù)庫(kù)請(qǐng)求。進(jìn)一步的,本申請(qǐng)實(shí)施例,將代理服務(wù)與數(shù)據(jù)庫(kù)部署在同一主干網(wǎng)絡(luò),減小了代理服務(wù)與數(shù)據(jù)庫(kù)間的距離,縮短了數(shù)據(jù)庫(kù)與代理服務(wù)間的數(shù)據(jù)傳輸?shù)臅r(shí)間,相比于基于tcp連接訪問數(shù)據(jù)庫(kù)的方式,提高了與數(shù)據(jù)庫(kù)進(jìn)行連接的速度,解決了引入中間層帶來的延遲問題。
1.一種數(shù)據(jù)庫(kù)訪問方法,其特征在于,由代理服務(wù)執(zhí)行,所述代理服務(wù)與數(shù)據(jù)庫(kù)部署在同一主干網(wǎng)絡(luò),所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述客戶端安裝有多個(gè)驅(qū)動(dòng)程序,每個(gè)驅(qū)動(dòng)程序?qū)?yīng)一種編程語言;
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,任一會(huì)話的會(huì)話信息還包括代理服務(wù)標(biāo)識(shí);
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第一操作請(qǐng)求包括指示信息,所述指示信息用于指示所述第一操作請(qǐng)求對(duì)應(yīng)的請(qǐng)求類型,所述請(qǐng)求類型為事務(wù)型請(qǐng)求或非事務(wù)型請(qǐng)求,所述方法還包括:
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,每個(gè)tcp連接具有對(duì)應(yīng)的時(shí)效狀態(tài),所述時(shí)效狀態(tài)用于表征對(duì)應(yīng)的tcp連接是否有效;所述第一操作請(qǐng)求包括指示信息,所述指示信息用于指示所述第一操作請(qǐng)求對(duì)應(yīng)的請(qǐng)求類型,所述請(qǐng)求類型為事務(wù)型請(qǐng)求或非事務(wù)型請(qǐng)求;
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述確定所述目標(biāo)tcp連接的時(shí)效狀態(tài),包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述執(zhí)行結(jié)果發(fā)送至所述客戶端,包括:
8.一種數(shù)據(jù)庫(kù)訪問裝置,其特征在于,應(yīng)用于代理服務(wù),所述代理服務(wù)與數(shù)據(jù)庫(kù)部署在同一主干網(wǎng)絡(luò),所述裝置包括:
9.一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述計(jì)算機(jī)程序以實(shí)現(xiàn)權(quán)利要求1-7任一項(xiàng)所述方法的步驟。
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-7任一項(xiàng)所述方法的步驟。
11.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-7任一項(xiàng)所述方法的步驟。