本發明涉及存儲領域,特別是涉及一種對象存儲方法及裝置。
背景技術:
隨著互聯網時代大數據技術的迅猛發展,信息數字化進程日益加速,大量的結構化和非結構化數據正在以前所未有的速度爆發增長,這使得搜集、存儲以及分析挖掘數據價值的需求大大增加。基于此,一種新型的存儲系統——對象存儲系統應運而生。在對象存儲系統中,每個數據文件稱之為一個對象,各個對象之間相互獨立,互不關聯。
然而,由于數據文件來源于真實的生產生活,而實際的生產生活中產生的數據文件之間都存在著各種各樣的關聯性,所以采用對象存儲系統存儲數據,為用戶查找、訪問以及更新數據文件,引入了額外的復雜度。例如:廣電行業的媒資管理系統中,一個節目的媒資素材包括:節目的高碼視頻文件,低碼視頻文件,一路或多路音頻文件,字幕文件,這些數據文件一旦存儲到對象存儲系統后,數據文件之間的關聯性將隨著數據的對象化而消失,為了方便用戶查找、訪問以及更新數據文件,需要在對象存儲系統外構建第三方系統以存儲各個數據文件之間的關聯關系,通常使用關系型數據庫。然而,另外構建第三方系統,不僅浪費資源,而且不利于用戶快速檢索到需要的對象。
技術實現要素:
為解決上述技術問題,本發明實施例提供了一種對象存儲方法及裝置,技術方案如下:
一種對象存儲方法,包括:
獲取至少兩個數據文件,所述至少兩個數據文件具有關聯關系;
判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中;
若是,將所述至少兩個數據文件創建為對象存儲系統中的對象,每一所述對象包括對象數據和元數據,所述元數據中存儲有所述關聯關系。
優選地,所述關聯關系包括關聯信息和關聯引用信息,所述關聯信息包括所述至少兩個數據文件中、除源數據文件外的每個數據文件的標識,所述關聯引用信息包括存儲所述關聯信息的源數據文件的標識,所述源數據文件為所述至少兩個數據文件中的任一數據文件;
相應地,所述對象包括源對象和相關對象,所述源對象與所述源數據文件相對應,所述相關對象與除所述源數據文件外的數據文件一一對應,所述源對象的元數據中存儲有所述關聯信息,每個所述相關對象的元數據中存儲有所述關聯引用信息以及存儲所述關聯信息的元數據字段的名稱。
優選地,還包括:
接收關聯信息讀取請求,所述關聯信息讀取請求攜帶第一對象標識;
判斷與所述第一對象標識對應的元數據中是否具有名稱為第一字段的字段,所述第一字段用于存儲所述關聯信息;
當確定具有名稱為第一字段的字段時,讀取所述第一字段的內容,以獲取所述關聯信息;
向用戶返回所述關聯信息;
當確定不具有名稱為第一字段的字段時,判斷與所述第一對象標識對應的元數據中是否具有名稱為第二字段的字段;
當確定具有名稱為第二字段的字段時,讀取所述第二字段的內容,以獲取源對象標識,并返回執行讀取所述第一字段的內容的步驟;
所述第二字段用于存儲所述關聯引用信息,所述源對象的元數據中具有所述第一字段。
優選地,還包括:
接收關聯關系刪除請求,所述關聯關系刪除請求攜帶第二對象標識;
判斷與所述第二對象標識對應的元數據中是否具有名稱為所述第一字段的字段;
當確定具有名稱為第一字段的字段時,判斷與第二對象具有所述關聯關系的相關對象中、存儲的所述關聯引用信息是否都已被刪除;
當確定所述關聯引用信息都已被刪除時,刪除所述第二對象中存儲的關聯信息;
當確定不具有名稱為第一字段的字段時,刪除與所述第二對象標識對應的元數據中存儲的關聯引用信息。
優選地,還包括:
接收對象刪除請求,所述對象刪除請求攜帶第三對象標識;
判斷與所述第三對象標識對應的元數據中是否具有名稱為第一字段或第二字段的字段;
若否,刪除與所述第三對象標識對應的第三對象。
優選地,還包括:
判斷是否有需要存儲至所述對象存儲系統中,所述新的數據文件與所述至少兩個數據文件具有關聯關系;
若是,將所述新的數據文件的標識添加至存儲所述關聯信息的元數據字段中,并將存儲所述關聯信息的源對象的標識和元數據字段的名稱添加至新的對象的元數據中;
其中,所述新的對象與所述新的數據文件相對應。
優選地,所述關聯關系包括關聯信息,且每個對象的元數據中存儲的關聯信息為、與該對象對應的數據文件具有關聯關系的所有數據文件的標識,所述數據文件與所述對象一一對應。
一種對象存儲裝置,包括:
獲取單元,用于獲取至少兩個數據文件,所述至少兩個數據文件具有關聯關系;
第一判斷單元,用于判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中;
創建單元,用于當所述第一判斷單元確定需要將所述至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,每一所述對象包括對象數據和元數據,所述元數據中存儲有所述關聯關系。
優選地,所述關聯關系包括關聯信息和關聯引用信息,所述關聯信息包括所述至少兩個數據文件中、除源數據文件外的每個數據文件的標識,所述關聯引用信息包括存儲所述關聯信息的源數據文件的標識,所述源數據文件為所述至少兩個數據文件中的任一數據文件;
相應地,所述對象包括源對象和相關對象,所述源對象與所述源數據文件相對應,所述相關對象與除所述源數據文件外的數據文件一一對應,所述源對象的元數據中存儲有所述關聯信息,每個所述相關對象的元數據中存儲有所述關聯引用信息以及存儲所述關聯信息的元數據字段的名稱。
優選地,還包括:
第一接收單元,用于接收關聯信息讀取請求,所述關聯信息讀取請求攜帶第一對象標識;
第二判斷單元,用于判斷與所述第一對象標識對應的元數據中是否具有名稱為第一字段的字段,所述第一字段用于存儲所述關聯信息;
第一讀取單元,用于當所述第二判斷單元確定具有名稱為第一字段的字段時,讀取所述第一字段的內容,以獲取所述關聯信息;
返回單元,用于向用戶返回所述關聯信息;
第三判斷單元,用于當所述第二判斷單元確定不具有名稱為第一字段的字段時,判斷與所述第一對象標識對應的元數據中是否具有名稱為第二字段的字段;
第二讀取單元,用于當所述第三判斷單元確定具有名稱為第二字段的字段時,讀取所述第二字段的內容,以獲取源對象標識,并返回執行讀取所述第一字段的內容的步驟;
所述第二字段用于存儲所述關聯引用信息,所述源對象的元數據中具有所述第一字段。
優選地,還包括:
第二接收單元,用于接收關聯關系刪除請求,所述關聯關系刪除請求攜帶第二對象標識;
第四判斷單元,用于判斷與所述第二對象標識對應的元數據中是否具有名稱為所述第一字段的字段;
第五判斷單元,用于當所述第四判斷單元確定具有名稱為第一字段的字段時,判斷與第二對象具有所述關聯關系的相關對象中、存儲的所述關聯引用信息是否都已被刪除;
第一刪除單元,用于當所述第五判斷單元確定所述關聯引用信息都已被刪除時,刪除所述第二對象中存儲的關聯信息;
第二刪除單元,用于當第四判斷單元確定不具有名稱為第一字段的字段時,刪除與所述第二對象標識對應的元數據中存儲的關聯引用信息。
優選地,還包括:
第三接收單元,用于接收對象刪除請求,所述對象刪除請求攜帶第三對象標識;
第六判斷單元,用于判斷與所述第三對象標識對應的元數據中是否具有名稱為第一字段或第二字段的字段;
第三刪除單元,用于當所述第六判斷單元確定不具有名稱為所述第一字段或所述第二字段的字段時,刪除與所述第三對象標識對應的第三對象。
優選地,還包括:
第七判斷單元,用于判斷是否有新的數據文件需要存儲至所述對象存儲系統中,所述新的數據文件與所述至少兩個數據文件具有關聯關系;
添加單元,用于當所述第七判斷單元確定有新的數據文件需要存儲至所述對象存儲系統中時,將所述新的數據文件的標識添加至存儲所述關聯信息的元數據字段中,并將存儲所述關聯信息的源對象的標識和元數據字段的名稱添加至新的對象的元數據中;
其中,所述新的對象與所述新的數據文件相對應。
優選地,所述關聯關系包括關聯信息,且每個對象的元數據中存儲的關聯信息為、與該對象對應的數據文件具有關聯關系的所有數據文件的標識,所述數據文件與所述對象一一對應。
本發明實施例所提供的技術方案,將需要將至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,其中,對象中的元數據存儲有所述關聯關系。由于將對象間的關聯關系存儲于元數據中,所以,當用戶需要檢索、查找對象時,無需依賴任何第三方系統或工具,就能快速檢索到相關的任何對象,以此提高了對象存儲系統的檢索效率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例所提供的一種對象存儲方法的一種流程示意圖;
圖2為本發明實施例所提供的一種對象存儲方法的另一種流程示意圖;
圖3為本發明實施例所提供的一種對象存儲裝置的一種結構示意圖;
圖4為本發明實施例所提供的一種對象存儲裝置的另一種結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三”“第四”等(如果存在)是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例,例如能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
請參閱圖1,圖1為本申請實施例提供的對象存儲方法的一種實現流程圖,所述方法包括:
步驟s101、獲取至少兩個數據文件,所述至少兩個數據文件具有關聯關系;
本實施例的數據文件既可以是結構化數據也可以非結構化數據,其中,結構化數據指的是能用二維表結構來邏輯表達實現的數據,如excel表格,非結構化數據指的是不方便用二維邏輯表來表現的數據,如所有格式的辦公文檔、文本、圖片、標準通用標記語言下的子集xml、html、各類報表、圖像和音頻/視頻信息等等。
至少兩個數據文件具有關聯關系指的是,當至少兩個數據文件存儲于對象存儲系統中時,根據任一對象的對象標識、通過該關聯關系可以找到其他的對象。
步驟s102、判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中,若是,執行步驟s103;
步驟s103、將所述至少兩個數據文件創建為對象存儲系統中的對象,所述對象包括對象數據和元數據,所述元數據中存儲有所述關聯關系。
對象存儲系統中每個對象的對象信息均有兩部分數據組成,一部分是元數據,另一部分為對象數據,其中,元數據中除了包含該對象的一些基本屬性(如大小,上傳時間,校驗碼等)描述的字段外,還可包含由用戶自定義及擴展的字段,因此,本實施例將關聯關系存儲于此。
對象的元數據通常由多組{key:value}對組成,其中key為元數據字段的名稱,value為該字段中存儲的內容。利用對象存儲這一特性,可將對象間的關聯關系存儲于對象的元數據中。
對象間的關聯關系在元數據中的存儲格式,可以采用半結構化的json格式數據存儲。
本實施例提供的技術方案,將需要將至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,其中,對象中的元數據存儲有所述關聯關系。由于將對象間的關聯關系存儲于元數據中,所以,當用戶需要檢索、查找對象時,無需依賴任何第三方系統或工具,就能快速檢索到相關的任何對象,以此提高了對象存儲系統的檢索效率。
請參閱圖2,圖2為本申請實施例提供的對象存儲方法的另一種實現流程圖,所述方法包括:
步驟s201、獲取至少兩個數據文件;
所述至少兩個數據文件具有關聯關系,所述關聯關系包括關聯信息和關聯引用信息,所述關聯信息包括除源數據文件外的每個數據文件的標識,所述關聯引用信息包括存儲所述關聯信息的源數據文件的標識。
實際應用中,根據業務需要,關聯信息中還可以包括屬性信息,屬性信息可以是對象的類型,也可以是其它的與業務有關的信息。
另外,根據業務需要,關聯關系可以僅包括關聯信息,每個對象的元數據中存儲的關聯信息為、與該對象對應的數據文件具有關聯關系的所有數據文件的標識,所述數據文件與所述對象一一對應。
所述源數據文件為所述至少兩個數據文件中的任一數據文件,其中,數據文件標識可以為數據文件id,在對象存儲中,數據文件標識也就是對象id,在全局中唯一。
步驟s202、判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中,若是,執行步驟s203,否則結束流程;
步驟s203、將所述至少兩個數據文件創建為對象存儲系統中的對象;
每一所述對象包括對象數據和元數據,所述對象包括源對象和相關對象,所述源對象與所述源數據文件相對應,所述相關對象與除所述源數據文件外的數據文件一一對應,所述源對象的元數據中存儲有所述關聯信息,每個所述相關對象的元數據中存儲有所述關聯引用信息以及存儲所述關聯信息的元數據字段的名稱。
創建由于對象的每一個元數據都由一組{key:value}對組成,因此,在對象存儲的元數據中,可以對存儲關聯關系的元數據的字段名稱進行特定命名,以便快速檢索到關聯關系。如,定義兩種元數據的字段名稱,分別為:associationinfo以及associationref,即,在存放關聯關系的對象中,定義元數據字段associationinfo={“associationinfo”:<value>}作為存儲關聯信息的元數據,定義元數據字段associationref={“associationref”:<value>}作為存儲關聯引用信息的元數據。
以下以廣電媒資系統的節目素材為例,對存儲關聯信息的元數據字段associationinfo以及存儲關聯引用信息的元數據字段associationref進行說明,由于一個節目素材涵蓋多個素材對象,所以存儲關聯信息的元數據字段associationinfo可以采用json格式:
其中,associationinfo為元數據的字段的名稱,objectname為key,表示相關對象的id,而相應的value值為“<bucket>/xxx_xxx.avi”,objecttype表示相關對象的類型,值為“high”,代表文件是高編碼視頻。
需要說明的是,根據實際的業務需要,元數據字段associationinfo中不必必須包含相關對象的類型,但至少包含各相關對象的id。
存儲關聯引用信息的元數據字段associationref為:
{“associationref”:“<bucket>/xxx_xxx.avi”,“metadatafield”:“associationinfo”}
其中,associationref為key,而value值為:“<bucket>/xxx_xxx.avi”,為存放關聯信息的源對象id。metadatafield為key,value值為“associationinfo”,表示存放關聯信息的元數據字段的名稱。
以下以醫療行業中針對患者的電子信息系統舉例說明步驟s201-步驟s203的實現:
假設每個患者的信息包括:電子病歷、多張醫療影像圖片、檢驗或化驗結果、和基因及分析結果共四種病歷信息。
當將四種病歷信息存儲于對象存儲系統中時,每種病歷信息為一個對象。為了將四個對象組成一個對象聚合群,以實現用戶對四種對象的快速檢索,采取預設策略確定某一個電子病歷為源對象,并在源對象的元數據字段associationinfo中存儲關聯信息,同時在另外的三個相關對象的元數據字段associationref中存儲關聯引用信息,當用戶輸入四個對象中的任一對象標識時,都可以根據與該對象標識對應的元數據中存儲的關聯信息或關聯引用信息、確定對象聚合群中與之相關的任一對象。
其中,實際應用中預設策略可以為將四種病歷信息中id的字符數最少的病歷信息確定為源對象,關聯信息為對象聚合群中各相關對象的id,關聯引用信息為存儲關聯信息的源對象id和元數據字段的名稱。
步驟s204、接收關聯信息讀取請求,所述關聯信息讀取請求攜帶第一對象標識;
步驟s205、判斷與所述第一對象標識對應的元數據中是否具有名稱為第一字段的字段,若是,執行步驟s206,否則執行步驟s208;
所述第一字段用于存儲關聯信息。
當第一字段中存儲有關聯信息時,說明第一對象標識為源對象標識。
步驟s206、讀取所述第一字段的內容,以獲取所述關聯信息;
步驟s207、向用戶返回所述關聯信息;
步驟s208、判斷與所述第一對象標識對應的元數據中是否具有名稱為第二字段的字段,若是,執行步驟s209,否則結束流程;
步驟s209、讀取所述第二字段的內容,以獲取源對象標識,并返回執行步驟s206;
所述第二字段用于存儲關聯引用信息,所述源對象的元數據中具有第一字段。
步驟s204-步驟s209實現的是對關聯信息的列舉,當用戶或業務系統需要獲取關聯信息時,通過上述步驟實現。
步驟s210、判斷是否有新的數據文件需要存儲至所述對象存儲系統中,所述新的數據文件與所述至少兩個數據文件具有關聯關系,若是,執行步驟s211;
步驟s211、將所述新的數據文件的標識添加至存儲所述關聯信息的元數據字段中,并將目標關聯引用信息的源對象的標識和元數據字段的名稱添加至新的對象的元數據中;
其中,所述新的對象與所述新的數據文件相對應。
步驟s210-步驟s211實現的是對關聯關系的添加,當需要在對象存儲系統中添加新的對象(后續稱之為新的對象)時,需要創建新的對象與源對象的新的關聯信息,并將該新的關聯信息添加至關聯信息中,另還要更新新的對象中的元數據,以使新的對象的元數據指向保存關聯信息的源對象的標識。
步驟s212、接收關聯關系刪除請求,所述關聯關系刪除請求攜帶第二對象標識;
步驟s213、判斷與所述第二對象標識對應的元數據中是否具有名稱為所述第一字段的字段,若是,執行步驟s214,否則執行步驟s216;
步驟s214、判斷與第二對象具有所述關聯關系的對象中、存儲的關聯引用信息是否都已被刪除,若是,執行步驟s215,否則結束流程;
步驟s215、刪除與所述第二對象標識對應的元數據中存儲的關聯信息;
當與第二對象標識對應的元數據中具有名稱為第一字段的字段時,表明第二對象為源對象,在刪除源對象中的關聯信息后,可以繼續從相關對象中選擇一個對象作為新的源對象,并創建新的源對象與除新的源對象之外的相關對象的關聯關系。
步驟s216、刪除與所述第二對象標識對應的元數據中存儲的關聯引用信息。
步驟s212-步驟s216實現的是對關聯關系的刪除,涉及的主體思路為刪除含有第二字段的對象中的關聯引用信息,以及刪除除自身之外,沒有被別的任何對象進行關聯引用的對象的關聯信息。若請求刪除的對象中存儲有第一字段,并且有除其本身之外的其他對象通過第二字段引用了關聯信息,則該對象的關聯信息不可被刪除。當將該關聯信息相關的所有對象中的關聯信息都刪除后,再刪除該對象。
步驟s217、接收對象刪除請求,所述對象刪除請求攜帶第三對象標識;
步驟s218、判斷與所述第三對象標識對應的元數據中是是否具有名稱為第一字段或第二字段的字段;
步驟s219、若否,刪除與所述第三對象標識對應的第三對象。
步驟s217-步驟s219實現的是對對象存儲系統中對象的刪除,在接收到對象刪除請求后,判斷與第三對象標識對應的元數據中是是否具有名稱為第一字段或第二字段的字段,若是,則返回刪除失敗,并提示用戶或業務系統刪除失敗的原因,如對象中存儲有關聯信息或關聯引用信息,若否,則直接將對象從對象存儲系統中刪除。
需要說明的是,對于步驟s204-步驟s209實現的對關聯信息的列舉、步驟s210-步驟s211實現的對關聯關系的添加、步驟s212-步驟s216實現的對關聯關系的刪除和步驟s217-步驟s219實現的從對象存儲系統中刪除對象的這幾個方案,各方案之間可以獨立實施,而不必具有絕對的引用關系及執行順序。
實際應用中:
1)通過創建關聯關系接口實現步驟s201-步驟s203中創建對象存儲中的對象,具體地,創建關聯關系接口如下所示:
create_associationinfo(associationinfometadata,array<objectid>);
其中,第一個參數associationinfometadata為關聯信息的內容,第二個參數為與此關聯信息相關的所有對象的id數組。實際應用時,默認會使用對象的id數組中的第一個對象作為源對象,利用源對象的元數據來存儲關聯信息,id數組中剩下的對象的元數據存儲關聯引用信息,保存指向存儲關聯信息的源對象標識。
2)通過列舉關聯信息接口實現步驟s204-步驟s209中對關聯信息的列舉,具體地,列舉關聯信息接口如下所示:
get_associationinfo(objectid);
其中,參數objectid為第一對象標識。
3)通過添加新關聯信息接口實現步驟s210-步驟s211中對新的關聯信息的添加,具體地,添加新關聯信息接口如下所示:
add_associationinfo(associationinfometadata,srcobjectid,dstobjectid);
其中,第一個參數associationinfometadata為新的數據文件的標識,第二個參數srcobjectid為新的對象的標識,第三個參數dstobjectid為源對象的標識。
4)通過刪除關聯信息接口實現步驟s212-步驟s216對關聯信息的刪除,具體地,所述刪除關聯信息接口如下所示:
delete_associationinfo(objectid);
其中,接口參數objectid為第二對象標識。
5)通過刪除對象接口實現步驟s217-步驟s219中從對象存儲系統中刪除對象,具體地,所述刪除對象接口如下所示:
drop_object(objectid);
其中,objectid為第三對象標識。
本實施例提供的技術方案,將需要將至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,其中,對象中的元數據存儲有所述關聯關系。由于將對象間的關聯關系存儲于元數據中,所以,當用戶需要檢索、查找對象時,無需依賴任何第三方系統或工具,就能快速檢索到相關的任何對象,以此提高了對象存儲系統的檢索效率。另外,基于存儲于元數據中的關聯關系還能快速實現對關聯關系的列舉、刪除以及添加。
請參閱圖3,圖3為本申請實施例提供的對象存儲裝置的一種結構示意圖,該裝置結構示意圖中的各單元的工作過程參照圖1對應的實施例中方法的執行過程,該裝置包括:
獲取單元301,用于獲取至少兩個數據文件,所述至少兩個數據文件具有關聯關系;
第一判斷單元302,用于判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中;
創建單元303,用于當所述第一判斷單元確定需要將所述至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,每一所述對象包括對象數據和元數據,所述元數據中存儲有所述關聯關系。
本實施例提供的技術方案,通過獲取單元將需要將至少兩個數據文件存儲于對象存儲系統中時,通過第一判斷單元及創建單元將所述至少兩個數據文件創建為對象存儲系統中的對象,其中,對象中的元數據存儲有所述關聯關系。由于將對象間的關聯關系存儲于元數據中,所以,當用戶需要檢索、查找對象時,無需依賴任何第三方系統或工具,就能快速檢索到相關的任何對象,以此提高了對象存儲系統的檢索效率。
請參閱圖4,圖4為本申請實施例提供的對象存儲裝置的一種結構示意圖,該裝置結構示意圖中的各單元的工作過程參照圖2對應的實施例中方法的執行過程,該裝置包括:
獲取單元401,用于獲取至少兩個數據文件,所述至少兩個數據文件具有關聯關系;
第一判斷單元402,用于判斷是否需要將所述至少兩個數據文件存儲于對象存儲系統中;
創建單元403,用于當所述第一判斷單元確定需要將所述至少兩個數據文件存儲于對象存儲系統中時,將所述至少兩個數據文件創建為對象存儲系統中的對象,每一所述對象包括對象數據和元數據,所述元數據中存儲有所述關聯關系。
其中,所述關聯關系包括關聯信息和關聯引用信息,所述關聯信息包括所述至少兩個數據文件中、除源數據文件外的每個數據文件的標識,所述關聯引用信息包括存儲所述關聯信息的源數據文件的標識,所述源數據文件為所述至少兩個數據文件中的任一數據文件;
相應地,所述對象包括源對象和相關對象,所述源對象與所述源數據文件相對應,所述相關對象與除所述源數據文件外的數據文件一一對應,所述源對象的元數據中存儲有所述關聯信息,每個所述相關對象的元數據中存儲有所述關聯引用信息以及存儲所述關聯信息的元數據字段的名稱;或,
所述關聯關系包括關聯信息,且每個對象的元數據中存儲的關聯信息為、與該對象對應的數據文件具有關聯關系的所有數據文件的標識,所述數據文件與所述對象一一對應。
第一接收單元404,用于接收關聯信息讀取請求,所述關聯信息讀取請求攜帶第一對象標識;
第二判斷單元405,用于判斷與所述第一對象標識對應的元數據中是否具有名稱為第一字段的字段,所述第一字段用于存儲所述關聯信息;
第一讀取單元406,用于當所述第二判斷單元確定具有名稱為第一字段的字段時,讀取所述第一字段的內容,以獲取所述關聯信息;
返回單元407,用于向用戶返回所述關聯信息;
第三判斷單元408,用于當所述第二判斷單元確定具有名稱為第一字段的字段時,判斷與所述第一對象標識對應的元數據中是否具有名稱為第二字段的字段;
第二讀取單元409,用于當所述第三判斷單元確定具有名稱為第二字段的字段時,讀取所述第二字段的內容,以獲取源對象標識,并返回執行讀取所述第一字段的內容的步驟;
所述第二字段用于存儲所述關聯引用信息,所述源對象的元數據中具有所述第一字段;
第二接收單元410,用于接收關聯關系刪除請求,所述關聯關系刪除請求攜帶第二對象標識;
第四判斷單元411,用于判斷與所述第二對象標識對應的元數據中是否具有名稱為所述第一字段的字段;
第五判斷單元412,用于當所述第四判斷單元確定具有名稱為第一字段的字段時,判斷與第二對象具有所述關聯關系的相關對象中、存儲的所述關聯引用信息是否都已被刪除;
第一刪除單元413,用于當所述第五判斷單元確定所述關聯引用信息都已被刪除時,刪除所述第二對象中存儲的關聯信息;
第二刪除單元414,用于當第四判斷單元確定不具有名稱為第一字段的字段時,刪除與所述第二對象標識對應的元數據中存儲的關聯引用信息;
第三接收單元415,用于接收對象刪除請求,所述對象刪除請求攜帶第三對象標識;
第六判斷單元416,用于判斷與所述第三對象標識對應的元數據中是否具有名稱為第一字段或第二字段的字段;
第三刪除單元417,用于當所述第六判斷單元確定不具有名稱為所述第一字段或所述第二字段的字段時,刪除與所述第三對象標識對應的第三對象;
第七判斷單元418,用于判斷是否有新的數據文件需要存儲至所述對象存儲系統中,所述新的數據文件與所述至少兩個數據文件具有關聯關系;
添加單元419,用于當所述第七判斷單元確定有新的數據文件需要存儲至所述對象存儲系統中時,將所述新的數據文件的標識添加至存儲所述關聯信息的元數據字段中,并將存儲所述關聯信息的源對象的標識和元數據字段的名稱添加至新的對象的元數據中;
其中,所述新的對象與所述新的數據文件相對應。
本實施例提供的技術方案,通過獲取單元將需要將至少兩個數據文件存儲于對象存儲系統中時,通過第一判斷單元及創建單元將所述至少兩個數據文件創建為對象存儲系統中的對象,其中,對象中的元數據存儲有所述關聯關系。由于將對象間的關聯關系存儲于元數據中,所以,當用戶需要檢索、查找對象時,無需依賴任何第三方系統或工具,就能快速檢索到相關的任何對象,以此提高了對象存儲系統的檢索效率。另外,基于第一接收單元、第二判斷單元、第一讀取單元和返回單元還能快速實現對關聯信息的列舉,通過第三判斷單元、第二讀取單元、第二接收單元、第四判斷單元、第五判斷單元等還能快速實現對關聯關系的列舉、刪除以及添加,以此提高了用戶對對象存儲系統訪問效率。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本申請。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。