專利名稱:一種基于分塊策略的文件存儲(chǔ)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式存儲(chǔ)技術(shù)領(lǐng)域,尤其是基于結(jié)構(gòu)化P2P技術(shù)的分布式存儲(chǔ)及其應(yīng)用,具體涉及一種基于分塊策略的文件存儲(chǔ)方法及系統(tǒng)。
背景技術(shù):
隨著3G技術(shù)的全球覆蓋和推廣,IOS、Android等操作系統(tǒng)的出現(xiàn),使得移動(dòng)智能終端迅速的在市場(chǎng)上擴(kuò)張,相應(yīng)的基于P2P技術(shù)的應(yīng)用與研究再一次引起了大家的關(guān)注?,F(xiàn)今的眾多基于P2P技術(shù)的應(yīng)用中,基于P2P技術(shù)的社交網(wǎng)絡(luò)無(wú)疑是一個(gè)研究的熱點(diǎn)。而其中,大部分的基于P2P的社交網(wǎng)絡(luò)應(yīng)用都是建立在Past之上的。Past是基于結(jié)構(gòu)化P2P技術(shù)-Pasty的實(shí)現(xiàn)文件冗余存儲(chǔ)的開(kāi)源應(yīng)用。存儲(chǔ)在Past中的文件會(huì)被完全復(fù)制K份并分配到K個(gè)與該文件ID最近的節(jié)點(diǎn)上進(jìn)行存儲(chǔ)。當(dāng)接收到對(duì)文件的讀請(qǐng)求時(shí),Past會(huì)利用pastry路由協(xié)議將該請(qǐng)求發(fā)往該文件ID對(duì)應(yīng)的根節(jié)點(diǎn)路由,在路由過(guò)程中,一旦請(qǐng)求到達(dá)這K個(gè)節(jié)點(diǎn)中的某個(gè)節(jié)點(diǎn),則該節(jié)點(diǎn)將直接返回該文件。然而在Past中,基本的存儲(chǔ)單位是文件,并且不能對(duì)文件進(jìn)行修改、更新和刪除操作。這意味著如果用戶只需要修改一個(gè)大文件的部分內(nèi)容,他不得不先將整個(gè)文件讀取出來(lái),并對(duì)文件進(jìn)行相應(yīng)的修改,最后用一另外的版本將文件存儲(chǔ)到Past中,或者用戶只需要讀取一個(gè)大文件的部分內(nèi)容,他也不得不將這個(gè)文件從系統(tǒng)中讀取出來(lái),這無(wú)疑浪費(fèi)了寶貴的帶寬資源,增加了系統(tǒng)的響應(yīng)時(shí)間。此外,沒(méi)有刪除操作,用戶不能立刻釋放無(wú)用的文件占用的空間和文件名,無(wú)疑約束了上層應(yīng)用的開(kāi)發(fā),增加了應(yīng)用開(kāi)發(fā)的難度。
發(fā)明內(nèi)容
本發(fā)明目的在于,為克服現(xiàn)有Past系統(tǒng)由于以文件為存儲(chǔ)單位并且不提供更新和刪除操作而產(chǎn)生的在存儲(chǔ)大文件時(shí)的帶寬資源浪費(fèi)、系統(tǒng)響應(yīng)時(shí)間延長(zhǎng)問(wèn)題,從而提供一種基于分塊策略的文件存儲(chǔ)方法及系統(tǒng)。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于分塊策略的文件存儲(chǔ)方法,該方法的數(shù)據(jù)塊存儲(chǔ)于Past子系統(tǒng)中,所述方法具體包含:步驟101)將待存儲(chǔ)的用戶文件分成多個(gè)數(shù)據(jù)塊,同時(shí)創(chuàng)建維護(hù)文件、文件分塊以及文件訪問(wèn)相關(guān)信息的元數(shù)據(jù);步驟102)將所有的數(shù)據(jù)塊和元數(shù)據(jù)均作為文件存儲(chǔ)于客戶端優(yōu)化的Past子系統(tǒng)中;其中,所述優(yōu)化的Past子系統(tǒng)即增加了刪除和更新操作的Past子系統(tǒng)。上述技術(shù)方案中,所述的數(shù)據(jù)塊大小相等;所述元數(shù)據(jù)結(jié)構(gòu)具體包含:文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間和文件最后訪問(wèn)的時(shí)間。上述技術(shù)方案中,所述方法步驟102)之后還包含:讀取和更新文件數(shù)據(jù)塊的方法;其中,所述讀取和更新文件數(shù)據(jù)塊的方法包含:
步驟201)讀取文件的元數(shù)據(jù);步驟202)解析元數(shù)據(jù)獲取對(duì)應(yīng)的數(shù)據(jù)塊的塊名;步驟203)根據(jù)獲取的數(shù)據(jù)塊的塊名讀取/更新相應(yīng)的數(shù)據(jù)塊?;谏鲜龇椒ū景l(fā)明還提供了一種基于分塊策略的文件存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)將數(shù)據(jù)塊存儲(chǔ)于Past子系統(tǒng)中,包含=Past子系統(tǒng)中,其特征在于,所述文件存儲(chǔ)系統(tǒng)包含:文件分塊單元,用于將待存儲(chǔ)的文件進(jìn)行分塊;元數(shù)據(jù)生成單元,用于基于文件分塊單元獲取的分塊建立用于檢索相關(guān)的元數(shù)據(jù);輔助封裝單元,用于將所有分塊及元數(shù)據(jù)均封裝為Past子系統(tǒng)中的文件;和優(yōu)化的Past子系統(tǒng),用于存儲(chǔ)輔助封裝單元封轉(zhuǎn)的文件,且該子系統(tǒng)是基于Past子系統(tǒng)的改進(jìn);其中,所述優(yōu)化的Past子系統(tǒng)即增加了刪除和更新文件功能的Past子系統(tǒng)。上述技術(shù)方案中,所述的數(shù)據(jù)塊大小相等;所述元數(shù)據(jù)結(jié)構(gòu)具體包含:文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間和文件最后訪問(wèn)的時(shí)間。上述技術(shù)方案中,所系統(tǒng)還包含:讀取和更新文件數(shù)據(jù)塊的輔助子系統(tǒng),用于讀取或更新優(yōu)化的Past子系統(tǒng)存儲(chǔ)的數(shù)據(jù)塊;其中,所述讀取和更新文件數(shù)據(jù)塊的輔助子系統(tǒng)包含:讀取模塊,用于讀取文件的元數(shù)據(jù);解析模塊,用于解析元數(shù)據(jù)獲取對(duì)應(yīng)的數(shù)據(jù)塊的塊名;和操作執(zhí)行模塊,用于根據(jù)獲取的數(shù)據(jù)塊的塊名讀取/更新相應(yīng)的數(shù)據(jù)塊。本發(fā)明提供的方法與系統(tǒng)不僅繼承了 Past文件存儲(chǔ)系統(tǒng)的高可擴(kuò)展性,可用性和安全性,而且避免了對(duì)大文件進(jìn)行修改和讀取操作時(shí)不必要的帶寬浪費(fèi)和響應(yīng)時(shí)間的延長(zhǎng)。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:1.在Past系統(tǒng)上增加刪除和更新操作,為后續(xù)的系統(tǒng)對(duì)文件分塊進(jìn)行更新和刪除提供支持,此外這兩個(gè)操作使系統(tǒng)能更好的服務(wù)于上層應(yīng)用。2.文件要等大小的分成多個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ),同時(shí)創(chuàng)建維護(hù)文件、文件分塊以及文件訪問(wèn)相關(guān)信息的元數(shù)據(jù)。文件分塊以及元數(shù)據(jù)的引入,使得系統(tǒng)能以數(shù)據(jù)塊為存儲(chǔ)單位,為應(yīng)用提供大文件的數(shù)據(jù)塊級(jí)的訪問(wèn)。3.在添加了刪除和更新操作的Past系統(tǒng)中,數(shù)據(jù)塊和元數(shù)據(jù)都視為文件進(jìn)行存儲(chǔ)。即將封裝修改過(guò)后的Past系統(tǒng)作為本發(fā)明的底層數(shù)據(jù)塊存儲(chǔ)系統(tǒng)。4.讀取文件數(shù)據(jù)塊時(shí),先從底層的修改過(guò)后Past系統(tǒng)中讀取文件的元數(shù)據(jù),然后對(duì)該元數(shù)據(jù)進(jìn)行解析獲取對(duì)應(yīng)數(shù)據(jù)塊的塊名,最后利用塊名從Past系統(tǒng)中讀取相應(yīng)的數(shù)據(jù)塊。5.更新文件數(shù)據(jù)塊時(shí),先從底層的修改過(guò)后Past系統(tǒng)中讀取文件的元數(shù)據(jù),然后對(duì)該元數(shù)據(jù)進(jìn)行解析獲取對(duì)應(yīng)數(shù)據(jù)塊的塊名,最后利用塊名更新Past系統(tǒng)中相應(yīng)的數(shù)據(jù)塊。采用上述技術(shù)方案后,本發(fā)明具有以下優(yōu)點(diǎn):1.本發(fā)明的方法與系統(tǒng)在繼承了 Past分布式存儲(chǔ)的高可靠性、可用性和安全性優(yōu)點(diǎn)的基礎(chǔ)上,可以使對(duì)大文件的部分內(nèi)容進(jìn)行更新和讀操作時(shí),縮短操作的響應(yīng)時(shí)間并且能避免大量的無(wú)用的帶寬消耗。2.以數(shù)據(jù)塊為存儲(chǔ)單位,用戶可根據(jù)應(yīng)用需求定義單位的大小,即數(shù)據(jù)塊的大小粒度,并且能對(duì)數(shù)據(jù)塊進(jìn)行更新和刪除。
圖1是本發(fā)明經(jīng)過(guò)修改后Past系統(tǒng)的節(jié)點(diǎn)對(duì)插入消息的處理流程;圖2是本發(fā)明客戶端更新操作的執(zhí)行流程;圖3是本發(fā)明客戶端刪除操作的執(zhí)行流程;圖4是本發(fā)明中系統(tǒng)實(shí)施例處理請(qǐng)求的時(shí)序圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。圖1是本發(fā)明中經(jīng)過(guò)修改的Past系統(tǒng)節(jié)點(diǎn)處理插入消息的流程圖,具體流程包括:101)Past系統(tǒng)的節(jié)點(diǎn)在收到插入消息后,從插入消息中提取所要插入的文件。102)節(jié)點(diǎn)查詢本地文件系統(tǒng)是否已經(jīng)存儲(chǔ)了與所要插入文件ID相同的文件。如果已經(jīng)存在,轉(zhuǎn)103 ;否則轉(zhuǎn)104 ;103)將所插入的文件與本地已經(jīng)存儲(chǔ)的ID相同的文件進(jìn)行版本比較,判斷插入的文件的版本是否是最新的,如果是最新的,則轉(zhuǎn)104 ;否則轉(zhuǎn)105。104)Past系統(tǒng)節(jié)點(diǎn)將插入的文件存儲(chǔ)到本地文件系統(tǒng)中。105)結(jié)束對(duì)插入消息的處理流程。本發(fā)明利用如圖1對(duì)Past系統(tǒng)節(jié)點(diǎn)處理插入消息流程的修改,可以進(jìn)一步添加刪除和更新操作。圖2是本發(fā)明中Past系統(tǒng)客戶端執(zhí)行更新操作的流程圖,具體流程包括:201)由客戶端接收用戶對(duì)文件的更新請(qǐng)求,請(qǐng)求包括了文件ID、二進(jìn)制文件內(nèi)容。202)以更新文件的ID從Past系統(tǒng)中讀取文件,判斷文件是否已經(jīng)存儲(chǔ)在Past中。如果已經(jīng)存儲(chǔ),則轉(zhuǎn)向203,否則轉(zhuǎn)向204。203)將更新的文件版本設(shè)置為讀取到的文件的版本加I。204)將更新文件存儲(chǔ)到Past系統(tǒng)中。205)客戶端更新操作流程結(jié)束。圖3是本發(fā)明中Past系統(tǒng)客戶端執(zhí)行刪除操作的流程圖,具體流程包括:301)由客戶端接收用戶對(duì)文件的刪除請(qǐng)求,請(qǐng)求包括了文件ID。302)以要?jiǎng)h除的文件的ID從Past系統(tǒng)中讀取文件,判斷文件是否已經(jīng)存儲(chǔ)在Past中。如果已經(jīng)存儲(chǔ),則轉(zhuǎn)向303,否則轉(zhuǎn)向304。303)創(chuàng)建一個(gè)版本號(hào)為讀取到的文件的版本加I的空文件。304)將303中創(chuàng)建的文件存儲(chǔ)到Past系統(tǒng)中。305)客戶端刪除操作流程結(jié)束。 本發(fā)明中元數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)包括了文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間、文件最后訪問(wèn)的時(shí)間。通過(guò)這些信息的記錄,為后續(xù)的文件分塊以及分塊的相關(guān)操作準(zhǔn)備,具體描述如下:
權(quán)利要求
1.一種基于分塊策略的文件存儲(chǔ)方法,該方法的數(shù)據(jù)塊存儲(chǔ)于Past子系統(tǒng)中,所述方法具體包含: 步驟101)將待存儲(chǔ)的用戶文件分成多個(gè)數(shù)據(jù)塊,同時(shí)創(chuàng)建維護(hù)文件、文件分塊以及文件訪問(wèn)相關(guān)信息的元數(shù)據(jù); 步驟102)將所有的數(shù)據(jù)塊和元數(shù)據(jù)均作為文件存儲(chǔ)于客戶端優(yōu)化的Past子系統(tǒng)中; 其中,所述優(yōu)化的Past子系統(tǒng)即增加了刪除和更新操作的Past子系統(tǒng)。
2.根據(jù)權(quán)利要求1所述的基于分塊策略的文件存儲(chǔ)方法,其特征在于,所述的數(shù)據(jù)塊大小相等。
3.根據(jù)權(quán)利要求1所述的基于分塊策略的文件存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)結(jié)構(gòu)具體包含:文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間和文件最后訪問(wèn)的時(shí)間。
4.根據(jù)權(quán)利要求1所述的基于分塊策略的文件存儲(chǔ)方法,其特征在于,所述方法步驟102)之后還包含:讀取和更新文件數(shù)據(jù)塊的方法; 其中, 所述讀取和更新文件數(shù)據(jù)塊的方法包含: 步驟201)讀取文件的元數(shù)據(jù); 步驟202)解析元數(shù)據(jù)獲取對(duì)應(yīng)的數(shù)據(jù)塊的塊名; 步驟203)根據(jù)獲取的數(shù)據(jù)塊的塊名讀取/更新相應(yīng)的數(shù)據(jù)塊。
5.一種基于分塊策略的文件存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)將數(shù)據(jù)塊存儲(chǔ)于Past子系統(tǒng)中,包含:Past子系統(tǒng)中,其特征在于,所述文件存儲(chǔ)系統(tǒng)包含: 文件分塊單元,用于將待存儲(chǔ)的文件進(jìn)行分塊; 元數(shù)據(jù)生成單元,用于基于文件分塊單元獲取的分塊建立用于檢索相關(guān)的元數(shù)據(jù);輔助封裝單元,用于將所有分塊及元數(shù)據(jù)均封裝為Past子系統(tǒng)中的文件;和優(yōu)化的Past子系統(tǒng),用于存儲(chǔ)輔助封裝單元封轉(zhuǎn)的文件,且該子系統(tǒng)是基于Past子系統(tǒng)的改進(jìn); 其中,所述優(yōu)化的Past子系統(tǒng)即增加了刪除和更新文件功能的Past子系統(tǒng)。
6.根據(jù)權(quán)利要求5所述的基于分塊策略的文件存儲(chǔ)系統(tǒng),其特征在于,所述的數(shù)據(jù)塊大小相等。
7.根據(jù)權(quán)利要求5所述的基于分塊策略的文件存儲(chǔ)系統(tǒng),其特征在于,所述元數(shù)據(jù)結(jié)構(gòu)具體包含:文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間和文件最后訪問(wèn)的時(shí)間。
8.根據(jù)權(quán)利要求5所述的基于分塊策略的文件存儲(chǔ)系統(tǒng),其特征在于,所系統(tǒng)還包含:讀取和更新文件數(shù)據(jù)塊的輔助子系統(tǒng),用于讀取或更新優(yōu)化的Past子系統(tǒng)存儲(chǔ)的數(shù)據(jù)塊; 其中, 所述讀取和更新文件數(shù)據(jù)塊的輔助子系統(tǒng)包含: 讀取模塊,用于讀取文件的元數(shù)據(jù); 解析模塊,用于解析元數(shù)據(jù)獲取對(duì)應(yīng)的數(shù)據(jù)塊的塊名;和 操作執(zhí)行模塊,用于根據(jù)獲取的數(shù)據(jù)塊的塊名讀取/更新相應(yīng)的數(shù)據(jù)塊。
全文摘要
本發(fā)明提供了一種基于分塊策略的文件存儲(chǔ)方法及系統(tǒng),該方法的數(shù)據(jù)塊存儲(chǔ)于Past子系統(tǒng)中,所述方法具體包含步驟101)將待存儲(chǔ)的用戶文件分成多個(gè)數(shù)據(jù)塊,同時(shí)創(chuàng)建維護(hù)文件、文件分塊以及文件訪問(wèn)相關(guān)信息的元數(shù)據(jù);步驟102)將所有的數(shù)據(jù)塊和元數(shù)據(jù)均作為文件存儲(chǔ)于客戶端優(yōu)化的Past子系統(tǒng)中;其中,所述優(yōu)化的Past子系統(tǒng)即增加了刪除和更新操作的Past子系統(tǒng)。所述的數(shù)據(jù)塊大小相等。所述元數(shù)據(jù)結(jié)構(gòu)具體包含文件名、文件各個(gè)分塊名、文件大小、文件最后修改的時(shí)間和文件最后訪問(wèn)的時(shí)間。本發(fā)明提供的方法與系統(tǒng)不僅繼承了Past文件存儲(chǔ)系統(tǒng)的高可擴(kuò)展性,可用性和安全性,而且避免了對(duì)大文件進(jìn)行修改和讀取操作時(shí)不必要的帶寬浪費(fèi)和響應(yīng)時(shí)間的延長(zhǎng)。
文檔編號(hào)G06F17/30GK103207866SQ20121001239
公開(kāi)日2013年7月17日 申請(qǐng)日期2012年1月16日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者王勁林, 黃垂碧, 王玲芳, 陳君 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所