本發(fā)明屬于大數(shù)據(jù)平臺(tái)技術(shù)領(lǐng)域,具體涉及大數(shù)據(jù)平臺(tái)的統(tǒng)一數(shù)據(jù)資源管理系統(tǒng)與方法。
背景技術(shù):
隨著信息化技術(shù)的發(fā)展,數(shù)據(jù)已經(jīng)滲透到當(dāng)今每一個(gè)行業(yè)和業(yè)務(wù)只能領(lǐng)域,成為重要的生產(chǎn)因素。對(duì)海量數(shù)據(jù)進(jìn)行有效管理并進(jìn)一步加以挖掘和應(yīng)用,已經(jīng)成為企業(yè)提高核心競(jìng)爭(zhēng)力、搶占市場(chǎng)先機(jī)的關(guān)鍵。在此背景之下,大數(shù)據(jù)技術(shù)應(yīng)運(yùn)而生,它具有數(shù)據(jù)體量大、數(shù)據(jù)類型多、價(jià)值密度低以及處理速度快等鮮明特點(diǎn)。
在現(xiàn)有的大數(shù)據(jù)平臺(tái)(以Hadoop為典型代表)上,不同類型的數(shù)據(jù)資源往往通過大數(shù)據(jù)生態(tài)系統(tǒng)中的不同的數(shù)據(jù)管理組件來(lái)分別進(jìn)行管理。例如:分布式文件系統(tǒng)(以HDSFS為典型代表)管理著諸如目錄和文件這樣的文件型數(shù)據(jù)對(duì)象,分布式列式數(shù)據(jù)庫(kù)系統(tǒng)(以HBASE為代表)則管理著名字空間、表、列族、列等數(shù)據(jù)對(duì)象,而分布式表格系統(tǒng)(以HIVE為典型代表)則管理著數(shù)據(jù)庫(kù)、表格、字段等數(shù)據(jù)對(duì)象。與此同時(shí),不同的數(shù)據(jù)管理組件又使用了不同的訪問控制策略來(lái)保護(hù)其管理的數(shù)據(jù)對(duì)象不受未經(jīng)授權(quán)的訪問操作。
然而,在現(xiàn)有Hadoop大數(shù)據(jù)平臺(tái)的技術(shù)條件下,不同類型數(shù)據(jù)資源因?yàn)榫哂薪厝徊煌倪壿嫈?shù)據(jù)模型,因此缺乏統(tǒng)一的元數(shù)據(jù)管理,進(jìn)而導(dǎo)致平臺(tái)用戶,甚至是平臺(tái)的管理員用戶,都無(wú)法獲得平臺(tái)中數(shù)據(jù)資源的統(tǒng)一視圖,難以發(fā)現(xiàn)并定位出特定分析任務(wù)可能需要訪問的全部數(shù)據(jù)資源,也難以對(duì)自己所擁有的數(shù)據(jù)資源實(shí)施簡(jiǎn)單有效的訪問控制。用戶必須要熟悉各種數(shù)據(jù)管理組件的不同的操作界面才能夠完成任務(wù)。
鑒于上述原因,如何針對(duì)大數(shù)據(jù)平臺(tái)中不同類型的數(shù)據(jù)資源,提供統(tǒng)一的視圖和操作界面進(jìn)行數(shù)據(jù)資源的元數(shù)據(jù)描述、發(fā)現(xiàn)、訪問控制等等,是本領(lǐng)域亟待解決的問題,具有應(yīng)用價(jià)值。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種大數(shù)據(jù)平臺(tái)的統(tǒng)一數(shù)據(jù)資源管理方法與系統(tǒng)。
本發(fā)明針對(duì)大數(shù)據(jù)平臺(tái)中由于存在各種不同類型的數(shù)據(jù)資源而導(dǎo)致的數(shù)據(jù)資源難以管理的問題,提出了針對(duì)不同類型數(shù)據(jù)資源的統(tǒng)一元數(shù)據(jù)描述,以及針對(duì)不同類型數(shù)據(jù)管理組件的統(tǒng)一適配器接口規(guī)范,并在此基礎(chǔ)上設(shè)計(jì)了一種統(tǒng)一的數(shù)據(jù)資源管理方法和系統(tǒng),支持統(tǒng)一的數(shù)據(jù)包上傳和下載、統(tǒng)一的數(shù)據(jù)發(fā)現(xiàn)、統(tǒng)一的數(shù)據(jù)訪問申請(qǐng)與授權(quán)等功能。
本發(fā)明首先提供一種統(tǒng)一的分層元模型來(lái)刻畫大數(shù)據(jù)平臺(tái)中的不同類型數(shù)據(jù)資源。這種分層元模型為不同類型數(shù)據(jù)資源的元數(shù)據(jù)提供了統(tǒng)一的表示模型,即使得不同類型的數(shù)據(jù)資源具有相同的元數(shù)據(jù)模式,為不同類型數(shù)據(jù)資源的統(tǒng)一管理提供了基礎(chǔ)。
所述的統(tǒng)一元模型由四層結(jié)構(gòu)組成:第一層是數(shù)據(jù)容器層,第二層是數(shù)據(jù)包層,第三層是數(shù)據(jù)資產(chǎn)層,第四層則是數(shù)據(jù)字段層。其中,所述的數(shù)據(jù)容器對(duì)應(yīng)于某種數(shù)據(jù)管理組件的一個(gè)運(yùn)行實(shí)例(通常部署在某一個(gè)集群上),所述的數(shù)據(jù)包是一組相關(guān)的數(shù)據(jù)資產(chǎn)的集合,所述的數(shù)據(jù)資產(chǎn)是由某一數(shù)據(jù)容器所管理的相對(duì)獨(dú)立的數(shù)據(jù)對(duì)象,所述的數(shù)據(jù)字段是關(guān)系型數(shù)據(jù)資產(chǎn)的數(shù)據(jù)字段。在物理上,數(shù)據(jù)包由數(shù)據(jù)容器存儲(chǔ)和管理。數(shù)據(jù)容器層對(duì)于普通用戶是透明的,用戶并不會(huì)感知到該層的存在,系統(tǒng)負(fù)責(zé)存儲(chǔ)并維護(hù)數(shù)據(jù)包到數(shù)據(jù)容器之間的映射關(guān)系。
元模型的相鄰層次之間自上而下具有一對(duì)多的映射關(guān)系,即每個(gè)數(shù)據(jù)容器存儲(chǔ)并管理了一個(gè)或多個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包都是一個(gè)或多個(gè)相互關(guān)聯(lián)的數(shù)據(jù)資產(chǎn)的集合,每項(xiàng)數(shù)據(jù)資產(chǎn)由可能由0個(gè)或多個(gè)數(shù)據(jù)字段構(gòu)成。這些映射關(guān)系由系統(tǒng)進(jìn)行雙向的存儲(chǔ)和維護(hù):根據(jù)給定的某個(gè)數(shù)據(jù)對(duì)象,既可以獲取它上一層的數(shù)據(jù)對(duì)象,也可以獲取它下一層數(shù)據(jù)對(duì)象的列表。
除了層次之間的映射關(guān)系外,元模型在每個(gè)層次上都為數(shù)據(jù)對(duì)象定義了多個(gè)屬性,這包括:基本描述屬性、訪問控制屬性、衍生關(guān)系屬性、以及用戶訪問信息。其中,基本描述屬性記錄了數(shù)據(jù)對(duì)象的相關(guān)行業(yè)、相關(guān)學(xué)科、關(guān)鍵詞、所有者、創(chuàng)建日期等描述信息;訪問控制屬性描述了數(shù)據(jù)對(duì)象能夠被哪些用戶以何種方式進(jìn)行訪問;衍生關(guān)系屬性描述了數(shù)據(jù)對(duì)象之間的衍生關(guān)系;用戶訪問信息則記錄了數(shù)據(jù)對(duì)象在何時(shí)被哪些用戶以何種方式進(jìn)行過訪問。
本發(fā)明在分層的統(tǒng)一元模型基礎(chǔ)上,進(jìn)一步定義了統(tǒng)一的適配器接口規(guī)范,任何一種類型的數(shù)據(jù)管理組件都可以通過定制符合接口規(guī)范的適配器插件而動(dòng)態(tài)可擴(kuò)展地接入到本系統(tǒng)。其中適配器接口涉及的功能包括(但不限于):(1)將數(shù)據(jù)對(duì)象的符號(hào)名稱翻譯成相應(yīng)數(shù)據(jù)容器中的具體數(shù)據(jù)對(duì)象; (2)數(shù)據(jù)包的上傳和下載; (3)數(shù)據(jù)權(quán)限授予和回收。通過統(tǒng)一適配器接口的抽象,本系統(tǒng)實(shí)現(xiàn)了動(dòng)態(tài)可擴(kuò)展性,能夠方便地支持不同類型的數(shù)據(jù)管理組件——只要為該數(shù)據(jù)管理組件定制開發(fā)相應(yīng)的適配器插件,并將適配器添加到系統(tǒng)中即可。
任何一種類型的數(shù)據(jù)管理組件可能存在著多個(gè)部署實(shí)例(即多個(gè)同類型的容器)。當(dāng)該種數(shù)據(jù)管理組件所對(duì)應(yīng)的適配器已經(jīng)被添加到系統(tǒng)后,它的每一個(gè)實(shí)例部署集群也可以作為數(shù)據(jù)容器添加到系統(tǒng)中。大數(shù)據(jù)平臺(tái)中的數(shù)據(jù)包是交由數(shù)據(jù)容器來(lái)進(jìn)行物理存儲(chǔ)和管理的。適配器屏蔽掉了不同類型數(shù)據(jù)管理組件中實(shí)現(xiàn)細(xì)節(jié)的差異性,而展現(xiàn)出一種統(tǒng)一的接口,其作用是雙向的,一方面它將數(shù)據(jù)對(duì)象的抽象操作指令轉(zhuǎn)化為對(duì)具體數(shù)據(jù)容器的具體命令序列并執(zhí)行;另一方面,它從具體容器中獲取有關(guān)數(shù)據(jù)包的描述信息,并將其轉(zhuǎn)化成統(tǒng)一的信息描述格式。
本發(fā)明在分層統(tǒng)一元模型和統(tǒng)一適配器接口規(guī)范的基礎(chǔ)上,提出了一種不同類型數(shù)據(jù)資源的統(tǒng)一管理系統(tǒng),即大數(shù)據(jù)平臺(tái)的統(tǒng)一數(shù)據(jù)資源管理系統(tǒng)。該系統(tǒng)支持統(tǒng)一的數(shù)據(jù)包上傳和下載、統(tǒng)一的數(shù)據(jù)發(fā)現(xiàn)、統(tǒng)一的數(shù)據(jù)訪問申請(qǐng)與授權(quán)等功能。
所述統(tǒng)一的數(shù)據(jù)訪問申請(qǐng)與授權(quán)采用了一種細(xì)粒度的訪問控制模型,在三層抽象數(shù)據(jù)對(duì)象上(數(shù)據(jù)包、數(shù)據(jù)資產(chǎn)、數(shù)據(jù)字段)分別定義了“讀”和“寫”兩種抽象操作。數(shù)據(jù)包的所有者可以將整個(gè)數(shù)據(jù)包、或數(shù)據(jù)包中的某些數(shù)據(jù)資產(chǎn)、亦或數(shù)據(jù)資產(chǎn)中的某些數(shù)據(jù)字段的“讀”或“寫”權(quán)限授權(quán)給用戶。用戶在抽象模型上表達(dá)自己的數(shù)據(jù)資源訪問權(quán)限請(qǐng)求,經(jīng)數(shù)據(jù)擁有者批準(zhǔn)授權(quán)后,通過相應(yīng)適配器中的授權(quán)函數(shù)將抽象對(duì)象的授權(quán)信息轉(zhuǎn)化為對(duì)相應(yīng)數(shù)據(jù)容器的具體指令序列,并加以執(zhí)行完成。
總而言之,在本系統(tǒng)中:統(tǒng)一的元模型為數(shù)據(jù)資源的統(tǒng)一管理提供了一種統(tǒng)一的描述語(yǔ)言,而符合適配器接口規(guī)范的適配器實(shí)現(xiàn)則充當(dāng)了翻譯層(或轉(zhuǎn)換層)。適配器的角色是雙向的:一方面從具體的數(shù)據(jù)管理模塊中獲取數(shù)據(jù)資源的描述信息,并將其轉(zhuǎn)換為統(tǒng)一描述語(yǔ)言;另一方面將數(shù)據(jù)資源的抽象操作轉(zhuǎn)換為數(shù)據(jù)管理模塊對(duì)相應(yīng)數(shù)據(jù)對(duì)象的具體命令序列來(lái)執(zhí)行完成。
本發(fā)明提供的所述的大數(shù)據(jù)平臺(tái)的統(tǒng)一數(shù)據(jù)資源管理系統(tǒng),其構(gòu)成如圖2所示。它包括:數(shù)據(jù)包加載模塊,數(shù)據(jù)資源發(fā)現(xiàn)模塊,用戶注冊(cè)登錄模塊,數(shù)據(jù)訪問申請(qǐng)與授權(quán)模塊,以及元數(shù)據(jù)管理模塊,數(shù)據(jù)容器管理模塊,適配器管理模塊,等等;
所述“適配器管理模塊”,用于管理與適配器相關(guān)的信息。它負(fù)責(zé)接收系統(tǒng)管理員從接入端傳入適配器插件(即一個(gè)實(shí)現(xiàn)了適配器接口規(guī)范的例程庫(kù))以及相應(yīng)的數(shù)據(jù)管理組件類型名稱,在系統(tǒng)根目錄下的“/Adapters”子目錄中對(duì)適配器插件進(jìn)行存儲(chǔ),通過“元數(shù)據(jù)管理模塊”記錄下適配器插件與類型名稱之間的映射;在系統(tǒng)啟動(dòng)時(shí),它還負(fù)責(zé)加載系統(tǒng)中所有已有的適配器插件,并在內(nèi)存中建立適配器插件與類型名稱之間的映射關(guān)系;系統(tǒng)運(yùn)行時(shí),它向其它模塊提供類型名稱到適配器插件對(duì)象的映射服務(wù)。
所述“數(shù)據(jù)容器管理模塊”,用于管理與數(shù)據(jù)容器相關(guān)的信息。它負(fù)責(zé)接收系統(tǒng)管理員從接入端輸入的數(shù)據(jù)容器名稱、所對(duì)應(yīng)數(shù)據(jù)管理組件的類型名稱、以及相關(guān)的配置信息,通過“元數(shù)據(jù)管理模塊”記錄下相應(yīng)的信息;在系統(tǒng)啟動(dòng)時(shí),它負(fù)責(zé)在內(nèi)存中建立數(shù)據(jù)容器和數(shù)據(jù)管理組件類型名稱之間的映射;在系統(tǒng)運(yùn)行時(shí),它向其它模塊提供數(shù)據(jù)容器名稱到管理數(shù)據(jù)組件類型名稱的映射服務(wù);系統(tǒng)運(yùn)行時(shí),它還負(fù)責(zé)監(jiān)控和維護(hù)每個(gè)數(shù)據(jù)容器的聯(lián)機(jī)工作狀態(tài)。
所述“用戶注冊(cè)登錄模塊”,用于負(fù)責(zé)普通用戶的注冊(cè)和登錄工作。對(duì)于新用戶的注冊(cè),該模塊接收用戶在接入端所注冊(cè)的賬號(hào)名稱和密碼,為該賬號(hào)創(chuàng)建其Kerberos Principal和相應(yīng)的密鑰,并將該P(yáng)rincipal連同密鑰一起寫入到只有系統(tǒng)服務(wù)程序才能訪問的keytab文件中。對(duì)于用戶的登錄,系統(tǒng)接收用戶在接入端所輸入的賬號(hào)名稱和密碼,判斷密碼是否正確:如果密碼錯(cuò)誤,則返回登錄失敗的信息;如果正確,則使用該賬號(hào)名稱所對(duì)應(yīng)的Kerberos Principal和密鑰通過Kerberos認(rèn)證一次,并將用戶的Configuration對(duì)象緩存起來(lái),從而避免了頻繁的重復(fù)認(rèn)證。
所述“元數(shù)據(jù)管理模塊”,用于存儲(chǔ)、維護(hù)和管理著數(shù)據(jù)容器、數(shù)據(jù)包、數(shù)據(jù)資產(chǎn)、數(shù)據(jù)字段等四類對(duì)象的元數(shù)據(jù);并且向其它功能模塊提供查詢接口。
所述“數(shù)據(jù)包加載模塊”,用于接收普通用戶從接入端傳入的數(shù)據(jù)包壓縮文件,根據(jù)用戶指定的數(shù)據(jù)管理組件類型名稱利用負(fù)載均衡機(jī)制選擇出該類型的一個(gè)數(shù)據(jù)容器,調(diào)用該類型的適配器插件所提供的數(shù)據(jù)包加載函數(shù)在該數(shù)據(jù)容器中物理地存儲(chǔ)并管理該數(shù)據(jù)包;數(shù)據(jù)包成功加載到所選數(shù)據(jù)容器后,該模塊還負(fù)責(zé)通過“元數(shù)據(jù)管理模塊”記錄下用戶所輸入的數(shù)據(jù)包描述信息。
所述“數(shù)據(jù)資源發(fā)現(xiàn)模塊”,用于向用戶提供查詢。它接收用戶在接入端輸入的查詢請(qǐng)求,首先進(jìn)行用戶身份的驗(yàn)證,查詢內(nèi)容的合法性驗(yàn)證,再?gòu)脑獢?shù)據(jù)存儲(chǔ)中檢索出查詢所命中的數(shù)據(jù)包的列表,根據(jù)數(shù)據(jù)資源包所在數(shù)據(jù)容器的工作狀態(tài)進(jìn)行過濾,最后將過濾后的數(shù)據(jù)包列表作為查詢結(jié)果返回給接入端。
所述“數(shù)據(jù)訪問申請(qǐng)與授權(quán)模塊”,用于接收普通用戶對(duì)數(shù)據(jù)包的訪問申請(qǐng),通過元數(shù)據(jù)管理模塊獲取該數(shù)據(jù)包的所有者,并將申請(qǐng)傳遞給該所有者。若所有者批準(zhǔn)了該申請(qǐng),則“數(shù)據(jù)訪問申請(qǐng)與授權(quán)模塊”會(huì)認(rèn)證所有者的身份,如果通過后則調(diào)用“元數(shù)據(jù)管理模塊”獲取相關(guān)數(shù)據(jù)資源所在的數(shù)據(jù)容器,并調(diào)用相應(yīng)適配器插件中的授權(quán)例程在該數(shù)據(jù)容器中完成具體的授權(quán)動(dòng)作。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn):
(1)可實(shí)現(xiàn)系統(tǒng)的動(dòng)態(tài)可擴(kuò)展,新型的數(shù)據(jù)管理模塊可以通過定制開發(fā)相應(yīng)的符合接口規(guī)范的適配器而動(dòng)態(tài)地接入系統(tǒng),而無(wú)須從頭編譯和部署整個(gè)系統(tǒng);
(2)可實(shí)現(xiàn)多租戶的管理。用戶可以管理自己所擁有的不同類型的數(shù)據(jù)資源,可以授權(quán)其它的用戶訪問自己所擁有的數(shù)據(jù)資源,還可以申請(qǐng)?jiān)L問其它用戶的數(shù)據(jù)資源;
(3)可實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)訪問申請(qǐng)與授權(quán)。對(duì)不同類型數(shù)據(jù)資源的訪問申請(qǐng)具有統(tǒng)一的接口,通過適配器作為翻譯層,實(shí)現(xiàn)了抽象授權(quán)接口與原生訪問控制之間的映射,從而方便用戶進(jìn)行數(shù)據(jù)資源訪問權(quán)限的申請(qǐng)與授權(quán)。
附圖說明
圖1為抽象的四層元模型與具體數(shù)據(jù)管理模塊之間的對(duì)應(yīng)關(guān)系。
圖2為數(shù)據(jù)資源統(tǒng)一管理系統(tǒng)的示意圖。
具體實(shí)施方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明的技術(shù)實(shí)施方案,但是本發(fā)明的保護(hù)范圍不局限于所述實(shí)施例。
圖1給出了HDFS數(shù)據(jù)管理模塊和HBase數(shù)據(jù)管理模塊與四層元模型之間的對(duì)應(yīng)關(guān)系。在實(shí)施例中,每一個(gè)HDFS集群或HBase集群都對(duì)應(yīng)于一個(gè)數(shù)據(jù)容器。每個(gè)HDFS集群中都維護(hù)了三層目錄“/用戶名/目錄名/文件名”,其中:“/用戶名/目錄名”對(duì)應(yīng)于一個(gè)數(shù)據(jù)包,“用戶名”表示的是數(shù)據(jù)包所有者的用戶名;而“文件名”則對(duì)應(yīng)于數(shù)據(jù)資產(chǎn)。每個(gè)HBase集群中的每個(gè)名字空間都對(duì)應(yīng)于一個(gè)數(shù)據(jù)包,名字空間中的表對(duì)應(yīng)于該數(shù)據(jù)包中的數(shù)據(jù)資產(chǎn),而表中的列族則對(duì)應(yīng)于該數(shù)據(jù)資產(chǎn)中數(shù)據(jù)字段。
圖2給出了系統(tǒng)的整體結(jié)構(gòu)圖。實(shí)施例:本發(fā)明提出了一種針對(duì)不同類型數(shù)據(jù)資源的統(tǒng)一管理方法以及采用該方法的系統(tǒng)。該系統(tǒng)包括數(shù)據(jù)包加載模塊,數(shù)據(jù)資源發(fā)現(xiàn)模塊,用戶注冊(cè)登錄模塊,數(shù)據(jù)訪問申請(qǐng)與授權(quán)模塊,以及元數(shù)據(jù)管理模塊,數(shù)據(jù)容器管理模塊,適配器管理模塊,等等。
步驟1:系統(tǒng)管理員用戶通過“適配器管理模塊”添加不同的適配器插件。適配器插件是符合適配器接口規(guī)范的例程庫(kù),每一個(gè)適配器插件都是針對(duì)某一種數(shù)據(jù)管理模塊(如HDFS、HBase或Hive)而專門定制的。
步驟2:系統(tǒng)管理員用戶通過“數(shù)據(jù)容器管理模塊”添加數(shù)據(jù)容器或刪除數(shù)據(jù)容器,每一個(gè)數(shù)據(jù)容器都對(duì)應(yīng)于某一個(gè)適配器插件,用以表示該容器的類型,而對(duì)該容器的操作都是通過適配器插件中的例程來(lái)完成的。系統(tǒng)啟動(dòng)時(shí),數(shù)據(jù)容器管理模塊將自動(dòng)獲取所有數(shù)據(jù)容器的類型和物理地址,建立與數(shù)據(jù)容器的連接。此外,數(shù)據(jù)容器管理模塊還負(fù)責(zé)監(jiān)控和維護(hù)每個(gè)數(shù)據(jù)容器的聯(lián)機(jī)工作狀態(tài),例如:某個(gè)數(shù)據(jù)容器當(dāng)前是聯(lián)機(jī)還是離線,數(shù)據(jù)容器中的存儲(chǔ)空間占用情況等等。系統(tǒng)根據(jù)這些監(jiān)控信息來(lái)完成數(shù)據(jù)在不同數(shù)據(jù)容器之間的遷移,完成不同數(shù)據(jù)容器之間的負(fù)載均衡等任務(wù)。
步驟3:普通用戶可以通過“用戶注冊(cè)登錄模塊”來(lái)注冊(cè)賬號(hào)和登錄系統(tǒng)。由于本系統(tǒng)所部署的大數(shù)據(jù)平臺(tái)工作在安全模式下,使用Kerberos進(jìn)行用戶身份認(rèn)證,因此用戶注冊(cè)賬號(hào)時(shí),系統(tǒng)會(huì)為每位用戶創(chuàng)建其Kerberos Principal和相應(yīng)的密鑰,并將該P(yáng)rincipal連同密鑰一起寫入到只有系統(tǒng)服務(wù)程序才能訪問的keytab文件中。當(dāng)用戶登錄系統(tǒng)時(shí),系統(tǒng)僅僅需要通過Kerberos認(rèn)證一次,認(rèn)證成功后會(huì)將用戶的Configuration對(duì)象緩存起來(lái),避免了頻繁的重復(fù)認(rèn)證。
步驟4:注冊(cè)的普通用戶登錄系統(tǒng)后,可以通過“數(shù)據(jù)包加載模塊”上傳數(shù)據(jù)包到平臺(tái),由平臺(tái)加載并管理。數(shù)據(jù)包的上傳分兩步完成。第一步是將數(shù)據(jù)包打包成一個(gè)壓縮文件上傳通過系統(tǒng)所提供的文件上傳頁(yè)面上傳。用戶可以查看自己上傳的所有文件和相應(yīng)文件ID號(hào)(由系統(tǒng)分配)。第二步是用戶在表單中指定數(shù)據(jù)包的類型,輸入數(shù)據(jù)包的基本描述信息,再選擇先前上傳的數(shù)據(jù)包的文件ID號(hào),即可在我們平臺(tái)上創(chuàng)建一個(gè)數(shù)據(jù)包對(duì)象。系統(tǒng)根據(jù)數(shù)據(jù)包對(duì)象的類型,通過負(fù)載均衡機(jī)制從該類型的多個(gè)數(shù)據(jù)容器中動(dòng)態(tài)地選擇出一個(gè)容器來(lái)管理該數(shù)據(jù)包,通過適配器將該數(shù)據(jù)包加載到該容器中進(jìn)行管理,同時(shí)通過“元數(shù)據(jù)管理模塊”將該數(shù)據(jù)包相關(guān)的元數(shù)據(jù)添加到元數(shù)據(jù)庫(kù)中,記錄下該數(shù)據(jù)包的物理地址。
步驟5. 注冊(cè)的普通用戶登錄系統(tǒng)后,可以通過“數(shù)據(jù)資源發(fā)現(xiàn)模塊”查找感興趣的數(shù)據(jù)包。用戶通過接入端可以查詢,“數(shù)據(jù)資源發(fā)現(xiàn)模塊”首先進(jìn)行用戶身份的驗(yàn)證,查詢內(nèi)容的合法性驗(yàn)證,從元數(shù)據(jù)存儲(chǔ)中檢索出查詢所命中的數(shù)據(jù)包的列表,根據(jù)數(shù)據(jù)資源所在數(shù)據(jù)容器的工作狀態(tài)進(jìn)行過濾,將過濾后的數(shù)據(jù)包列表作為查詢結(jié)果返回給接入端。用戶根據(jù)查詢結(jié)果在接入端的可以選擇感興趣的數(shù)據(jù)包以進(jìn)一步查看詳情。數(shù)據(jù)包的描述元數(shù)據(jù)則包含了文本描述、行業(yè)、學(xué)科、關(guān)鍵字、數(shù)據(jù)包類型等諸多信息,統(tǒng)一的數(shù)據(jù)資源發(fā)現(xiàn)可以根據(jù)用戶輸入的查詢?cè)跀?shù)據(jù)包的描述元數(shù)據(jù)庫(kù)中查找出用戶所感興趣的數(shù)據(jù)包。在實(shí)施例中,用戶上傳的數(shù)據(jù)包在默認(rèn)情況下只能由所有者進(jìn)行讀/寫訪問,其他用戶如果需要訪問,則必須在步驟6中提出申請(qǐng),經(jīng)所有者批準(zhǔn)授權(quán)后才能進(jìn)行訪問。
步驟6. 用戶在“數(shù)據(jù)資源發(fā)現(xiàn)模塊”中可以查看數(shù)據(jù)包的詳情信息,如果需要使用該數(shù)據(jù)包,則可以通過接入端向資源所有者提出數(shù)據(jù)訪問請(qǐng)求,通過數(shù)據(jù)訪問請(qǐng)求的表單來(lái)填寫所需訪問的數(shù)據(jù)資源名稱、所需進(jìn)行訪問操作的類型(“讀”或“寫”)、以及所需訪問的時(shí)間期限,提出訪問申請(qǐng),訪問申請(qǐng)會(huì)發(fā)送給數(shù)據(jù)包的擁有者用戶進(jìn)行批準(zhǔn)。數(shù)據(jù)的所有者用戶登錄系統(tǒng)后,可以查看相應(yīng)的訪問申請(qǐng),并決定同意或拒絕該申請(qǐng)。如果申請(qǐng)得到批準(zhǔn),相應(yīng)的授權(quán)工作則交由“數(shù)據(jù)訪問授權(quán)模塊”來(lái)完成。統(tǒng)一授權(quán)模塊會(huì)對(duì)授權(quán)請(qǐng)求記錄進(jìn)行解析,獲得所請(qǐng)求的數(shù)據(jù)對(duì)象和操作的列表,根據(jù)數(shù)據(jù)包的類型和名稱定位出它所在的數(shù)據(jù)容器,再調(diào)用相應(yīng)適配器插件中的授權(quán)例程,將授權(quán)信息轉(zhuǎn)化為對(duì)該數(shù)據(jù)容器的一系列函數(shù)調(diào)用,將相應(yīng)的訪問權(quán)限授予給提出申請(qǐng)的用戶。授權(quán)操作成功后,系統(tǒng)通知提出申請(qǐng)的用戶。
系統(tǒng)處理數(shù)據(jù)資源授權(quán)的具體過程如下:(1)首先,系統(tǒng)接收用戶在接入端所發(fā)送的授權(quán)命令,對(duì)授權(quán)命令進(jìn)行解析抽取出<數(shù)據(jù)資源,授權(quán)類型、授權(quán)對(duì)象、時(shí)間期限〉等等信息;(2)對(duì)接入端的用戶身份進(jìn)行驗(yàn)證,并判定該用戶是否是相關(guān)數(shù)據(jù)資源的所有者,如果用戶身份沒有通過驗(yàn)證或者用戶并非所有者,則返回失敗信息到客戶端并結(jié)束處理,否則繼續(xù)進(jìn)行下一步;(3)通過查詢?cè)獢?shù)據(jù)庫(kù)獲取相關(guān)數(shù)據(jù)資源所在的數(shù)據(jù)容器,并調(diào)用適配器插件中的授權(quán)例程在該數(shù)據(jù)容器中完成具體的授權(quán)動(dòng)作。
每次數(shù)據(jù)訪問權(quán)限的授權(quán)都附加有時(shí)間期限,超過授權(quán)期限后,相應(yīng)的授權(quán)將被回收。用戶如果想要繼續(xù)使用,只能再次發(fā)起申請(qǐng),等待所有者批準(zhǔn)。具體實(shí)現(xiàn)上,系統(tǒng)在啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè)后臺(tái)線程,定時(shí)掃描當(dāng)前的有效授權(quán)列表,當(dāng)某項(xiàng)授權(quán)到期時(shí),該線程會(huì)調(diào)用相應(yīng)適配器中的權(quán)限回收函數(shù)回收該權(quán)限。