專利名稱:文件管理方法
文件管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字文件管理領(lǐng)域,尤其涉及在記錄介質(zhì)上對數(shù)字文件的
記錄、讀取和修改。更確切地,本發(fā)明涉及與電腦操作系統(tǒng)(operating system)所專有的文件系統(tǒng)(file system)相互作用的數(shù)據(jù)文件管理方法 和系統(tǒng)。
通常,才艮據(jù)存儲器空間的可用性,將新的數(shù)據(jù)文件記錄在存儲器(例 如硬盤)的位置中。在用硬盤進(jìn)行記錄的情況下,硬盤在格式化時被組織 成初始化的塊。這些塊在格式化時被分配到存儲器的物理扇區(qū)上。
計算機上的數(shù)據(jù)文件管理是通過計算機操作系統(tǒng)的文件系統(tǒng)來實現(xiàn)的。
操作系統(tǒng)的文件系統(tǒng)使用記錄介質(zhì)上的一個或多個分區(qū)。分區(qū)包括用 于記錄任意數(shù)據(jù)文件的存儲空間,以及記錄存儲空間的特征、尤其是文件 在存儲空間中的地址的索引空間。
某些文件構(gòu)成目錄,將與數(shù)據(jù)文件和屬于同一分區(qū)的目錄相關(guān)的特征 的列表集中在一起。
對于存儲容量較大(例如幾千兆字節(jié))的記錄介質(zhì),當(dāng)要被記錄、讀 取或修改的數(shù)據(jù)文件的數(shù)量在同一目錄中變得較大時,文件系統(tǒng)的索引系 統(tǒng)的性能惡化。實際上,目錄類文件的組織包括^^有大量待處理事件的列 表,i^數(shù)據(jù)文件的數(shù)量達(dá)到數(shù)萬時會以造成嚴(yán)重阻礙的方式增加存取文 件的時間。在數(shù)據(jù)文件必須重命名或刪除時引起的目錄類文件的碎片化現(xiàn) 象加劇了所述性能惡化。
通過Linux EXT3文件系統(tǒng)已知的另 一組織方式,提出了 一種目錄類 文件的組織,包括B-樹類型的內(nèi)部索引系統(tǒng),以及針對每個數(shù)據(jù)文件, 基于哈希函數(shù)(fonction de hachage)的結(jié)果來計算數(shù)據(jù)文件名的摘要, 以4更在^^有大量lt據(jù)文件的目錄中加速搜索。該解決方案允許在同一目錄 中操作十多萬數(shù)據(jù)文件。然而,超過某一閾值,哈希函數(shù)的極限使得不再 能夠避免引起為不同名字的兩個數(shù)據(jù)文件分配相同摘要的沖突。對于 EXT3文件系統(tǒng),對于Linux 2.6內(nèi)核版本, 一旦同一目錄中的數(shù)據(jù)文件 的數(shù)量達(dá)到約500000,該極限出現(xiàn)。在現(xiàn)有技術(shù)中已知專利US5742817,描述了一種文件服務(wù)器,提出了 目的在于簡化尋址處理的文件查詢方法。該文獻(xiàn)提出通過由文件管理系統(tǒng) 自動分配的INODE識別處理來加速存取文件。該處理包括從該識別碼中 提取文件系統(tǒng)中的子目錄所對應(yīng)的三組十六進(jìn)制數(shù)據(jù)。
美國專利申請US2004/0236761描述了將文件記錄在一系列目錄和子 目錄中的系統(tǒng)。在樹形圖的最后一層,可進(jìn)行包括以下步驟的處理根據(jù) 文件名計算摘要以確定記錄了所述文件的"HASH SLOT (哈希時隙)" 子目錄。
換言之,以傳統(tǒng)的樹形圖形式組織存儲器空間,在樹形圖的最后一層, 一個處理在單一層次的集合中確定子目錄。
該方案限制了可以被記錄的文件的數(shù)量。文件管理系統(tǒng)的尋址方式限 制了子目錄的數(shù)量,例如對于UNIX類型的管理系統(tǒng)為65536。
此外,上述各子目錄內(nèi)部的文件的數(shù)量也由同樣的界限所限制。
總之,容量受到限制,為了充分使用容量,必須使子目錄的數(shù)量最大 化。而在單一 "耙形"層子目錄中,子目錄數(shù)量限制了文件管理系統(tǒng)的性 能。
本發(fā)明的目的在于通過提出一種穩(wěn)定耐用而快速的文件管理方法來 克服該缺點,從而允許操作的數(shù)據(jù)文件的數(shù)量僅受可用的存儲空間P艮制, 而不受由文件系統(tǒng)對數(shù)據(jù)文件名稱執(zhí)行的處理的限制。因此根據(jù)本發(fā)明的 方案不限制4吏用大容量存儲器的能力,這是由于唯一的限制是這些存儲器 的物理容量,而不再是文件系統(tǒng)要求的操作模式,對于例如文件服務(wù)器應(yīng) 用,該方案允許管理很大數(shù)量的數(shù)據(jù)文件。
^l據(jù)最廣泛的含義,本發(fā)明涉及一種文件管理方法,包括組織數(shù)據(jù)文 件庫的第一步驟,該第一步驟包括創(chuàng)建M層目錄的樹形圖,每個目錄包 含N個目錄,M是大于1的整數(shù),該方法還包括記錄數(shù)據(jù)文件的記錄步 驟,該記錄步驟包括
-對待記錄的數(shù)據(jù)文件Fi的識別碼應(yīng)用哈希函數(shù),
-根據(jù)前一步驟的結(jié)果,在具有多個層的樹形圖中,確定目標(biāo)目錄 Rdi的路徑,
-在由所述哈希函數(shù)確定的所述目錄Rdi中,在由數(shù)據(jù)文件的識別碼 決定的位置,記錄數(shù)據(jù)文件,
6該方法還包^^取數(shù)據(jù)文件的讀取步驟,該讀取步驟包括
-對待讀取的數(shù)據(jù)文件Fj的識別碼應(yīng)用同 一哈希函數(shù),
-棉^據(jù)前一步驟的結(jié)果,在樹形圖中確定目標(biāo)目錄Rcj的路徑,
-在由所述哈希函數(shù)確定的所述目錄Rej中,在由數(shù)據(jù)文件的識別碼 決定的位置,讀取數(shù)據(jù)文件。
為了并行使用存儲單元并改進(jìn)性能(存M度和/或存儲器容量),根 據(jù)一個具體實施方式
,本發(fā)明涉及根據(jù)上述權(quán)利要求所述的一種文件管理 方法,其特征在于,數(shù)據(jù)文件分布在Q個存儲單元中,每個存儲單元對 應(yīng)于P層目錄,每個目錄包含N個目錄。
與專利申請US2004/0236761的教導(dǎo)相反,該方案導(dǎo)致縮減了樹形圖 的各層的目錄的數(shù)量,這允許改進(jìn)性能(尤其是在二維樹形圖中存取數(shù)據(jù) 文件的速度)并使得可被記錄的數(shù)據(jù)文件的數(shù)量能夠幾乎不受限制。該限 制不再取決于文件管理系統(tǒng)的限制,而僅受存儲裝置的物理容量限制。
與現(xiàn)有技術(shù)的方案相反,本發(fā)明通過應(yīng)用哈希函數(shù),不再在給定的目 錄中分配地址,而是在具有多個層的樹形圖中分配路徑。在最后一層的子 目錄中的位置不再由哈希函數(shù)分配,而是由與數(shù)據(jù)文件的識別碼相關(guān)聯(lián)的 名稱分配。
優(yōu)選地,N等于16,哈希函lblSHAl函數(shù)。
文件管理的一個補充問題涉及在兩個應(yīng)用同時存取同一數(shù)據(jù)文件的 情況下保護(hù)數(shù)據(jù)的完整性。
在大多數(shù)操作系統(tǒng)中,已知在文件系統(tǒng)層次上鎖定數(shù)據(jù)文件,從而允 許在寫入或讀取過程中暫時禁止存取數(shù)據(jù)文件。這些方案由文件系統(tǒng)通常 基于駐留在存儲器中的鎖定表來管理。這些方案的缺點在于,在通過網(wǎng)絡(luò) 存取文件的情況下,從多個遠(yuǎn)程計算M取同一文件時,可能產(chǎn)生干擾或 躲。
專利US6850969提出允許避免使用鎖定的一種特別方案。該專利提 出經(jīng)驗性監(jiān)控一個應(yīng)用在打開的數(shù)據(jù)文件中記錄修改的可能性,并保證在 稱為原子IMt的所述IMt期間,沒有任何其他應(yīng)用介入同一數(shù)據(jù)文件。在 本專利的意義上,原子操作是指以連續(xù)方式執(zhí)行的不可分割的任務(wù)集,在 稱為原子操作的全部任務(wù)結(jié)束之前,沒有被中斷和受第三方^Ht干擾的可 能。該方案令人不滿意,因為當(dāng)多個應(yīng)用同時對公共文件集進(jìn)行處理時, 該方案阻止某些操作完成。盡管該方案允許避免改變現(xiàn)有的數(shù)據(jù)文件,但 會有損于并發(fā)的安全的存取。實際上,該方案要求每個處理都在上一處理
完成之后介入。因此該方案確實不適于對包含例如XML格式的數(shù)據(jù)的文 件進(jìn)行處理,所述文件可能在任何時間被不同的并發(fā)應(yīng)用所使用。
為此,本發(fā)明還涉及一種文件管理方法,其特征在于,每個數(shù)據(jù)文件 包括頭部和主體。頭部包括數(shù)據(jù)文件在文件管理系統(tǒng)中的狀態(tài)M。主體
包括文件的可修改內(nèi)容。該方法包括存取目標(biāo)數(shù)據(jù)文件的步驟,使所述狀 態(tài)M更改為禁止新的存取的狀態(tài)。
對所述數(shù)據(jù)文件的管理獨立于計算^M^作系統(tǒng)的文件系統(tǒng)。
通過閱讀下面與非限定性實施例相對應(yīng)的描述,并參照附圖
,可更好 地理解本發(fā)明,在附圖中
-圖l示出根據(jù)本發(fā)明的文件管理方法實施的樹形圖的示意圖,
-圖2至圖8示出文件管理的功能示意圖,
-圖9示出與客戶-服務(wù)器模式相對應(yīng)的、通過網(wǎng)^f吏用文件管理系 統(tǒng)的示意圖。
圖l示出根據(jù)本發(fā)明的文件管理方法實施的樹形圖的示意圖。
在所描述的示例中,按照細(xì)分為M-5層(l至5)的結(jié)構(gòu)來組織數(shù) 據(jù)文件。除最后一層5之外,每層(l至4)的每個目錄都包舍N-16個 目錄(10至12)、 (20至25)、 (30至35)、 (40至45)。 16個目錄中每一 個的名稱對應(yīng)于0和f之間的十六進(jìn)制數(shù)字。結(jié)構(gòu)中包含的目錄的總數(shù)為 16 + 162 + 163 +……+ 16M。
在所描述的示例中,樹形圖包括
-層1到4的69904個目錄,不包含數(shù)據(jù)文件,而僅包含上層的目錄;
-層5的1048576個目錄(50至55 );每個目錄包含允許存儲數(shù)據(jù)文 件的文件。
最后一層5的各目錄(50至55 )可以包含數(shù)量L受限的數(shù)據(jù)文件, L被選為較小,例如約為1000,以便允許快速的存取時間,無論何種計 算機操作系統(tǒng)的文件系統(tǒng)都可適用。
為數(shù)據(jù)文件分配存儲器位置當(dāng)創(chuàng)建由字符串形成的獨特使用名稱所表示的新數(shù)據(jù)文件時,本方法
包括對代表了使用名稱的該字符串應(yīng)用哈希函數(shù)Hi,該步驟的結(jié)果由以 十六進(jìn)制形式表示的值構(gòu)成。對于哈希函數(shù)SHA1,十六進(jìn)制形式的結(jié)果 包括40個0和f之間的十六進(jìn)制數(shù)字。
本方法包括,在前面限定的目錄的樹形圖的情況下,基于來自哈希函 數(shù)的所述結(jié)果來在所述樹形圖中確定目錄的路徑。
來自哈希函數(shù)的結(jié)果的起始M個數(shù)字的每個數(shù)字的值(rang)對應(yīng) 于目錄樹形圖的層次。
如果以^吏用名稱"myfile"為例,則應(yīng)用SHA1函數(shù)返回值 "b3580ab45cb088ba47ff070aa81c2daelbe56ca2"。
層1的目錄是帶有名稱"b"的目錄,對應(yīng)于SHA1值的第一個字符, 層2的目錄是"3",對應(yīng)于第二個字符,對于5個層(l至5)以此類推。 在最后一層目錄5中的位置由構(gòu)成使用名稱的各個字符的八位字節(jié)的具 有兩個數(shù)字的十六進(jìn)制表示構(gòu)成。對于名稱"myfile",文件的位置和名 稱是"6d7966696c65", "6d"對應(yīng)于字符"m"的具有兩個數(shù)字的十六進(jìn) 制表示,"79"對應(yīng)于字符"y"的具有兩個數(shù)字的十六進(jìn)制表示,"66"對 應(yīng)于字符"f*的具有兩個數(shù)字的十六進(jìn)制表示,以此類推。
對于需要用多個八位字節(jié)來編碼的字符,八位字節(jié)的^^脊農(nóng)次以這
種形式表示o
由于數(shù)據(jù)文件的使用名稱的獨特性,文件的表示必然是獨特的,這是 因為該表示產(chǎn)生于基于哈希函數(shù)計算出的位置與以獨特的方式基于使用 名稱計算出的數(shù)據(jù)文件名稱的組合。
該方案允許以等概率的方式并且以最大離散度將數(shù)據(jù)文件分配到目
錄樹形圖的層M的目錄中。只有層M包含數(shù)據(jù)文件,中間層不包含數(shù)據(jù) 文件并僅用于將文件分配到層M的目錄中。
在層M的各目錄內(nèi)部,數(shù)據(jù)文件的數(shù)量是適當(dāng)?shù)?,例如約為1000, 這導(dǎo)致了快速的存取時間。可以在層M的樹形圖中創(chuàng)建的數(shù)據(jù)文件的最 大數(shù)量等于1000 x 16M。例如,對于M-5,可以在層M的目錄樹形圖中 創(chuàng)建、寫入或讀取約十億個數(shù)據(jù)文件。
數(shù)據(jù)文件的創(chuàng)建、寫入、讀取和刪除
笫一步驟包括,通過應(yīng)用前面提到的哈希函數(shù)以及基于使用名稱計算文件名稱,來基于文件的使用名稱確定文件在樹形圖中的存M徑及其相
關(guān)的文件名稱。該步驟允許確定文件被記錄在層M的哪一目錄中及文件 在該目錄中的位置。
對同 一數(shù)據(jù)文件的并發(fā)存取
為了允許安全地管理對數(shù)據(jù)文件的存取,數(shù)據(jù)文件中每一個都包括頭 部和主體。主體包括文件的可以以直接存取的方式或以壓縮或加密的方式 修改的內(nèi)容。該主體前面置有頭部,該頭部包含文件在文件管理系統(tǒng)中的 狀態(tài)M。
系統(tǒng)性地,為了進(jìn)行一系列任意^Mt (寫入、讀取、修改或刪除),
由處理對文件的存M現(xiàn)為第一獲取步驟,該第一獲取步驟包括由另一個 處理將頭部的所述狀態(tài)參數(shù)修改為禁止新的存取的狀態(tài)。
當(dāng)然,當(dāng)文件處于由一個處理進(jìn)行存取或使用過程中時,另一個處理 在執(zhí)行該初始獲取步驟時將遇到禁止或等待提示。
另一個處理反復(fù)執(zhí)行該初始獲取步驟,直到目標(biāo)文件重新處于允許存 取的狀態(tài),或直到預(yù)定的期限引^^存取嘗試的中斷。
一旦由處理完成了 一系列操作,最后一個釋放步驟將頭部中的經(jīng)修改 的^t恢復(fù)為初始狀態(tài),從而允許另一個處理對數(shù)據(jù)文件進(jìn)行存取。
圖2至圖8示出由本發(fā)明實施的功能結(jié)構(gòu)。 獲^L有數(shù)據(jù)文件的功能
圖2示出用于獲,有數(shù)據(jù)文件所需的任務(wù)序列。 該功能采用如上所述基于使用名稱而計算出的文件名稱作為輸入
150。
笫一任務(wù)ioo包括嘗試在^Mt系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖 定文件,通過要求打開和鎖定文件阻止后面的處理打開和鎖定該文件,直 到關(guān)閉和解鎖該文件。
該功能I^進(jìn)行測試101以^文件的打開和鎖定如果文件未被打 開和鎖定,則測試101的結(jié)果是否定的并且該功能進(jìn)行第二測試102,第 二測試102lHi在進(jìn)行嘗試100時文件是否存在。在否定的回答的情況下, 該功能送回餘溪103, M 103指示文件不存在。
在肯定的回答的情況下,測試104 mt嘗試100的次lbl否超過閾值,或是否超過了時間期限,在否定的回答的情況下,在延時149之后進(jìn)員 的嘗試100;否則,該功能發(fā)回系統(tǒng)4^105。
如果測試101的結(jié)果是肯定的,則該功能在任務(wù)106中在文件頭部的 狀態(tài)參數(shù)中讀取文件的可用性狀態(tài)。
該功能^根據(jù)狀態(tài)^t的值來進(jìn)行文件可用性的測試107。
如果測試107的結(jié)果是否定的,il)it應(yīng)于不可用狀態(tài),則該功能執(zhí)行 在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)108。
該功能1^#進(jìn)行測試109,測試109 JiHiE嘗試100的次fcl否超過閾 值,或是否超過了時間期限,在否定的回答的情況下,在延時149之后進(jìn) 行新的嘗試100;否則,該功能發(fā)回餘蔽IIO,餘溪110指示文件仍由當(dāng) 前處理占用。
如果測試107的結(jié)果是肯定的,則該功能執(zhí)行將文件的不可用狀態(tài)寫 入文件的頭部的狀態(tài)M中的任務(wù)lll,然后,執(zhí)行計算文件獲取識別碼 的任務(wù)112,將該識別碼寫入文件的頭部的狀態(tài)^lt中的任務(wù)113,以及 讀取文件主體的任務(wù)114。任務(wù)115對應(yīng)于對文件的主體的處理,以<更提 取文件的可修改內(nèi)容。該處理根據(jù)文件的頭部的狀態(tài)^lt來執(zhí)行。該處理 例如對應(yīng)于對文件的可修改內(nèi)容的解壓或解密。最后的任務(wù)116包括在操 作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束151時作為輸出送回對數(shù)據(jù)文件獲取的確認(rèn)、文件獲取 識別碼以及文件的可修改內(nèi)容。
獲取新的數(shù)據(jù)文件的功能
圖3示出用于獲取新的數(shù)據(jù)文件所需的任務(wù)序列。 該功能采用如上所述基于使用名稱而計算出的文件名稱作為輸入
250。
第一任務(wù)200包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時創(chuàng)建、打開 和鎖定新的文件,通過要求創(chuàng)建、打開和鎖定文件阻止后面的處理打開和 鎖定該文件,直到關(guān)閉和解鎖該文件。
該功能l^進(jìn)行測試201以IHE文件的創(chuàng)建、打開和鎖定如果文件 未被創(chuàng)建、打開和鎖定,則測試201的結(jié)果是否定的并且該功能進(jìn)行第二 測試202,第二測試202 !Hi在嘗試200時文件是否存在。
在肯定的回答的情況下,該功能發(fā)回錯誤204,指示文件已經(jīng)存在。在否定的回答的情況下,該功能發(fā)回指示系統(tǒng)餘溪的錯誤203。
如果測試201的結(jié)果是肯定的,則該功能執(zhí)行創(chuàng)建和寫入具有空文件 主體的文件的頭部的任務(wù)205,然后執(zhí)行在文件的頭部的狀態(tài)M中寫入 文件的不可用狀態(tài)的任務(wù)206,然后執(zhí)行計算文件獲取識別碼的任務(wù)207, 將該識別碼寫入文件的頭部的狀態(tài)^lt中的任務(wù)208。最后的任務(wù)209包 括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束251時,作為輸出送回對數(shù)據(jù)文件獲取的確i人和文件獲 取識別碼。
獲取現(xiàn)有數(shù)據(jù)文件(如果所述lt據(jù)文件不存在則創(chuàng)建數(shù)據(jù)文件)的功
盤
圖4示出用于獲取現(xiàn)有數(shù)據(jù)文件(如果不存在則創(chuàng)建數(shù)據(jù)文件)所需 的任務(wù)序列。
該功能采用如上所述基于使用名稱而計算出的文件名稱作為輸入
350。
第一任務(wù)300包括嘗試在IMt系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖
定文件,如果文件不存在則創(chuàng)建文件,通過要求打開和鎖定文件阻止后面 的處理打開和鎖定該文件,直到關(guān)閉和解鎖該文件。
該功能I^進(jìn)行測試301以IHE文件的打開和鎖定如果文件未被打 開和鎖定,則測試301的結(jié)果是否定的并且該功能進(jìn)行笫二測試302,第 二測試302 lHt在嘗試300時文件是否存在。在否定的回答的情況下,該 功能發(fā)回系統(tǒng)錯誤303。
在肯定的回答的情況下,測試304發(fā)汪嘗試300的次lbl否超過閾值, 或是否超過了時間期限,在否定的回答的情況下,在延時349之后進(jìn)* 的嘗試300;否則,該功能發(fā)回系統(tǒng)^:305。
如果測試301的結(jié)果是肯定的,則該功能I^進(jìn)行測試306以J^ii在 嘗試300中是否創(chuàng)建了文件如果未創(chuàng)造文件,則測試306的結(jié)果是否定 的并且該功能在執(zhí)行任務(wù)307時在文件的頭部的狀態(tài)^lt中讀取文件的 可用性狀態(tài)。
該功能^根據(jù)狀態(tài)M的值來進(jìn)行文件可用性的測試308。
如果測試308的結(jié)果是否定的,il^應(yīng)于不可用狀態(tài),則該功能執(zhí)行 在 作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)309。該功能l^進(jìn)行測試310,測試310驗證嘗試300的次ltA否超過閾值,或是否超過了時間期限,在否定的回答的情況下,在延時349之后進(jìn)行新的嘗試300;否則,該功能發(fā)回餘溪3U, 4t^311指示文件仍由當(dāng)前處理占用。
如果測試308的結(jié)果是肯定的,則該功能執(zhí)行將文件的不可用狀態(tài)寫入文件的頭部的狀態(tài)M中的任務(wù)312,然后執(zhí)行計算文件獲取識別碼的任務(wù)313,將該識別碼寫入文件的頭部的狀態(tài)^lt中的任務(wù)314,以及讀取文件主體的任務(wù)315。任務(wù)316對應(yīng)于對文件主體的處理,以便提取文件的可修改內(nèi)容。該處理根據(jù)文件的頭部的狀態(tài)參數(shù)來進(jìn)行。該處理例如對應(yīng)于對文件的可修改內(nèi)容的解壓或解密。任務(wù)317包括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束351時,作為輸出送回對數(shù)據(jù)文件獲取的確認(rèn)、表示未創(chuàng)建文件的通知、文件獲取識別碼以及文件的可修改內(nèi)容。
如果測試306的結(jié)果是肯定的,則該功能執(zhí)行創(chuàng)建和寫入具有空文件主體的文件的頭部的任務(wù)318,然后執(zhí)行將文件的不可用狀態(tài)寫入文件的頭部的狀態(tài)^lfc中的任務(wù)319,然后執(zhí)行計算文件獲取識別碼的任務(wù)320,將該識別碼寫入文件的頭部的狀態(tài)W:中的任務(wù)321。最后的任務(wù)322包括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束352時作為輸出送回對數(shù)據(jù)文件獲取的確認(rèn)、表示創(chuàng)建了文件的通知以及文件獲取的識別碼。
在不l務(wù)改^t據(jù)的情況下j^放獲取的數(shù)據(jù)文件的功能
圖5示出用于在不改變數(shù)據(jù)的情況下釋放獲取的數(shù)據(jù)文件所需的任務(wù)序列。
該功能采用如上所述基于使用名稱而計算出的文件名稱以及在前述獲取數(shù)據(jù)文件時送回的獲取識別碼作為輸入450。
第一任務(wù)400包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定文件,通過要求打開和鎖定文件阻止后面的處理打開和鎖定該文件,直到關(guān)閉和解鎖該文件。
該功能f^進(jìn)行測試401以aiiE文件的打開和鎖定如果文件未被打開和鎖定,則測試401的結(jié)果是否定的并且該功能進(jìn)行第二測試402,第二測試402Ui在嘗試400時文件是否存在。在否定的回答的情況下,該功能送回錯誤403, M 403指示文件不存在。在肯定的回答的情況下,測試404驗證嘗試400的次ltA否超過閾值,或是否超過了時間期限,在否定的回答的情況下,在延時449之后進(jìn)M的嘗試400;否則,該功能送回系統(tǒng)錯誤405。
如果測試401的結(jié)果是肯定的,則該功能在執(zhí)行任務(wù)406時在文件的頭部的狀態(tài)參數(shù)中讀取文件的可用性狀態(tài)。
該功能I^根據(jù)狀態(tài)M的值來進(jìn)行文件可用性的測試407。
如果測試407的結(jié)果是肯定的,則該功能執(zhí)行在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)408,并送回錯誤409, 4^409表示未獲取文件。
如果測試407的結(jié)果是否定的,這對應(yīng)于不可用狀態(tài),則該功能在執(zhí)行任務(wù)410時,讀取文件的頭部中的獲取識別碼。
該功能I^進(jìn)行測試411,測試411檢查該識別碼是否不同于作為輸入提交的識別碼。在肯定的回答的情況下,該功能執(zhí)行在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)412,并且送回錯誤413, M413表示作為輸入提交的獲取識別碼無效。
在否定的回答的情況下,該功能執(zhí)行刪除文件的頭部的狀態(tài)^中的獲取識別碼的任務(wù)414,然后執(zhí)行將可用性狀態(tài)寫入文件的頭部中的任務(wù)415。最后的任務(wù)416包括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束451時作為輸出送回對數(shù)據(jù)文件釋放的確認(rèn)。
在修改數(shù)據(jù)的情況下釋放獲取的數(shù)據(jù)文件的功能
圖6示出用于在修改數(shù)據(jù)的情況下釋放獲取的數(shù)據(jù)文件所需的任務(wù)序列。
該功能采用如上所述基于使用名稱而計算出的文件名稱、在前述獲取數(shù)據(jù)文件時送回的獲取識別碼以及文件的可修改內(nèi)容作為輸入550 。
第一任務(wù)500包括嘗試在^作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定文件,通過要求打開和鎖定文件阻止后面的處理打開和鎖定該文件,直到關(guān)閉和解鎖該文件。
該功能l^進(jìn)行測試501以,文件的打開和鎖定如果文件未被打開和鎖定,則測試501的結(jié)果是否定的并且該功能進(jìn)行第二測試502,第二測試502 ^£在嘗試500時文件是否存在。在否定的回答的情況下,該功能送回錯誤503, M 503指示文件不存在。
在肯定的回答的情況下,測試504 !Hit嘗試500的次ltA否超過閾值,或是否超過了時間期限,在否定的回答的情況下,在延時549之后進(jìn)W的嘗試500;否則,該功能送回系統(tǒng)錯溪505。
如果測試501的結(jié)果是肯定的,則該功能在執(zhí)行任務(wù)506時在文件的頭部的狀態(tài)M中讀取文件的可用性狀態(tài)。
該功能IC^根據(jù)狀態(tài)^L的值來進(jìn)行文件可用性的測試507。
如果測試507的結(jié)果是肯定的,則該功能執(zhí)行在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)508,并且送回錯誤509, 4T^509指示未獲取文件。
如果測試507的結(jié)果是否定的,it)it應(yīng)于不可用狀態(tài),則該功能在執(zhí)行任務(wù)510時,讀取文件的頭部中的獲取識別碼。
該功能f^進(jìn)行測試511,測試511檢查該識別碼是否不同于作為輸入提交的識別碼。在肯定的回答的情況下,該功能執(zhí)行在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)512,并且送回錯誤513,錯誤513表示作為輸入提交的獲取識別碼無效。
在否定的回答的情況下,該功能執(zhí)行刪除文件的頭部的狀態(tài)M中的獲取識別碼的任務(wù)514,然后執(zhí)行將可用性狀態(tài)寫入文件的頭部中的任務(wù)515,然后執(zhí)行與對文件主體的處理相對應(yīng)的任務(wù)516,以l更將文件的可修改內(nèi)容插入到文件主體中。該處理是根據(jù)文件的頭部的狀態(tài)^來進(jìn)行
的并Jjtt應(yīng)于例如對文件的可修改內(nèi)容的壓縮或加密。該功能l^進(jìn)行寫入文件主體的任務(wù)517,最后的任務(wù)518包括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束551時作為輸出送回對數(shù)據(jù)文件的釋放的確認(rèn)以;M"
文件內(nèi)容的修改的確認(rèn)。
在刪除獲取的lt據(jù)文件的情況下釋放所述數(shù)據(jù)文件的功能
圖7示出用于在刪除獲取的數(shù)據(jù)文件的情況下釋放所述數(shù)據(jù)文件所需的任務(wù)序列。
該功能采用如上所述基于使用名稱而計算出的文件名稱以及在前述獲取數(shù)據(jù)文件時送回的獲取識別碼作為輸入650。
笫一任務(wù)600包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定文件,通過要求打開和鎖定文件阻止后面的處理打開和鎖定該文件,直 到關(guān)閉和解鎖該文件。
該功能IC^進(jìn)行測試601以!Hi文件的打開和鎖定如果文件未被打 開和鎖定,則測試601的結(jié)果是否定的并且該功能進(jìn)行第二測試602,第 二測試602 !Hi在嘗試600時文件是否存在。在否定的回答的情況下,該 功能送回餘溪603,603指示文件不存在。
在肯定的回答的情況下,測試604驗證嘗試600的次ltA否超過閾值, 或是否超過了時間期限,在否定的回答的情況下,在延時649之后進(jìn)^^t 的嘗試600;否則,該功能送回系統(tǒng)錯誤605。
如果測試601的結(jié)果是肯定的,則該功能在執(zhí)行任務(wù)606時在文件的 頭部的狀態(tài)^lt中讀取文件的可用性狀態(tài)。
該功能l^根據(jù)狀態(tài)^:的值來進(jìn)行文件可用性的測試607。
如果測試607的結(jié)果是肯定的,則該功能執(zhí)行在操作系統(tǒng)的文件系統(tǒng) 層次上同時關(guān)閉和解鎖文件的任務(wù)608,并且送回錯誤609, 4t"^609指 示未獲取文件。
如果測試607的結(jié)果是否定的,這對應(yīng)于不可用狀態(tài),則該功能在執(zhí) 行任務(wù)610時讀取文件的頭部中的獲取識別碼。
該功能^ii行測試611,測試611檢查該識別碼是否不同于作為輸 入提交的識別碼。在肯定的回答的情況下,該功能執(zhí)行在操作系統(tǒng)的文件 系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)612,并且送回錯誤613,錯誤613 表示在輸入處提交的獲取識別碼無效。
在否定的回答的情況下,該功能執(zhí)行刪除文件的頭部的狀態(tài)^lfc中的 獲取識別碼的任務(wù)614,然后執(zhí)行將可用性狀態(tài)寫入文件的頭部中的任務(wù) 615。最后的任務(wù)616包括在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉、解鎖 和刪除文件。
該功能在結(jié)束651時作為輸出送回對數(shù)據(jù)文件釋放的確認(rèn)以及對數(shù) 據(jù)文件刪除的確認(rèn)。
在不獲取現(xiàn)有l(wèi)t據(jù)文件的情況下簡單讀取現(xiàn)有數(shù)據(jù)文件的功能
圖8示出用于在不獲取現(xiàn)有數(shù)據(jù)文件的情況下簡單讀取現(xiàn)有數(shù)據(jù)文 件所需的任務(wù)序列。
該功能采用如上所述基于使用名稱而計算出的文件名稱作為輸750。
第一任務(wù)700包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖 定文件,通過要求打開和鎖定文件阻止后面的處理打開和鎖定該文件,直 到關(guān)閉和解鎖該文件。
該功能l^進(jìn)行測試701以m^文件的打開和鎖定如果文件未被打 開和鎖定,則測試701的結(jié)果是否定的并且該功能進(jìn)行笫二測試702,第 二測試702驗證在嘗試700時文件是否存在。在否定的回答的情況下,該 功能送回餘溪703, 703指示文件不存在。
在肯定的回答的情況下,測試704驗證嘗試700的次數(shù)是否超過閾值, 或是否超過了時間期限,在否定的回答的情況下,在延時749之后進(jìn)M 的嘗試700;否則,該功能送回系統(tǒng)餘溪705。
如果測試701的結(jié)果是肯定的,則該功能在執(zhí)行任務(wù)706時在文件的 頭部的狀態(tài)^lt中讀取文件的可用性狀態(tài)。
該功能l^根據(jù)狀態(tài)^t的值來進(jìn)行文件可用性的測試707。
如果測試707的結(jié)果是否定的,i^t應(yīng)于不可用狀態(tài),則該功能執(zhí)行 在操作系統(tǒng)的文件系統(tǒng)層次上同時關(guān)閉和解鎖文件的任務(wù)708。
該功能l^進(jìn)行測試709,測試709發(fā)汪嘗試700的次lbl否超過閾 值,或是否超過了時間期限,在否定的回答的情況下,在延時749之后進(jìn) 行新的嘗試700;否則,該功能送回錯誤710,餘溪710指示文件仍由當(dāng) 前處理占用。
如果測試707的結(jié)果是肯定的,則該功能執(zhí)行讀取文件主體的任務(wù) 711, 1^執(zhí)行處理文件主體的任務(wù)712,以便提取文件的可修改內(nèi)容。 該處理是根據(jù)文件的頭部的狀態(tài)^lt來進(jìn)行的。該處理對應(yīng)于例如對文件 的可修改內(nèi)容的解壓或解密。最后的任務(wù)713包括在操作系統(tǒng)的文件系統(tǒng) 層次上同時關(guān)閉和解鎖文件。
該功能在結(jié)束751時作為輸出送回對數(shù)據(jù)文件的簡單讀取的確認(rèn)以 及文件的可修改內(nèi)容。
其它的功能允許便于管理樹形圖,尤其是
-讀取數(shù)據(jù)文件的頭部的狀態(tài)^lt,包括文件的可用性狀態(tài),
—強制釋,放未由處理^^放的^t據(jù)文件,
17—通過樹形圖的子集列出樹形圖中包含的數(shù)據(jù)文件。 客戶服務(wù)器模式
圖9涉及一種特別的和優(yōu)選的應(yīng)用場合。圖9示出用于通過網(wǎng)絡(luò)使用 根據(jù)本發(fā)明的文件管理系統(tǒng)(該模式對應(yīng)于客戶服務(wù)器模式)所需的任務(wù) 序列。
在該場合中,文件管理系統(tǒng)安裝在包括服務(wù)器軟件801的服務(wù)器計算 機800上。服務(wù)器計算機可由多個客戶計算機802至804訪問,所i^戶 計算機每個都包括客戶軟件805至807。客戶軟件和服務(wù)器軟件之間的交 互使用已知類型的網(wǎng)^fl"輸協(xié)議,例如HTTP或優(yōu)選為HTTPS類型的安 全協(xié)議。
在該場合中,本發(fā)明^吏用應(yīng)用協(xié)i義808,應(yīng)用協(xié)i義808允^午通過"文 件獲取"或"文件釋放"類型的指令來調(diào)用符合本發(fā)明的文件管理系統(tǒng)的 功能。文件以多個子集809至811的形式分布在服務(wù)器計算機上,每個子 集對應(yīng)于根據(jù)本發(fā)明的稱為"表"的樹形圖。數(shù)據(jù)文件的使用名稱在協(xié)議 中表示為"鍵"。
通過客戶端軟件在客戶計算機中的一臺上執(zhí)行第一任務(wù)812。第一任 務(wù)812包括調(diào)用針對表和鍵的獲取、釋放或簡單讀取的功能。
通itJi艮務(wù)器軟件在服務(wù)器計算機上執(zhí)行第二任務(wù)813。第二任務(wù)813 包括執(zhí)行由客戶^L件所請求的功能。
通itJJ艮務(wù)器軟件在服務(wù)器計算機上執(zhí)行第三任務(wù)814。第三任務(wù)包括 向客戶軟件發(fā)回所請求的功能的結(jié)果。
可選地,系統(tǒng)包括多個服務(wù)器,從而允許分配數(shù)據(jù)的存儲負(fù)荷和容量。 在該場合中,客戶軟件805至807包括根據(jù)表和鍵來選擇服務(wù)器的規(guī)則。
服務(wù)器軟件801還可以包括對執(zhí)行過的IMt的日志功能,以便允許在 a服務(wù)器上增量重構(gòu)服務(wù)器計算機的樹形圖,而無需在M服務(wù)器上對 樹形圖進(jìn)行完整的復(fù)制。
18
權(quán)利要求
1.一種文件管理方法,包括組織數(shù)據(jù)文件庫的第一步驟,所述第一步驟包括創(chuàng)建M層目錄的樹形圖,每個目錄包含N個目錄,M是大于1的整數(shù),該方法還包括記錄所述數(shù)據(jù)文件的記錄步驟,所述記錄步驟包括-對待記錄的數(shù)據(jù)文件Fi的識別碼應(yīng)用哈希函數(shù),-根據(jù)前一步驟的結(jié)果,在具有多個層的所述樹形圖中,確定目標(biāo)目錄Rdi的路徑,-在由所述哈希函數(shù)確定的所述目錄Rdi中,在由所述數(shù)據(jù)文件的識別碼決定的位置,記錄所述數(shù)據(jù)文件,該方法還包括讀取數(shù)據(jù)文件的讀取步驟,所述讀取步驟包括-對待讀取的數(shù)據(jù)文件Fj的識別碼應(yīng)用同一哈希函數(shù),-根據(jù)前一步驟的結(jié)果,在所述樹形圖中確定目標(biāo)目錄Rcj的路徑,-在由所述哈希函數(shù)確定的所述目錄Rcj中,在由所述數(shù)據(jù)文件的識別碼決定的位置,讀取所述數(shù)據(jù)文件。
2. 根據(jù)前述權(quán)利要求所述的文件管理方法,其特征在于,所述數(shù)據(jù) 文件分布在Q個存儲單元中,每個存儲單元對應(yīng)于P層目錄,每個目錄 包含N個目錄。
3. 根據(jù)前i^5L利要求中任一項所述的文件管理方法,其特征在于,N 等于16,以及所述哈希函fclSHAl函數(shù)。
4. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 每個數(shù)據(jù)文件都包括頭部和主體,所述主體包括文件的可修改內(nèi)容,所述 主體前面置有頭部,該頭部包括所述文件在文件管理系統(tǒng)中的狀態(tài)參數(shù), 所述方法包括通過對一 系列操作的處理來獲取目標(biāo)文件的預(yù)先獲取步驟, 該獲取引起所述頭部的^lt中至少一個的狀態(tài)改變,所述狀態(tài)改變阻止另 一處理進(jìn)行獲取,直到釋放目標(biāo)文件。
5. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 所述獲取、讀取和釋放操作由客戶軟件控制,相應(yīng)的步驟由服務(wù)器軟件執(zhí) 行。
6. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 包括獲取現(xiàn)有數(shù)據(jù)文件的步驟,該步驟采用基于使用名稱而計算出的文件名稱作為輸入(150),所述步驟包括第一任務(wù)(IOO),所述笫一任務(wù)(IOO)包括嘗試在IMt系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定所述文件,通過要求打開和鎖定所述文件阻止后面的處理打開和鎖定所述文件,直到關(guān)閉和 解鎖所述文件。
7. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 包括獲取新的數(shù)據(jù)文件的步驟,該步驟釆用基于使用名稱而計算出的文件 名稱作為輸入(250),所述第一任務(wù)(200)包括嘗試在操作系統(tǒng)的文件 系統(tǒng)層次上同時創(chuàng)建、打開和鎖定新的文件,通過要求創(chuàng)建、打開和鎖定 所述文件阻止后面的處理打開和鎖定所述文件,直到關(guān)閉和解鎖所述文 件。
8. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 包括獲,有數(shù)據(jù)文件,若所述文件不存在則創(chuàng)建所述文件的步驟,所述 功能釆用基于使用名稱而計算出的文件名稱作為輸入(350 ),所述第 一任 務(wù)(300)包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定文件, 如果所述文件不存在則創(chuàng)建所述文件,通過要求打開和鎖定文件阻止后面 的處理打開和鎖定所述文件,直到關(guān)閉和解鎖所述文件。
9. 根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 包括在不修改數(shù)據(jù)的情況下釋放獲取到的數(shù)據(jù)文件的步驟,所述功能采用 如前所述基于使用名稱而計算出的文件名稱以及在前面獲取數(shù)據(jù)文件時 送回的獲取識別碼作為輸入(450),所述第一任務(wù)(400)包括嘗試在操 作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定所述文件,通過要求打開和鎖定 文件阻止后面的處理打開和鎖定所述文件,直到關(guān)閉和解鎖所述文件。
10. 根據(jù)前^利要求中任一項所述的文件管理方法,其特征在于, 包括在修改數(shù)據(jù)的情況下釋放獲取到的數(shù)據(jù)文件的步驟,所述功能采用如 前所逸基于使用名稱而計算出的文件名稱、在前面獲取數(shù)據(jù)文件時送回的 獲取識別碼以及所述文件的可修改內(nèi)容作為輸入(550),所述第一任務(wù)(500 )包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定所述文件, 通過要求打開和鎖定所述文件阻止后面的處理打開和鎖定所述文件,直到 關(guān)閉和解鎖所述文件。
11. 根據(jù)前iii5L利要求中任一項所述的文件管理方法,其特征在于, 包括在刪除獲取到的數(shù)據(jù)文件的情況下釋放所述數(shù)據(jù)文件的步驟,所述功 能采用如前所述基于使用名稱而計算出的文件名稱以及在前面獲取數(shù)據(jù) 文件時送回的獲取識別碼作為輸入(650),所述笫一任務(wù)(600)包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定所述文件,通過要求打開 和鎖定所述文件阻止后面的處理打開和鎖定所述文件,直到關(guān)閉和解鎖所 述文件。
12.根據(jù)前述權(quán)利要求中任一項所述的文件管理方法,其特征在于, 包括在不獲取現(xiàn)有數(shù)據(jù)文件的情況下簡單讀取所述文件的步驟,所述功能 采用如前所逸基于使用名稱而計算出的文件名稱作為輸入(750 ),所述第 一任務(wù)(700)包括嘗試在操作系統(tǒng)的文件系統(tǒng)層次上同時打開和鎖定所 述文件,通過要求打開和鎖定所述文件阻止后面的處理打開和鎖定所述文 件,直到關(guān)閉和解鎖所述文件。
全文摘要
本發(fā)明涉及一種文件管理方法,包括組織數(shù)據(jù)文件庫的第一步驟,該第一步驟包括創(chuàng)建M層目錄的樹形圖,每個目錄包含N個目錄,M是大于1的整數(shù),該方法還包括記錄數(shù)據(jù)文件的記錄步驟,該記錄步驟包括對待記錄的數(shù)據(jù)文件F<sub>i</sub>的識別碼應(yīng)用哈希函數(shù),根據(jù)前一步驟的結(jié)果在樹形圖中確定目標(biāo)多層目錄R<sub>di</sub>的路徑,在由所述哈希函數(shù)確定的所述目錄R<sub>di</sub>中在由數(shù)據(jù)文件的識別碼決定的位置記錄數(shù)據(jù)文件,該方法還包括讀取數(shù)據(jù)文件的讀取步驟,該讀取步驟包括對待讀取的數(shù)據(jù)文件F<sub>j</sub>的識別碼應(yīng)用同一哈希函數(shù),根據(jù)前一步驟的結(jié)果在樹形圖中確定目標(biāo)目錄R<sub>cj</sub>的路徑,在由所述哈希函數(shù)確定的所述目錄R<sub>cj</sub>中在由數(shù)據(jù)文件的識別碼決定的位置讀取數(shù)據(jù)文件。
文檔編號G06F17/30GK101669118SQ200880010343
公開日2010年3月10日 申請日期2008年2月12日 優(yōu)先權(quán)日2007年2月13日
發(fā)明者亞歷克西斯·塔馬斯, 阿莫里·格蘭貝爾 申請人:Stg交互公司