分布式存儲系統(tǒng)的數(shù)據(jù)的處理方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]云計算(Cloud Computing)是網(wǎng)格計算(Grid Computing)、分布式計算(Distributed Computing)、并行計算(Parallel Computing)、效用計算(UtilityComputing)、網(wǎng)絡(luò)存儲(Network Storage Technologies)、虛擬化(Virtualizat1n)、負(fù)載均衡(Load Balance)等傳統(tǒng)計算機技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。它旨在通過網(wǎng)絡(luò)把多個成本相對較低的計算實體整合成一個具有強大計算能力的系統(tǒng)。分布式存儲是云計算范疇中的一個領(lǐng)域,其作用是提供海量數(shù)據(jù)的分布式存儲服務(wù)以及高速讀寫訪問的能力。
[0003]數(shù)據(jù)是有模式結(jié)構(gòu)的,在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)的模式結(jié)構(gòu)是數(shù)據(jù)庫來維護的,但是在非關(guān)系型的數(shù)據(jù)存儲系統(tǒng)中,通常不感知數(shù)據(jù)的模式結(jié)構(gòu)。于是,在存儲數(shù)據(jù)時,要根據(jù)模式結(jié)構(gòu)將數(shù)據(jù)轉(zhuǎn)換為二進制數(shù)據(jù)流,然后存入分布式存儲系統(tǒng)中;讀取數(shù)據(jù)時,從分布式存儲系統(tǒng)中取出二進制數(shù)據(jù)流,要根據(jù)一定規(guī)則還原為可以使用的數(shù)據(jù)。以上,數(shù)據(jù)的轉(zhuǎn)換和還原,通常也稱之為數(shù)據(jù)的序列化和反序列化過程。
[0004]在分布式的應(yīng)用中,數(shù)據(jù)的寫入者和數(shù)據(jù)的讀取者可能不是同一個程序。如果數(shù)據(jù)模式結(jié)構(gòu)永遠(yuǎn)不變,讀取者隨時都可以根據(jù)自己本地的數(shù)據(jù)模式結(jié)構(gòu)正確的還原出寫入者的數(shù)據(jù)。但通常隨著程序的升級,數(shù)據(jù)的模式結(jié)構(gòu)通常是要發(fā)生變化的。而分布式存儲中往往是海量數(shù)據(jù),難以短時間內(nèi)全部讀出并修改數(shù)據(jù)的模式結(jié)構(gòu);此外在某些場景中,在升級過程中需要保持業(yè)務(wù)不中斷,也會同時出現(xiàn)不同版本的寫入者和讀取者。此時,數(shù)據(jù)的讀取者如何還原出任意寫入者的數(shù)據(jù),是比較難以解決的關(guān)鍵問題。而能夠還原任意寫入者的數(shù)據(jù)的特性,通常稱為模式自由(Schema-free)。
[0005]在相關(guān)技術(shù)方案中,實現(xiàn)模式自由通常有以下幾種方法:
[0006]方案一、數(shù)據(jù)的模式結(jié)構(gòu)內(nèi)部固定一個字段表示數(shù)據(jù)的版本,缺點是新版本的新增內(nèi)容只能添在舊版本的尾部,讀取者中要實現(xiàn)已知所有版本模式結(jié)構(gòu)的還原方法;
[0007]方案二、傳統(tǒng)的標(biāo)簽長度值(Tag-Length-Value,簡稱TLV)法,依次記錄數(shù)據(jù)模式結(jié)構(gòu)各字段的標(biāo)識符(Tag),長度(Length),二進制數(shù)據(jù)流(Value),其缺點是表示不了復(fù)雜的數(shù)據(jù)結(jié)構(gòu),尤其是嵌套結(jié)構(gòu)。
[0008]方案三,自描述型表示方式,如JAVA腳本對象表示法(JAVA Script ObjectNotat1n,簡稱JS0N),優(yōu)點是可以表示任意復(fù)雜的數(shù)據(jù)模式結(jié)構(gòu),缺點是它是解釋型的數(shù)據(jù)描述方式,效率較差。
[0009]針對相關(guān)技術(shù)中相關(guān)技術(shù)中分布式存儲系統(tǒng)中數(shù)據(jù)模式結(jié)構(gòu)描述不靈活的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0010]本發(fā)明提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理方法、裝置及系統(tǒng),以至少解決上述問題。
[0011]根據(jù)本發(fā)明的一個方面,提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理方法,包括:獲取目標(biāo)數(shù)據(jù)的第一模式結(jié)構(gòu)和源數(shù)據(jù)的第二模式結(jié)構(gòu);根據(jù)所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理為所述第一模式結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)。
[0012]優(yōu)選地,所述第一模式結(jié)構(gòu)是對所述目標(biāo)數(shù)據(jù)中的每個元素的模式結(jié)構(gòu)的文本描述,所述第二模式結(jié)構(gòu)是對所述源數(shù)據(jù)中的每個元素的模式結(jié)構(gòu)的文本描述。
[0013]優(yōu)選地,所述第一模式結(jié)構(gòu)的文本描述包括以下至少之一:所述目標(biāo)數(shù)據(jù)中的每個元素的名稱,所述目標(biāo)數(shù)據(jù)中的所述每個元素的類型,所述目標(biāo)數(shù)據(jù)中的所述每個元素的合法取值范圍,所述目標(biāo)數(shù)據(jù)中的所述每個元素的嵌套關(guān)系,所述目標(biāo)數(shù)據(jù)中的各個所述每個元素的順序;和/或所述第二模式結(jié)構(gòu)的文本描述包括以下至少之一:所述源數(shù)據(jù)中的每個元素的名稱,所述源數(shù)據(jù)中的所述每個元素的類型,所述源數(shù)據(jù)中的所述每個元素的合法取值范圍,所述源數(shù)據(jù)中的所述每個元素的嵌套關(guān)系,所述源數(shù)據(jù)中的各個所述每個元素的順序。
[0014]優(yōu)選地,根據(jù)所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理為所述第一模式結(jié)構(gòu)的所述結(jié)構(gòu)化數(shù)據(jù)包括:判斷所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)是否一致;當(dāng)判斷結(jié)果為一致時,按照所述第一模式結(jié)構(gòu)或所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理成所述結(jié)構(gòu)化數(shù)據(jù);當(dāng)判斷結(jié)果為不一致時,確定所述第一結(jié)構(gòu)模式與所述第二結(jié)構(gòu)模式的差異,并根據(jù)所述第一模式結(jié)構(gòu)、所述第二模式結(jié)構(gòu)和所述差異,將所述源數(shù)據(jù)處理成所述結(jié)構(gòu)化數(shù)據(jù)。
[0015]優(yōu)選地,判斷所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)是否一致包括:比較所述第一模式結(jié)構(gòu)的第一標(biāo)識號和所述第二模式結(jié)構(gòu)的第二標(biāo)識號;如果所述第一標(biāo)識號與所述第二標(biāo)識號一致,則所述第一模式結(jié)構(gòu)與所述第二模式結(jié)構(gòu)一致;如果所述第一標(biāo)識號與所述第二標(biāo)識號不一致,則所述第一模式結(jié)構(gòu)與所述第二模式結(jié)構(gòu)不一致;其中,所述第一標(biāo)識號和所述第二標(biāo)識號由分布式存儲模式管理服務(wù)器統(tǒng)一分配。
[0016]優(yōu)選地,當(dāng)向存儲空間寫入數(shù)據(jù)時,所述目標(biāo)數(shù)據(jù)為所述存儲空間支持的數(shù)據(jù),所述源數(shù)據(jù)為待寫入的數(shù)據(jù);和/或當(dāng)從所述存儲空間讀取數(shù)據(jù)時,所述目標(biāo)數(shù)據(jù)為讀取所要得到的數(shù)據(jù),所述源數(shù)據(jù)為所述存儲空間中存儲的數(shù)據(jù)。
[0017]根據(jù)本發(fā)明的另一方面,提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理方法,包括:獲取源數(shù)據(jù)的模式結(jié)構(gòu)和所述模式結(jié)構(gòu)的標(biāo)識,其中,所述源數(shù)據(jù)為待寫入的數(shù)據(jù);根據(jù)所述模式結(jié)構(gòu)將所述源數(shù)據(jù)寫入存儲空間,并將所述標(biāo)識寫入所述存儲空間。
[0018]優(yōu)選地,所述模式結(jié)構(gòu)是對所述源數(shù)據(jù)中的每個元素的模式結(jié)構(gòu)的文本描述。
[0019]優(yōu)選地,所述文本描述包括以下至少之一:所述每個元素的名稱,所述每個元素的類型,所述每個元素的合法取值范圍,所述每個元素的嵌套關(guān)系,各個所述每個元素的順序。
[0020]優(yōu)選地,獲取所述源數(shù)據(jù)的模式結(jié)構(gòu)和所述模式結(jié)構(gòu)的標(biāo)識包括:生成所述模式結(jié)構(gòu);向分布式存儲模式管理服務(wù)器發(fā)送所述模式結(jié)構(gòu);接收所述分布式存儲模式管理服務(wù)器根據(jù)所述模式結(jié)構(gòu)返回的所述標(biāo)識,其中,在所述分布式存儲模式管理服務(wù)器在本地的現(xiàn)有模式結(jié)構(gòu)中匹配到所述模式結(jié)構(gòu)的情況下,所述標(biāo)識為所匹配到的所述現(xiàn)有模式結(jié)構(gòu)的標(biāo)識,否則所述標(biāo)識為新分配的標(biāo)識。
[0021]根據(jù)本發(fā)明的又一方面,提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理裝置,包括:獲取模塊,用于獲取目標(biāo)數(shù)據(jù)的第一模式結(jié)構(gòu)和源數(shù)據(jù)的第二模式結(jié)構(gòu);還原模塊,用于根據(jù)所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理為所述第一模式結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)。
[0022]優(yōu)選地,所述還原模塊還用于判斷所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)是否一致,當(dāng)判斷結(jié)果為一致時,按照所述第一模式結(jié)構(gòu)或所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理成所述結(jié)構(gòu)化數(shù)據(jù),當(dāng)判斷結(jié)果為不一致時,確定所述第一結(jié)構(gòu)模式與所述第二結(jié)構(gòu)模式的差異,并根據(jù)所述第一模式結(jié)構(gòu)、所述第二模式結(jié)構(gòu)和所述差異,將所述源數(shù)據(jù)處理成所述結(jié)構(gòu)化數(shù)據(jù)。
[0023]優(yōu)選地,所述還原模塊還用于比較所述第一模式結(jié)構(gòu)的第一標(biāo)識號和所述第二模式結(jié)構(gòu)的第二標(biāo)識號,如果所述第一標(biāo)識號與所述第二標(biāo)識號一致,則所述第一模式結(jié)構(gòu)與所述第二模式結(jié)構(gòu)一致,如果所述第一標(biāo)識號與所述第二標(biāo)識號不一致,則所述第一模式結(jié)構(gòu)與所述第二模式結(jié)構(gòu)不一致,其中,所述第一標(biāo)識號和所述第二標(biāo)識號由分布式存儲模式管理服務(wù)器統(tǒng)一分配。
[0024]根據(jù)本發(fā)明的又一方面,提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理裝置,包括:模式獲取模塊,用于獲取源數(shù)據(jù)的模式結(jié)構(gòu)和所述模式結(jié)構(gòu)的標(biāo)識,其中,所述源數(shù)據(jù)為待寫入的數(shù)據(jù);寫入模塊,根據(jù)所述模式結(jié)構(gòu)將所述源數(shù)據(jù)寫入存儲空間,并將所述標(biāo)識寫入所述存儲空間。
[0025]優(yōu)選地,所述模式獲取模塊還用于生成所述模式結(jié)構(gòu),向分布式存儲模式管理服務(wù)器發(fā)送所述模式結(jié)構(gòu),接收所述分布式存儲模式管理服務(wù)器根據(jù)所述模式結(jié)構(gòu)返回的所述標(biāo)識,其中,在所述分布式存儲模式管理服務(wù)器在本地的現(xiàn)有模式結(jié)構(gòu)中匹配到所述模式結(jié)構(gòu)的情況下,所述標(biāo)識為所匹配到的所述現(xiàn)有模式結(jié)構(gòu)的標(biāo)識,否則所述標(biāo)識為新分配的標(biāo)識。
[0026]根據(jù)本發(fā)明的又一方面,提供了一種分布式存儲系統(tǒng)的數(shù)據(jù)的處理系統(tǒng),包括:分布式存儲數(shù)據(jù)存儲服務(wù)器,用于存儲數(shù)據(jù);分布式存儲模式管理服務(wù)器,用于管理所述數(shù)據(jù)的模式結(jié)構(gòu);上述第十四或十五項方案所述的裝置,用于根據(jù)所述模式結(jié)構(gòu)向所述分布式存儲模式管理服務(wù)器寫入數(shù)據(jù);上述第十一至十三項方案中任一項所述的裝置,用于根據(jù)所述模式結(jié)構(gòu)從所述分布式存儲模式管理服務(wù)器讀取數(shù)據(jù)。
[0027]通過本發(fā)明,采用以下技術(shù)方案:獲取目標(biāo)數(shù)據(jù)的第一模式結(jié)構(gòu)和源數(shù)據(jù)的第二模式結(jié)構(gòu),根據(jù)所述第一模式結(jié)構(gòu)和所述第二模式結(jié)構(gòu)將所述源數(shù)據(jù)處理為所述第一模式結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù),解決了相關(guān)技術(shù)中分布式存儲系統(tǒng)中數(shù)據(jù)模式結(jié)構(gòu)描述不靈活的問題,具有提高數(shù)據(jù)模式結(jié)構(gòu)描述靈活性從而提高數(shù)據(jù)處理效率的有益效果。
【附圖說明】