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