本發(fā)明涉及集群數(shù)據(jù)庫領(lǐng)域,特別是涉及一種支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具及方法。
背景技術(shù):
集群數(shù)據(jù)庫是使用多臺普通服務(wù)器協(xié)同提供高性能的數(shù)據(jù)庫服務(wù),適用于海量數(shù)據(jù)的保存、查詢和分析。因為其適用于大數(shù)據(jù)場合,需要配合高性能的數(shù)據(jù)加載工具,負責(zé)從各種數(shù)據(jù)源讀取數(shù)據(jù),加載到集群數(shù)據(jù)庫之中。在現(xiàn)實的應(yīng)用中,出于信息安全方面的考慮,數(shù)據(jù)源往往帶有權(quán)限檢查機制。加載工具如果對要加載的數(shù)據(jù)文件沒有足夠權(quán)限,就無法讀取要加載的數(shù)據(jù),并且報錯,甚至異常退出。如果要加載若干個數(shù)據(jù)文件,就有可能在加載中途由于權(quán)限不足的原因?qū)е录虞d工具報錯退出,白白浪費了寶貴的加載時間,用戶不得不調(diào)整權(quán)限,然后重新開始進行加載。例如,HDFS數(shù)據(jù)源的文件支持三種不同的權(quán)限:所有者權(quán)限(Owner)、組權(quán)限(Group)和其他用戶權(quán)限(Other)。判斷權(quán)限的過程對于訪問者(如加載工具)而言是一個黑盒過程,訪問者無法獲取全部的權(quán)限判別依據(jù),如系統(tǒng)權(quán)限開關(guān)、組信息、缺省用戶信息等重要信息。訪問者只能獲取部分權(quán)限信息,如文件的所有者、各種用戶(所有者、同組用戶、其他用戶)的配置權(quán)限等。
現(xiàn)階段使用的加載工具,無法預(yù)先判斷加載工具是否具備全部待加載數(shù)據(jù)文件的權(quán)限,常常造成在讀取數(shù)據(jù)時由于缺少權(quán)限而異常退出,這種加載失敗的情況會浪費大量時間。另一方面,在待加載的數(shù)據(jù)文件中,可能存在某些文件具備相同的權(quán)限信息,如果能夠?qū)ζ渲幸粋€文件的權(quán)限進行預(yù)判,就可以知道所有這些文件的權(quán)限判斷結(jié)果,但現(xiàn)階段并無法實現(xiàn)這種操作。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種使用效率高、靈活性強的支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具及方法。
本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具,其中,包括加載工具使用接口、加載任務(wù)管理模塊和加載任務(wù)執(zhí)行模塊,加載工具使用接口的信號輸出端與加載任務(wù)管理模塊的信號接收端連接,加載任務(wù)管理模塊的信號輸出端與加載任務(wù)執(zhí)行模塊的信號接收端連接,加載任務(wù)執(zhí)行模塊內(nèi)部又包括權(quán)限預(yù)判模塊,權(quán)限預(yù)判模塊的信號輸出端分別與文件列表和權(quán)限信息列表連接,
加載工具使用接口用于啟動加載任務(wù),并將各個任務(wù)的參數(shù)傳遞給加載任務(wù)管理模塊;
加載任務(wù)管理模塊用于保存、維護和調(diào)度所有接收到的加載任務(wù);
加載任務(wù)執(zhí)行模塊用于負責(zé)具體加載任務(wù)的執(zhí)行;
權(quán)限預(yù)判模塊用于對數(shù)據(jù)文件進行權(quán)限預(yù)判。
本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具,其中所述支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具還包括讀數(shù)據(jù)模塊、數(shù)據(jù)源訪問模塊、寫數(shù)據(jù)模塊和數(shù)據(jù)庫訪問模塊,讀數(shù)據(jù)模塊的數(shù)據(jù)輸出端與加載任務(wù)執(zhí)行模塊的數(shù)據(jù)接收端連接,讀數(shù)據(jù)模塊的數(shù)據(jù)接收端與數(shù)據(jù)源訪問模塊的數(shù)據(jù)輸出端連接,寫數(shù)據(jù)模塊的數(shù)據(jù)接收端與加載任務(wù)執(zhí)行模塊的數(shù)據(jù)輸出端連接,寫數(shù)據(jù)模塊的數(shù)據(jù)輸出端與數(shù)據(jù)庫訪問模塊的數(shù)據(jù)接收端連接,讀數(shù)據(jù)模塊用于提供統(tǒng)一的讀取數(shù)據(jù)接口;數(shù)據(jù)源訪問模塊用于從具體的數(shù)據(jù)源上讀取數(shù)據(jù);寫數(shù)據(jù)模塊用于提供統(tǒng)一的寫數(shù)據(jù)接口;數(shù)據(jù)庫訪問模塊用于將接收到的數(shù)據(jù)加載進集群數(shù)據(jù)庫。
本發(fā)明采用的支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載方法,其中,包括如下步驟:
步驟S1,將加載參數(shù)通過加載工具使用接口輸入,并輸出給加載任務(wù)管理模塊;
步驟S2,加載任務(wù)管理模塊根據(jù)接收到的參數(shù),創(chuàng)建加載任務(wù)列表;
步驟S3,將待加載任務(wù)輸出給加載任務(wù)執(zhí)行模塊,權(quán)限預(yù)判模塊對待加載任務(wù)進行預(yù)判,將全部待加載數(shù)據(jù)文件名生成文件列表,將已經(jīng)進行過預(yù)判的文件生成權(quán)限信息列表;
步驟S4,加載任務(wù)執(zhí)行模塊分別讀取文件列表和權(quán)限信息列表,如果文件列表中沒有還未進行權(quán)限預(yù)判的文件,結(jié)束預(yù)判,開始加載數(shù)據(jù);如果從文件列表中找出還未進行權(quán)限預(yù)判的文件;
步驟S5,檢查是否存在同權(quán)限的文件,如果權(quán)限信息列表中已經(jīng)包含與此文件的權(quán)限信息相同的權(quán)限信息,就直接將其中保存的預(yù)判結(jié)果作為對此文件的預(yù)判結(jié)果,轉(zhuǎn)向步驟S4,如果權(quán)限信息列表中不存在包含與此文件的權(quán)限信息相同的權(quán)限信息,訪問此文件的一小部分,根據(jù)訪問結(jié)果判斷權(quán)限是否足夠,并將此文件的權(quán)限信息和預(yù)判結(jié)果保存到權(quán)限信息列表中;
步驟S6,如果權(quán)限不足,提示用戶后轉(zhuǎn)向步驟S4。
本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具及方法與現(xiàn)有技術(shù)不同之處在于:本發(fā)明設(shè)置有加載任務(wù)執(zhí)行模塊,在正式開始加載數(shù)據(jù)之前,從數(shù)據(jù)源獲取所有待加載文件的權(quán)限信息,并依次訪問每一個待加載文件的一小段數(shù)據(jù),確定是否具有對該文件的訪問權(quán)限;在訪問過程中如果某個待加載文件與另一個待加載文件的權(quán)限信息相同,而另一個文件已經(jīng)被確定其訪問權(quán)限,則這個文件無需再判斷權(quán)限;如果加載任務(wù)執(zhí)行模塊對某個文件不具備訪問權(quán)限,提示用戶存在權(quán)限不足的情況,所有權(quán)限信息均判斷完畢,再正式開始加載數(shù)據(jù)。由于采用上述技術(shù)方案,能夠從帶有權(quán)限檢查的數(shù)據(jù)源上讀取數(shù)據(jù),并且在加載數(shù)據(jù)之前就可以快速預(yù)判權(quán)限信息,避免了加載到中途的異常退出,極大增強了集群數(shù)據(jù)庫加載工具對用戶的友好性,極大提高了集群數(shù)據(jù)庫加載工具在用戶場景中的使用效率,極大提高了集群數(shù)據(jù)庫加載工具功能的實用性和靈活性。
下面結(jié)合附圖對本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具及方法作進一步說明。
附圖說明
圖1為本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具的結(jié)構(gòu)示意圖;
圖2為本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載方法的流程圖。
具體實施方式
如圖1所示,為本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具的結(jié)構(gòu)示意圖,包括加載工具使用接口1、加載任務(wù)管理模塊2和加載任務(wù)執(zhí)行模塊3。加載工具使用接口1的信號輸出端與加載任務(wù)管理模塊2的信號接收端連接,加載工具使用接口1用于啟動加載任務(wù),并將各個任務(wù)的參數(shù)傳遞給加載任務(wù)管理模塊2,加載任務(wù)管理模塊2用于保存、維護和調(diào)度所有接收到的加載任務(wù)。加載任務(wù)管理模塊2的信號輸出端與加載任務(wù)執(zhí)行模塊3的信號接收端連接,加載任務(wù)執(zhí)行模塊3內(nèi)部又包括權(quán)限預(yù)判模塊8,權(quán)限預(yù)判模塊8用于數(shù)據(jù)文件的權(quán)限預(yù)判,權(quán)限預(yù)判模塊8的信號輸出端分別與文件列表和權(quán)限信息列表連接,文件列表中輸入有全部待加載數(shù)據(jù)文件的文件名,權(quán)限信息列表中輸入有已經(jīng)進行過預(yù)判的文件的權(quán)限預(yù)判結(jié)果。加載任務(wù)執(zhí)行模塊3的數(shù)據(jù)接收端與讀數(shù)據(jù)模塊4的數(shù)據(jù)輸出端連接,讀數(shù)據(jù)模塊4的數(shù)據(jù)接收端與數(shù)據(jù)源訪問模塊6的數(shù)據(jù)輸出端連接,加載任務(wù)執(zhí)行模塊3的數(shù)據(jù)輸出端與寫數(shù)據(jù)模塊5的數(shù)據(jù)接收端連接,寫數(shù)據(jù)模塊5的數(shù)據(jù)輸出端與數(shù)據(jù)庫訪問模塊7的數(shù)據(jù)接收端連接,讀數(shù)據(jù)模塊4用于提供統(tǒng)一的讀取數(shù)據(jù)接口;數(shù)據(jù)源訪問模塊6用于從具體的數(shù)據(jù)源上讀取數(shù)據(jù);寫數(shù)據(jù)模塊5用于提供統(tǒng)一的寫數(shù)據(jù)接口;數(shù)據(jù)庫訪問模塊7用于將接收到的數(shù)據(jù)加載進集群數(shù)據(jù)庫。
如圖2所示,為本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載方法的流程圖,包括如下步驟:
步驟S1,將加載參數(shù)通過加載工具使用接口1輸入,并輸出給加載任務(wù)管理模塊2;
步驟S2,加載任務(wù)管理模塊2根據(jù)接收到的參數(shù),創(chuàng)建加載任務(wù)列表;
步驟S3,加載任務(wù)管理模塊2將待加載任務(wù)輸出給加載任務(wù)執(zhí)行模塊3,加載任務(wù)執(zhí)行模塊3中的權(quán)限預(yù)判模塊8對待加載任務(wù)進行預(yù)判,將全部待加載數(shù)據(jù)文件名生成文件列表,將已經(jīng)進行過預(yù)判的文件生成權(quán)限信息列表;
步驟S4,加載任務(wù)執(zhí)行模塊2分別讀取文件列表和權(quán)限信息列表,如果文件列表中沒有還未進行權(quán)限預(yù)判的文件,結(jié)束預(yù)判,開始加載數(shù)據(jù);如果從文件列表中找出還未進行權(quán)限預(yù)判的文件;
步驟S5,檢查是否存在同權(quán)限的文件,如果權(quán)限信息列表中已經(jīng)包含與此文件的權(quán)限信息相同的權(quán)限信息,就直接將其中保存的預(yù)判結(jié)果作為對此文件的預(yù)判結(jié)果,轉(zhuǎn)向步驟S4,如果權(quán)限信息列表中不存在包含與此文件的權(quán)限信息相同的權(quán)限信息,訪問此文件的一小部分,根據(jù)訪問結(jié)果判斷權(quán)限是否足夠,并將此文件的權(quán)限信息和預(yù)判結(jié)果保存到權(quán)限信息列表中;
步驟S6,如果權(quán)限不足,提示用戶后轉(zhuǎn)向步驟S4。
實施例:本發(fā)明的一個實施例是包括四個待加載數(shù)據(jù)文件的帶有權(quán)限檢查的數(shù)據(jù)加載過程:待加載文件一、file1,所有者是lee,組是admin,權(quán)限配置是700;待加載文件二、file2,所有者是zxm,組是manager,權(quán)限配置是660;待加載文件三、file3,所有者是lee,組是admin,權(quán)限配置是700;待加載文件四、file1,所有者是zxm,組是admin,權(quán)限配置是700。加載運行過程如下:
1.啟動加載工具。
2.獲取待加載的數(shù)據(jù)文件列表(file1、file2、file3、file4)。
3.預(yù)判file1的權(quán)限,訪問數(shù)據(jù)源,結(jié)果為有權(quán)限。
4.預(yù)判file2的權(quán)限,訪問數(shù)據(jù)源,結(jié)果為有權(quán)限。
5.預(yù)判file3的權(quán)限,因為與file1權(quán)限信息相同,結(jié)果為有權(quán)限。
6.預(yù)判file4的權(quán)限,訪問數(shù)據(jù)源,結(jié)果為無權(quán)限,提示用戶。
7.用戶確認后,開始進行加載;
8.加載完成,加載工具退出。
本發(fā)明支持快速預(yù)判權(quán)限的集權(quán)數(shù)據(jù)加載工具及方法,設(shè)置有加載任務(wù)執(zhí)行模塊3,在正式開始加載數(shù)據(jù)之前,從數(shù)據(jù)源獲取所有待加載文件的權(quán)限信息,并依次訪問每一個待加載文件的一小段數(shù)據(jù),確定是否具有對該文件的訪問權(quán)限;在訪問過程中如果某個待加載文件與另一個待加載文件的權(quán)限信息相同,而另一個文件已經(jīng)被確定其訪問權(quán)限,則這個文件無需再判斷權(quán)限;如果加載任務(wù)執(zhí)行模塊3對某個文件不具備訪問權(quán)限,提示用戶存在權(quán)限不足的情況,所有權(quán)限信息均判斷完畢,再正式開始加載數(shù)據(jù)。由于采用上述技術(shù)方案,能夠從帶有權(quán)限檢查的數(shù)據(jù)源上讀取數(shù)據(jù),并且在加載數(shù)據(jù)之前就可以快速預(yù)判權(quán)限信息,避免了加載到中途的異常退出,極大增強了集群數(shù)據(jù)庫加載工具對用戶的友好性,極大提高了集群數(shù)據(jù)庫加載工具在用戶場景中的使用效率,極大提高了集群數(shù)據(jù)庫加載工具功能的實用性和靈活性,與現(xiàn)有技術(shù)相比具有明顯的優(yōu)點。
以上所述的實施例僅僅是對本發(fā)明的優(yōu)選實施方式進行描述,并非對本發(fā)明的范圍進行限定,在不脫離本發(fā)明設(shè)計精神的前提下,本領(lǐng)域普通技術(shù)人員對本發(fā)明的技術(shù)方案作出的各種變形和改進,均應(yīng)落入本發(fā)明權(quán)利要求書確定的保護范圍內(nèi)。