本申請涉及人工智能和數(shù)據(jù)庫數(shù)據(jù)處理,尤其涉及基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法及其設(shè)備。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)和其他數(shù)據(jù)生成渠道的普及,數(shù)據(jù)出現(xiàn)爆發(fā)式的增長,數(shù)據(jù)庫的應(yīng)用也變得越來越廣泛,而要求加載的數(shù)據(jù)庫數(shù)據(jù)總量和單個文件的量也越來越大,因此,數(shù)據(jù)庫數(shù)據(jù)的加載效率是數(shù)據(jù)庫的總體性能的一個非常重要的指標(biāo)。對于如何快速向數(shù)據(jù)庫加載數(shù)據(jù),尤其是針對單個大文件的加載成為數(shù)據(jù)庫領(lǐng)域的一個研究重點。
2、現(xiàn)有技術(shù)中,采用多進(jìn)程進(jìn)行并發(fā)和插件式技術(shù)進(jìn)行數(shù)據(jù)庫數(shù)據(jù)加載,但該技術(shù)存在如下缺陷:1、加載前需要事先指定加載的行數(shù)或者進(jìn)行一次預(yù)掃描計算出加載文件的行數(shù),然后并發(fā)時根據(jù)這個行數(shù)計算出每個并發(fā)進(jìn)程的起始偏移量從而進(jìn)行并發(fā)執(zhí)行,從而降低了數(shù)據(jù)的處理效率。2、采用多進(jìn)程并發(fā)需要借助共享內(nèi)存進(jìn)行數(shù)據(jù)和進(jìn)程狀態(tài)交互,解析進(jìn)程需要將數(shù)據(jù)序列化寫入共享內(nèi)存,而寫進(jìn)程需要從共享內(nèi)存中讀取并反序列化,需要進(jìn)行兩次內(nèi)存拷貝、序列化和反序列化,降低了數(shù)據(jù)的處理速度。3、該技術(shù)方案雖然具體加載功能由服務(wù)器插件實現(xiàn),但同時還存在一個客戶端工具進(jìn)行命令行參數(shù)解析或者配置文件解析,增加了用戶的學(xué)習(xí)成本和維護(hù)成本,也增加了出問題的概率。4、采用多進(jìn)程并發(fā),系統(tǒng)創(chuàng)建進(jìn)程的開銷大,并且通過模擬客戶端連接的方式啟動解析進(jìn)程,會涉及連接安全認(rèn)證,增加了安全風(fēng)險??梢?,現(xiàn)有技術(shù)中存在數(shù)據(jù)庫數(shù)據(jù)加載性能差的問題。
技術(shù)實現(xiàn)思路
1、本申請實施例的目的在于提出基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法及其設(shè)備,以解決現(xiàn)有技術(shù)中數(shù)據(jù)庫數(shù)據(jù)加載存在數(shù)據(jù)庫數(shù)據(jù)加載性能差的問題。
2、為了解決上述技術(shù)問題,本申請實施例提供一種基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,采用了如下所述的技術(shù)方案:
3、獲取數(shù)據(jù)庫數(shù)據(jù)加載請求信息,所述數(shù)據(jù)庫數(shù)據(jù)加載請求信息包括用于加載數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)加載函數(shù),所述數(shù)據(jù)加載函數(shù)是通過預(yù)設(shè)數(shù)據(jù)庫數(shù)據(jù)加載插件與預(yù)設(shè)數(shù)據(jù)加載工具連接后加載到目標(biāo)數(shù)據(jù)庫中的;
4、根據(jù)所述數(shù)據(jù)加載函數(shù)獲取配置文件;
5、根據(jù)所述配置文件,啟動多個解析線程并發(fā)對源數(shù)據(jù)庫數(shù)據(jù)進(jìn)行解析,并將對應(yīng)的解析結(jié)果組成元組,放入對應(yīng)的元組隊列中;
6、遍歷各個元組隊列,取出對應(yīng)的元組數(shù)據(jù),并生成目標(biāo)數(shù)據(jù)返回給目標(biāo)客戶端。
7、為了解決上述技術(shù)問題,本申請實施例還提供一種基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置,采用了如下所述的技術(shù)方案:
8、所述基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置包括:
9、第一獲取模塊,用于獲取數(shù)據(jù)庫數(shù)據(jù)加載請求信息,所述數(shù)據(jù)庫數(shù)據(jù)加載請求信息包括用于加載數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)加載函數(shù),所述數(shù)據(jù)加載函數(shù)是通過預(yù)設(shè)數(shù)據(jù)庫數(shù)據(jù)加載插件與預(yù)設(shè)數(shù)據(jù)加載工具連接后加載到目標(biāo)數(shù)據(jù)庫中的;
10、第二獲取模塊,用于根據(jù)所述數(shù)據(jù)加載函數(shù)獲取配置文件;
11、解析模塊,用于根據(jù)所述配置文件,啟動多個解析線程并發(fā)對源數(shù)據(jù)庫數(shù)據(jù)進(jìn)行解析,并將對應(yīng)的解析結(jié)果組成元組,放入對應(yīng)的元組隊列中;
12、生成模塊,用于遍歷各個元組隊列,取出對應(yīng)的元組數(shù)據(jù),并生成目標(biāo)數(shù)據(jù)返回給目標(biāo)客戶端。
13、進(jìn)一步的,所述基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置還包括:
14、初始化模塊,用于獲取存儲加載狀態(tài)的共享內(nèi)存,并初始化所述共享內(nèi)存的加載狀態(tài)信息;
15、更新模塊,用于待各個解析線程解析完畢后,更新所述共享內(nèi)存中的加載狀態(tài)信息。
16、為了解決上述技術(shù)問題,本申請實施例還提供一種計算機設(shè)備,采用了如下所述的技術(shù)方案:
17、所述計算機設(shè)備包括存儲器和處理器,所述存儲器中存儲有計算機可讀指令,所述處理器執(zhí)行所述計算機可讀指令時實現(xiàn)上述實施例中任一項所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法的步驟。
18、為了解決上述技術(shù)問題,本申請實施例還提供一種計算機可讀存儲介質(zhì),采用了如下所述的技術(shù)方案:
19、所述計算機可讀存儲介質(zhì)上存儲有計算機可讀指令,所述計算機可讀指令被處理器執(zhí)行時實現(xiàn)上述實施例中任一項所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法的步驟。
20、與現(xiàn)有技術(shù)相比,本申請實施例主要有以下有益效果:通過獲取數(shù)據(jù)庫數(shù)據(jù)加載請求信息,所述數(shù)據(jù)庫數(shù)據(jù)加載請求信息包括用于加載數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)加載函數(shù),所述數(shù)據(jù)加載函數(shù)是通過預(yù)設(shè)數(shù)據(jù)庫數(shù)據(jù)加載插件與預(yù)設(shè)數(shù)據(jù)加載工具連接后加載到目標(biāo)數(shù)據(jù)庫中的;根據(jù)所述數(shù)據(jù)加載函數(shù)獲取配置文件;根據(jù)所述配置文件,啟動多個解析線程并發(fā)對源數(shù)據(jù)庫數(shù)據(jù)進(jìn)行解析,并將對應(yīng)的解析結(jié)果組成元組,放入對應(yīng)的元組隊列中;遍歷各個元組隊列,取出對應(yīng)的元組數(shù)據(jù),并生成目標(biāo)數(shù)據(jù)返回給目標(biāo)客戶端。這樣,以數(shù)據(jù)庫數(shù)據(jù)加載插件的方式注冊到數(shù)據(jù)庫服務(wù)器,通過提供一個加載的函數(shù)給客戶使用,用戶直接通過現(xiàn)有的客戶端工具就可以直接調(diào)用,實現(xiàn)了功能的可插拔性,增強了可擴(kuò)展性,降低了與數(shù)據(jù)庫服務(wù)器的耦合性,并且降低了用戶對新工具的學(xué)習(xí)和使用成本。同時,采用多線程進(jìn)行并發(fā)操作,以元組和元組隊列的方式進(jìn)行存放,相比較采用多進(jìn)程的方式,減少了并發(fā)的啟動開銷(多線程的創(chuàng)建開銷低于多進(jìn)程的創(chuàng)建)、減少了中間的內(nèi)存拷貝、減少提前進(jìn)行單點預(yù)讀整個文件進(jìn)行并發(fā)任務(wù)分配、減少中間進(jìn)程連接的認(rèn)證規(guī)避了安全風(fēng)險、并減少共享內(nèi)存等資源的使用。從而提高了數(shù)據(jù)庫數(shù)據(jù)加載性能。
1.一種基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,包括下述步驟:
2.根據(jù)權(quán)利要求1所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,在所述根據(jù)所述配置文件,啟動多個解析線程并發(fā)對源數(shù)據(jù)庫數(shù)據(jù)進(jìn)行解析,并將對應(yīng)的解析結(jié)果組成元組,放入對應(yīng)的元組隊列中的步驟之前,還包括:
3.根據(jù)權(quán)利要求1所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,所述數(shù)據(jù)加載函數(shù)包括文件路徑導(dǎo)入?yún)?shù)、目標(biāo)表導(dǎo)入?yún)?shù)以及文件名導(dǎo)入?yún)?shù),所述根據(jù)所述數(shù)據(jù)加載函數(shù)獲取配置文件的步驟,具體包括:
4.根據(jù)權(quán)利要求2所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,所述根據(jù)所述配置文件,啟動多個解析線程并發(fā)對源數(shù)據(jù)庫數(shù)據(jù)進(jìn)行解析,并將對應(yīng)的解析結(jié)果組成元組,放入對應(yīng)的元組隊列中的步驟,具體包括:
5.根據(jù)權(quán)利要求4所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,在所述將每個解析線程的字段數(shù)據(jù)分別按配置文件目標(biāo)表的信息進(jìn)行重組形成元組的步驟之后,基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法還包括:
6.根據(jù)權(quán)利要求2所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法,其特征在于,所述遍歷各個元組隊列,取出對應(yīng)的元組數(shù)據(jù),并生成目標(biāo)數(shù)據(jù)返回給目標(biāo)客戶端的步驟,具體包括:
7.一種基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置,其特征在于,包括:
8.根據(jù)權(quán)利要求7所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置,其特征在于,所述基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)裝置還包括:
9.一種計算機設(shè)備,其特征在于,包括存儲器和處理器,所述存儲器中存儲有計算機可讀指令,所述處理器執(zhí)行所述計算機可讀指令時實現(xiàn)如權(quán)利要求1至6中任一項所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法的步驟。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)上存儲有計算機可讀指令,所述計算機可讀指令被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至6中任一項所述的基于多線程并發(fā)和插件式向數(shù)據(jù)庫加載數(shù)據(jù)方法的步驟。