本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及一種小文件存儲(chǔ)方法、小文件讀取方法及系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)的高速發(fā)展產(chǎn)生了海量的圖片、文檔等文件,這些文件的特點(diǎn)是尺寸較小(一般在100kb以下),數(shù)量巨大(數(shù)以億計(jì)),傳統(tǒng)的posix接口文件系統(tǒng)已經(jīng)難以滿足需求,這就是業(yè)界著名的海量小文件問題。對(duì)于這個(gè)問題,業(yè)界的通用做法是合并存儲(chǔ),即將小文件合并存儲(chǔ)到一個(gè)傳統(tǒng)的posix文件,例如facebook的haystack,linkedin的ambry和淘寶的tfs,這些系統(tǒng)的合并存儲(chǔ)方式都是類似的,就是服務(wù)器端只保存部分元數(shù)據(jù),剩余元數(shù)據(jù)編碼成文件id交給客戶端保存,同時(shí)給大文件里的小文件創(chuàng)建索引,以達(dá)到提高讀取性能的目的。服務(wù)器端保存的元數(shù)據(jù)大小、類型都是固定地跟原始數(shù)據(jù)存放在大文件上。
上述存儲(chǔ)方式有這些缺陷:(1)不支持自定義元數(shù)據(jù),如果要支持新類型的元數(shù)據(jù),就必須更新小文件的組織方式或者更改文件id;(2)修改已有元數(shù)據(jù)時(shí),新的值大小有嚴(yán)格限制,否則會(huì)覆蓋其他有效數(shù)據(jù);(3)有些操作只需要讀取元數(shù)據(jù),仍然需要在大文件中定位到小文件的偏移量才能開始讀取,理想的情況是能在內(nèi)存緩存這些元數(shù)據(jù),在現(xiàn)有架構(gòu)下,如果要緩存這些元數(shù)據(jù),則需要從頭掃描整個(gè)大文件,效率較低。而導(dǎo)致這些的主要原因是,小文件以合并存儲(chǔ)的方式存放到磁盤上,小文件之間需要嚴(yán)格的邊界來區(qū)分,一旦寫入便不能再修改邊界,因此小文件在大文件中的格式有嚴(yán)格的限制,而無法任意修改、添加和刪除元數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種小文件存儲(chǔ)方法、小文件讀取方法及系統(tǒng),以解決現(xiàn)有技術(shù)中由于小文件以合并存儲(chǔ)的方式存放到磁盤上,小文件之間需要嚴(yán)格的邊界來區(qū)分,一旦寫入便不能在修改邊界,因此小文件在大文件中的格式有嚴(yán)格的限制,而無法任意修改、添加和刪除元數(shù)據(jù)的問題。
為達(dá)到上述目的,本發(fā)明提供了以下技術(shù)方案:
一種小文件存儲(chǔ)方法,包括:
在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;
將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在所述大文件中,所述小文件的數(shù)據(jù)內(nèi)容信息依次添加至所述大文件的末尾;
將所述待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在所述元數(shù)據(jù)庫中。
其中,所述元數(shù)據(jù)包括:所述小文件的文件名、所述小文件的大小、所述小文件的類型、所述小文件的校驗(yàn)值、所述小文件的時(shí)間戳、所述小文件在所述大文件中的偏移量以及自定義元數(shù)據(jù)。
其中,所述元數(shù)據(jù)庫為鍵值數(shù)據(jù)庫rocksdb。
優(yōu)選的,還包括:
將所述待存儲(chǔ)小文件的部分元數(shù)據(jù)冗余存儲(chǔ)在所述大文件中,所述待存儲(chǔ)小文件的部分元數(shù)據(jù)與所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息冗余存儲(chǔ)在一個(gè)大文件中,所述待存儲(chǔ)小文件的部分元數(shù)據(jù)包括:所述小文件在所述大文件中的偏移量、所述小文件的文件名及長(zhǎng)度、所述小文件的元數(shù)據(jù)所占空間大小、所述小文件的校驗(yàn)值以及所述小文件的數(shù)據(jù)內(nèi)容信息的起始位置。
一種小文件存儲(chǔ)系統(tǒng),包括:
預(yù)設(shè)單元,用于在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;
第一存儲(chǔ)單元,用于將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在所述大文件中,所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息依次添加至所述大文件的末尾;
第二存儲(chǔ)單元,用于將所述待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在所述元數(shù)據(jù)庫中。
其中,所述元數(shù)據(jù)包括:所述小文件的文件名、所述小文件的大小、所述小文件的類型、所述小文件的校驗(yàn)值、所述小文件的時(shí)間戳、所述大文件的路徑、所述小文件在所述大文件中的偏移量以及自定義元數(shù)據(jù)。
其中,所述元數(shù)據(jù)庫為鍵值數(shù)據(jù)庫rocksdb。
優(yōu)選的,所述第一存儲(chǔ)單元,還用于將所述待存儲(chǔ)小文件的部分元數(shù)據(jù)冗余存儲(chǔ)在所述大文件中,所述待存儲(chǔ)小文件的部分元數(shù)據(jù)與所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息冗余存儲(chǔ)在一個(gè)大文件中,所述待存儲(chǔ)小文件的部分元數(shù)據(jù)包括:所述小文件在所述大文件中的偏移量、所述小文件的文件名及長(zhǎng)度、所述小文件的元數(shù)據(jù)所占空間大小、所述小文件的校驗(yàn)值以及所述小文件的數(shù)據(jù)內(nèi)容信息的起始位置。
一種小文件讀取方法,包括:
獲取所述小文件的文件名;
根據(jù)所述小文件的文件名在存儲(chǔ)所述小文件的元數(shù)據(jù)的元數(shù)據(jù)庫中查找所述小文件的元數(shù)據(jù)信息,所述元數(shù)據(jù)信息包括:所述小文件的大小、所述小文件所在大文件中的路徑以及所述小文件在所述大文件中的偏移量;
根據(jù)所述小文件的元數(shù)據(jù)信息在存儲(chǔ)所述小文件的數(shù)據(jù)內(nèi)容信息的所述大文件中讀取所述小文件的數(shù)據(jù)內(nèi)容信息;
將所述小文件的元數(shù)據(jù)信息和所述小文件的數(shù)據(jù)內(nèi)容信息返回給用戶。
一種小文件讀取系統(tǒng),包括:
獲取單元,用于獲取所述小文件的文件名;
查找單元,用于根據(jù)所述小文件的文件名在存儲(chǔ)所述小文件的元數(shù)據(jù)的元數(shù)據(jù)庫中查找所述小文件的元數(shù)據(jù)信息,所述元數(shù)據(jù)信息包括:所述小文件的大小、所述小文件所在大文件中的路徑以及所述小文件在所述大文件中的偏移量;
讀取單元,用于根據(jù)所述小文件的元數(shù)據(jù)信息在存儲(chǔ)所述小文件的數(shù)據(jù)內(nèi)容信息的所述大文件中讀取所述小文件的數(shù)據(jù)內(nèi)容信息;
反饋單元,用于將所述小文件的元數(shù)據(jù)信息和所述小文件的數(shù)據(jù)內(nèi)容信息返回給用戶。
經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明公開了一種小文件存儲(chǔ)方法、小文件讀取方法及系統(tǒng),所述小文件存儲(chǔ)方法包括:在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息添加至大文件的末尾;將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中,元數(shù)據(jù)包括:小文件的名稱、大小、類型、校驗(yàn)值、時(shí)間戳、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。本發(fā)明通過在大文件的邏輯存儲(chǔ)單元中增加一個(gè)元數(shù)據(jù)庫,將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息和待存儲(chǔ)小文件的元數(shù)據(jù)進(jìn)行分開存儲(chǔ),實(shí)現(xiàn)了單獨(dú)可以對(duì)元數(shù)據(jù)的修改、添加和刪除;另外,在將元數(shù)據(jù)加載到內(nèi)存進(jìn)行緩存時(shí),不需要再掃描整個(gè)大文件。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種小文件存儲(chǔ)方法流程示意圖;
圖2為本發(fā)明實(shí)施例提供的多個(gè)大文件構(gòu)成的文件系統(tǒng)示意圖;
圖3為本發(fā)明實(shí)施例提供的存儲(chǔ)在元數(shù)據(jù)庫中的小文件的元數(shù)據(jù)列表;
圖4為本發(fā)明實(shí)施例提供的存儲(chǔ)在大文件中的小文件的部分元數(shù)據(jù)列表;
圖5為本發(fā)明實(shí)施例提供的一種小文件存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的一種小文件讀取方法流程示意圖;
圖7為本發(fā)明實(shí)施例提供的一種小文件讀取系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
對(duì)于海量小文件的合并存儲(chǔ),包括小文件的寫入和小文件的讀取。以下分別從小文件的寫入和小文件的讀取說明海量小文件的存儲(chǔ)方式。
請(qǐng)參閱附圖1,圖1為本發(fā)明實(shí)施例提供的一種海量小文件合并存儲(chǔ)方法流程示意圖。如圖1所示,本發(fā)明公開了一種海量小文件合并存儲(chǔ)方法,該方法具體包括如下步驟:
s101、在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;
請(qǐng)參閱附圖2,圖2為本發(fā)明實(shí)施例提供的多個(gè)大文件構(gòu)成的文件系統(tǒng)示意圖。如圖2所示,需要在每個(gè)包含posix大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫,即該元數(shù)據(jù)庫為鍵值數(shù)據(jù)庫rocksdb。
本發(fā)明的實(shí)現(xiàn)不受限于任何編程語言和平臺(tái),實(shí)踐中可以在linux平臺(tái)上采用go語言作為實(shí)現(xiàn)語言。
s102、將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息依次添加至大文件的末尾;
s103、將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中。
具體的,如圖3所示,元數(shù)據(jù)包括:小文件的文件名、小文件的大小、小文件的類型、小文件的校驗(yàn)值、小文件的時(shí)間戳、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。
其中,元數(shù)據(jù)庫為鍵值數(shù)據(jù)庫rocksdb。
同時(shí),還可以將待存儲(chǔ)小文件的部分元數(shù)據(jù)冗余存儲(chǔ)在大文件中,具體的,如圖4所示,將待存儲(chǔ)小文件的部分元數(shù)據(jù)與待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息冗余存儲(chǔ)在一個(gè)大文件中,待存儲(chǔ)小文件的部分元數(shù)據(jù)包括:小文件在大文件中的偏移量、小文件的文件名及長(zhǎng)度、小文件的元數(shù)據(jù)所占空間大小、小文件的校驗(yàn)值以及小文件的數(shù)據(jù)內(nèi)容信息的起始位置。
本發(fā)明公開了一種小文件存儲(chǔ)方法,所述方法包括:在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息添加至大文件的末尾;將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中,元數(shù)據(jù)包括:小文件的名稱、大小、類型、校驗(yàn)值、時(shí)間戳、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。本發(fā)明通過在大文件的邏輯存儲(chǔ)單元中增加一個(gè)元數(shù)據(jù)庫,將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息和待存儲(chǔ)小文件的元數(shù)據(jù)進(jìn)行分開存儲(chǔ),實(shí)現(xiàn)了單獨(dú)可以對(duì)元數(shù)據(jù)的修改、添加和刪除;另外,在將元數(shù)據(jù)加載到內(nèi)存進(jìn)行緩存時(shí),不需要再掃描整個(gè)大文件。
本發(fā)明在上述公開的方法的基礎(chǔ)上,還公開了對(duì)應(yīng)的系統(tǒng)。
下面對(duì)本發(fā)明實(shí)施例提供的小文件存儲(chǔ)系統(tǒng)進(jìn)行介紹,需要說明的是,有關(guān)該小文件存儲(chǔ)系統(tǒng)的說明可參照上文提供的小文件存儲(chǔ)方法,以下并不做贅述。
請(qǐng)參閱附圖5,圖5為本發(fā)明實(shí)施例提供的一種小文件存儲(chǔ)系統(tǒng)結(jié)構(gòu)示意圖。如圖5所示,本發(fā)明公開了一種小文件存儲(chǔ)系統(tǒng),該系統(tǒng)具體結(jié)構(gòu)包括如下:
預(yù)設(shè)單元501,用于在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;
第一存儲(chǔ)單元502,用于將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息依次添加至大文件的末尾;
第二存儲(chǔ)單元503,用于將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中。
其中,元數(shù)據(jù)包括:小文件的文件名、小文件的大小、小文件的類型、小文件的校驗(yàn)值、小文件的時(shí)間戳、大文件的路徑、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。
同時(shí),第一存儲(chǔ)單元502還可以將待存儲(chǔ)小文件的部分元數(shù)據(jù)冗余存儲(chǔ)在大文件中,待存儲(chǔ)小文件的部分元數(shù)據(jù)與待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在一個(gè)大文件中,待存儲(chǔ)小文件的部分元數(shù)據(jù)包括:小文件在大文件中的偏移量、小文件的文件名及長(zhǎng)度、小文件的元數(shù)據(jù)所占空間大小、小文件的校驗(yàn)值以及小文件的數(shù)據(jù)內(nèi)容信息的起始位置。
本發(fā)明公開了一種小文件存儲(chǔ)系統(tǒng),該系統(tǒng)通過在大文件的邏輯存儲(chǔ)單元中增加一個(gè)元數(shù)據(jù)庫,將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息和待存儲(chǔ)小文件的元數(shù)據(jù)進(jìn)行分開存儲(chǔ),實(shí)現(xiàn)了單獨(dú)可以對(duì)元數(shù)據(jù)的修改、添加和刪除;另外,在將元數(shù)據(jù)加載到內(nèi)存進(jìn)行緩存時(shí),不需要再掃描整個(gè)大文件。
本實(shí)施例提供了一種小文件存儲(chǔ)方法及系統(tǒng),主要是將寫入的小文件會(huì)被追加到大文件末尾,同時(shí)記住小文件的大小以及在大文件中的起始位置,即偏移量。其次,會(huì)將小文件的元數(shù)據(jù),例如寫入的時(shí)間戳、文件類型等,加上前面的偏移量一起寫入到元數(shù)據(jù)庫中。
綜上,本發(fā)明公開了一種小文件存儲(chǔ)方法及系統(tǒng),在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息添加至大文件的末尾;將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中,元數(shù)據(jù)包括:小文件的名稱、大小、類型、校驗(yàn)值、時(shí)間戳、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。本發(fā)明通過在大文件的邏輯存儲(chǔ)單元中增加一個(gè)元數(shù)據(jù)庫,將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息和待存儲(chǔ)小文件的元數(shù)據(jù)進(jìn)行分開存儲(chǔ),實(shí)現(xiàn)了單獨(dú)可以對(duì)元數(shù)據(jù)的修改、添加和刪除;另外,在將元數(shù)據(jù)加載到內(nèi)存進(jìn)行緩存時(shí),不需要再掃描整個(gè)大文件。
本發(fā)明在上述公開的一種小文件存儲(chǔ)方法及系統(tǒng)的基礎(chǔ)上,還公開了一種小文件讀取方法及系統(tǒng)。
請(qǐng)參閱附圖6,圖6為本發(fā)明實(shí)施例提供的一種小文件讀取方法流程示意圖。如圖6所示,本發(fā)明公開了一種小文件讀取方法,該方法具體包括如下步驟:
s601、獲取小文件的文件名;
s602、根據(jù)小文件的文件名在存儲(chǔ)小文件的元數(shù)據(jù)的元數(shù)據(jù)庫中查找小文件的元數(shù)據(jù)信息,元數(shù)據(jù)信息包括:小文件的大小、小文件所在大文件中的路徑以及小文件在大文件中的偏移量;
s603、根據(jù)小文件的元數(shù)據(jù)信息在存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息的大文件中讀取小文件的數(shù)據(jù)內(nèi)容信息;
s604、將小文件的元數(shù)據(jù)信息和小文件的數(shù)據(jù)內(nèi)容信息返回給用戶。
本實(shí)施例提供了一種小文件讀取方法,主要根據(jù)小文件的名字到元數(shù)據(jù)庫中找到小文件的元數(shù)據(jù)信息,包括小文件的大小、所在大文件的路徑以及在大文件中的偏移量,然后根據(jù)這些信息就可以讀出小文件的內(nèi)容,最終將這部分?jǐn)?shù)據(jù)內(nèi)容信息和小文件的元數(shù)據(jù)信息一起返回給用戶。
請(qǐng)參閱附圖7,圖7為本發(fā)明實(shí)施例提供的一種小文件讀取系統(tǒng)結(jié)構(gòu)示意圖。如圖7所示,本發(fā)明公開了一種小文件讀取系統(tǒng),該系統(tǒng)具體結(jié)構(gòu)包括如下:
獲取單元701,用于獲取小文件的文件名;
查找單元702,用于根據(jù)小文件的文件名在存儲(chǔ)小文件的元數(shù)據(jù)的元數(shù)據(jù)庫中查找小文件的元數(shù)據(jù)信息,元數(shù)據(jù)信息包括:小文件的大小、小文件所在大文件中的路徑以及小文件在大文件中的偏移量;
讀取單元703,用于根據(jù)小文件的元數(shù)據(jù)信息在存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息的大文件中讀取小文件的數(shù)據(jù)內(nèi)容信息;
反饋單元704,用于將小文件的元數(shù)據(jù)信息和小文件的數(shù)據(jù)內(nèi)容信息返回給用戶。
本實(shí)施例提供了一種小文件讀取系統(tǒng),主要根據(jù)小文件的名字到元數(shù)據(jù)庫中找到小文件的元數(shù)據(jù)信息,包括小文件的大小、所在大文件的路徑以及在大文件中的偏移量,然后根據(jù)這些信息就可以讀出小文件的內(nèi)容,最終將這部分?jǐn)?shù)據(jù)內(nèi)容信息和小文件的元數(shù)據(jù)信息一起返回給用戶。
本發(fā)明所實(shí)現(xiàn)的功能需要大文件和元數(shù)據(jù)庫配合使用。在本方案中,每個(gè)大文件都會(huì)分配一個(gè)元數(shù)據(jù)庫。這個(gè)元數(shù)據(jù)庫是一個(gè)鍵值數(shù)據(jù)庫,簡(jiǎn)單來說就是根據(jù)名字就可以獲取到存取在數(shù)據(jù)庫中的內(nèi)容。在文件系統(tǒng)中,一個(gè)文件其實(shí)包含了兩部分的內(nèi)容,一部分是內(nèi)容數(shù)據(jù),例如一張照片的內(nèi)容。另外一種是元數(shù)據(jù),描述了文件的一些其他信息。以照片文件為例,例如照片拍攝的時(shí)間、地點(diǎn)等。在本方案中,小文件的內(nèi)容數(shù)據(jù)存放在大文件中,元數(shù)據(jù)存放在數(shù)據(jù)庫中。也就是說,數(shù)據(jù)庫只存放了小文件的元數(shù)據(jù)??偟膩碚f,就是大文件用來存放內(nèi)容數(shù)據(jù),數(shù)據(jù)庫用來存放小文件的元數(shù)據(jù)和索引信息。
合并存儲(chǔ)的主要用途是解決海量小文件的存儲(chǔ)需求,常見的小文件有圖片、文本等,具體的,可用于圖片和一些ugc小視頻、字幕文件等的存儲(chǔ)。
綜上所述,本發(fā)明公開了一種小文件存儲(chǔ)方法、小文件讀取方法及系統(tǒng),所述小文件存儲(chǔ)方法包括:在大文件的邏輯存儲(chǔ)單元中預(yù)設(shè)一個(gè)元數(shù)據(jù)庫;將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息存儲(chǔ)在大文件中,所述待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息添加至大文件的末尾;將待存儲(chǔ)小文件的元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)庫中,元數(shù)據(jù)包括:小文件的名稱、大小、類型、校驗(yàn)值、時(shí)間戳、小文件在大文件中的偏移量以及自定義元數(shù)據(jù)。本發(fā)明通過在大文件的邏輯存儲(chǔ)單元中增加一個(gè)元數(shù)據(jù)庫,將待存儲(chǔ)小文件的數(shù)據(jù)內(nèi)容信息和待存儲(chǔ)小文件的元數(shù)據(jù)進(jìn)行分開存儲(chǔ),實(shí)現(xiàn)了單獨(dú)可以對(duì)元數(shù)據(jù)的修改、添加和刪除;另外,在將元數(shù)據(jù)加載到內(nèi)存進(jìn)行緩存時(shí),不需要再掃描整個(gè)大文件。
需要說明的是,本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括上述要素的物品或者設(shè)備中還存在另外的相同要素。
對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。