專利名稱:一種海量小文件的存儲(chǔ)與檢索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種海量小文件的存儲(chǔ)與檢索方法。
背景技術(shù):
目前,海量小文件的存儲(chǔ)與檢索主要是通過特定的文件存儲(chǔ)目錄結(jié)構(gòu),直接將小文件存儲(chǔ)到磁盤上,并通過數(shù)據(jù)庫記錄文件的存儲(chǔ)路徑來實(shí)現(xiàn)。這種技術(shù)存在一個(gè)缺點(diǎn)就是在小文件數(shù)量特別多的情況下,文件存儲(chǔ)目錄眾多,而且結(jié)構(gòu)復(fù)雜,再加上海量文件拷貝速度慢,很難進(jìn)行文件的備份與恢復(fù)。要改善這個(gè)缺點(diǎn)的難題在于在小文件數(shù)量特別多的情況下,如何通過有效的文件存儲(chǔ)組織結(jié)構(gòu),既能保證存儲(chǔ)與檢索的效率,又能進(jìn)行海量文件的差異備份與恢復(fù)。
發(fā)明內(nèi)容
本發(fā)明提供一種海量小文件的存儲(chǔ)與檢索方法,通過有效的文件存儲(chǔ)組織結(jié)構(gòu)設(shè)計(jì),在保證存儲(chǔ)與檢索效率的前提下,又能進(jìn)行海量文件的差異備份與恢復(fù)。通過本發(fā)明一種海量小文件的存儲(chǔ)與檢索方法,用戶在備份文件的時(shí)候,可以根據(jù)需要,按天、小時(shí)、分鐘進(jìn)行差異備份,備份的時(shí)候,只需要拷貝相應(yīng)的文件夾到備份磁盤即可,由于合理的文件存儲(chǔ)組織結(jié)構(gòu)設(shè)計(jì),再加上進(jìn)行了必要的文件合并,就算按天進(jìn)行備份,需要備份的文件數(shù)量最多也就是M*60=1440個(gè),有效地解決了海量小文件拷貝速度慢的問題。在進(jìn)行文件恢復(fù)的時(shí)候,也只需要根據(jù)備份文件夾(或文件)名,將備份文件夾 (或文件),拷貝到相應(yīng)的文件夾內(nèi)即可,整個(gè)備份與恢復(fù)過程簡單、便捷,實(shí)現(xiàn)了海量小文件在能夠進(jìn)行快速存儲(chǔ)與檢索的同時(shí),又可以簡便的進(jìn)行備份與數(shù)據(jù)恢復(fù)的目的。
圖1為本發(fā)明的系統(tǒng)邏輯圖。以下結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步詳述。
具體實(shí)施例方式如圖1所示,本發(fā)明主要包括數(shù)據(jù)庫1、文件存儲(chǔ)模塊2和文件檢索模塊3, 其中,數(shù)據(jù)庫1具備數(shù)據(jù)存儲(chǔ)、檢索功能,負(fù)責(zé)保存各小文件的數(shù)據(jù)大小、存儲(chǔ)路徑、存
儲(chǔ)位置等信息;
文件存儲(chǔ)模塊2與數(shù)據(jù)庫1連接,具備文件存儲(chǔ)位置計(jì)算與文件保存的功能,負(fù)責(zé)文件存儲(chǔ)組織結(jié)構(gòu)管理與小文件數(shù)據(jù)存儲(chǔ),還負(fù)責(zé)在數(shù)據(jù)庫1中登記文件位置信息;
文件檢索模塊3與數(shù)據(jù)庫1連接,具備文件數(shù)據(jù)讀取與創(chuàng)建臨時(shí)文件的功能,負(fù)責(zé)從數(shù)據(jù)庫1讀取文件存儲(chǔ)位置信息,并依照該文件存儲(chǔ)位置信息來讀取文件數(shù)據(jù),創(chuàng)建成相應(yīng)的臨時(shí)小文件,供用戶訪問。其中,數(shù)據(jù)庫表稱為文件存儲(chǔ)信息表,用于保存小文件的存儲(chǔ)信息,字段包括文件ID、存儲(chǔ)路徑、數(shù)據(jù)存儲(chǔ)開始位置和數(shù)據(jù)大小,該文件ID由系統(tǒng)自動(dòng)生成,從1開始自增。
本發(fā)明一種海量小文件的存儲(chǔ)和檢索方法,具體步驟如下 1、存儲(chǔ)步驟
步驟1、用戶在文件存儲(chǔ)模塊2提供的界面上設(shè)置文件存儲(chǔ)路徑,記為“文件保存路
徑”;
步驟2、當(dāng)文件存儲(chǔ)模塊2收到來自某外層應(yīng)用的一個(gè)小文件存儲(chǔ)請求時(shí),獲取該小文件的大小,記為“當(dāng)前文件數(shù)據(jù)大小”;
同時(shí),文件存儲(chǔ)模塊2獲取當(dāng)前日期,該當(dāng)前日期包括年、月、日,并判斷“文件保存路徑”內(nèi)是否存在以當(dāng)前日期為名創(chuàng)建的文件夾,若不存在則創(chuàng)建文件夾,記為“當(dāng)前日期文件保存文件夾”,并打開該文件夾;若存在,則直接打開該文件夾;
文件存儲(chǔ)模塊2進(jìn)而獲取當(dāng)前時(shí)刻,該當(dāng)前時(shí)刻以M小時(shí)制表示,包括年、月、日、時(shí), 并判斷“當(dāng)前日期文件保存文件夾”內(nèi)是否存在以當(dāng)前時(shí)刻為名創(chuàng)建的文件夾,若不存在則創(chuàng)建文件夾,記為“當(dāng)前時(shí)刻文件保存文件夾”,并打開該文件夾;若存在,則直接打開該文件夾;
文件存儲(chǔ)模塊2進(jìn)一步獲取當(dāng)前分鐘,當(dāng)前分鐘以M小時(shí)制表示,包括年、月、日、時(shí)、 分,并判斷“當(dāng)前時(shí)刻文件保存文件夾”內(nèi)是否存在以當(dāng)前分鐘為名創(chuàng)建的文件,若不存在則創(chuàng)建文件,記為“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”,文件存儲(chǔ)模塊2獲取“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”的最后存儲(chǔ)位置,記為“當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置”;
這樣,文件存儲(chǔ)模塊2將該發(fā)出存儲(chǔ)請求的小文件數(shù)據(jù)寫入到當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置,與“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”合并,更新“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”,并保存在磁盤上;
步驟3、文件存儲(chǔ)模塊2將“當(dāng)前日期文件保存文件夾”名、“當(dāng)前時(shí)刻文件保存文件夾” 名和“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”名,組合成“當(dāng)前文件存儲(chǔ)路徑”;
步驟4、文件存儲(chǔ)模塊2將獲得的“當(dāng)前文件存儲(chǔ)路徑”、“當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置” 和“當(dāng)前文件數(shù)據(jù)大小”保存到數(shù)據(jù)庫1的文件存儲(chǔ)信息表中相應(yīng)的“存儲(chǔ)路徑”、“數(shù)據(jù)存儲(chǔ)開始位置”和“數(shù)據(jù)大小”字段中,存儲(chǔ)完成后,數(shù)據(jù)庫1自動(dòng)生成文件ID ;
步驟5、文件存儲(chǔ)模塊2獲取數(shù)據(jù)庫1返回的文件ID,并提交給上述發(fā)起小文件存儲(chǔ)請求的外層應(yīng)用,供該外層應(yīng)用后續(xù)檢索; 2、檢索步驟
步驟1、用戶在文件檢索模塊3提供的界面上設(shè)置臨時(shí)文件路徑,記為“臨時(shí)文件路
徑”;
步驟2、文件檢索模塊3收到來自某外層應(yīng)用的一個(gè)小文件檢索請求,請求內(nèi)容主要是文件ID,記為“待檢索文件ID”;
步驟3、該文件檢索模塊3判斷“臨時(shí)文件路徑”內(nèi)的文件數(shù)量是否超過100個(gè),如果是,則刪除“臨時(shí)文件路徑”內(nèi)的所有文件,保障“臨時(shí)文件路徑”的訪問速度;若“臨時(shí)文件路徑”內(nèi)的文件數(shù)量未超過100個(gè),則文件檢索模塊3判斷“臨時(shí)文件路徑”內(nèi)是否存在以 “待檢索文件ID”命名的文件,如果存在,則刪除該文件;
步驟4、文件檢索模塊3從數(shù)據(jù)庫1的文件存儲(chǔ)信息表中,讀取文件ID等于“待檢索文件ID”的文件存儲(chǔ)記錄;該文件檢索模塊3根據(jù)獲取的文件存儲(chǔ)記錄中的“存儲(chǔ)路徑”字段, 訪問存儲(chǔ)步驟中步驟1所設(shè)置的“文件保存路徑”中的相應(yīng)數(shù)據(jù)存儲(chǔ)文件,并根據(jù)“數(shù)據(jù)存儲(chǔ)開始位置”和“數(shù)據(jù)大小”字段,從數(shù)據(jù)存儲(chǔ)文件中讀取相應(yīng)的小文件數(shù)據(jù);
步驟5、文件檢索模塊3將上述讀取的小文件數(shù)據(jù),在“臨時(shí)文件路徑”中,創(chuàng)建以“待檢索文件ID”命名的臨時(shí)小文件,記為“當(dāng)前臨時(shí)小文件”;
步驟6、文件檢索模塊3將“臨時(shí)文件路徑”名和“當(dāng)前臨時(shí)小文件”名組合成“當(dāng)前文件臨時(shí)訪問路徑”,并提交給發(fā)起小文件檢索請求的外層應(yīng)用,供該外層應(yīng)用訪問所請求的小文件。通過本發(fā)明一種海量小文件的存儲(chǔ)與檢索方法,用戶在備份文件的時(shí)候,可以根據(jù)需要,按天、小時(shí)、分鐘進(jìn)行差異備份,備份的時(shí)候,只需要拷貝相應(yīng)的文件夾到備份磁盤即可,由于合理的文件存儲(chǔ)組織結(jié)構(gòu)設(shè)計(jì),再加上進(jìn)行了必要的文件合并,就算按天進(jìn)行備份,需要備份的文件數(shù)量最多也就是M*60=1440個(gè),有效地解決了海量小文件拷貝速度慢的問題。在進(jìn)行文件恢復(fù)的時(shí)候,也只需要根據(jù)備份文件夾(或文件)名,將備份文件夾 (或文件),拷貝到相應(yīng)的文件夾內(nèi)即可,整個(gè)備份與恢復(fù)過程簡單、便捷,實(shí)現(xiàn)了海量小文件在能夠進(jìn)行快速存儲(chǔ)與檢索的同時(shí),又可以簡便的進(jìn)行備份與數(shù)據(jù)恢復(fù)的目的。以上所述,僅是本發(fā)明較佳實(shí)施例而已,并非對本發(fā)明的技術(shù)范圍作任何限制,故凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何細(xì)微修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
權(quán)利要求
1. 一種海量小文件的存儲(chǔ)與檢索的方法,其特征在于主要包括數(shù)據(jù)庫、文件存儲(chǔ)模塊和文件檢索模塊,其中,數(shù)據(jù)庫中的文件存儲(chǔ)信息表,用于保存小文件的存儲(chǔ)信息,字段包括文件ID、存儲(chǔ)路徑、數(shù)據(jù)存儲(chǔ)開始位置和數(shù)據(jù)大小,該文件ID由系統(tǒng)自動(dòng)生成,從1開始自增;具體步驟包括 1、存儲(chǔ)步驟步驟1、用戶在文件存儲(chǔ)模塊提供的界面上設(shè)置文件存儲(chǔ)路徑,記為“文件保存路徑”; 步驟2、當(dāng)文件存儲(chǔ)模塊收到來自某外層應(yīng)用的一個(gè)小文件存儲(chǔ)請求時(shí),先獲取該小文件的大小,記為“當(dāng)前文件數(shù)據(jù)大小”;同時(shí),文件存儲(chǔ)模塊獲取當(dāng)前日期,包括年、月、日,并判斷“文件保存路徑”內(nèi)是否存在以當(dāng)前日期為名創(chuàng)建的文件夾,若不存在則創(chuàng)建文件夾,記為“當(dāng)前日期文件保存文件夾” 并打開該文件夾;若存在,則直接打開該文件夾;文件存儲(chǔ)模塊進(jìn)而獲取當(dāng)前時(shí)刻,包括年、月、日、時(shí),并判斷“當(dāng)前日期文件保存文件夾”內(nèi)是否存在以當(dāng)前時(shí)刻為名創(chuàng)建的文件夾,若不存在則創(chuàng)建文件夾,記為“當(dāng)前時(shí)刻文件保存文件夾”,并打開該文件夾;若存在,則直接打開該文件夾;文件存儲(chǔ)模塊進(jìn)一步獲取當(dāng)前分鐘,包括年、月、日、時(shí)、分,并判斷“當(dāng)前時(shí)刻文件保存文件夾”內(nèi)是否存在以當(dāng)前分鐘為名創(chuàng)建的文件,若不存在則創(chuàng)建文件,記為“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”,文件存儲(chǔ)模塊獲取“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”的最后存儲(chǔ)位置,記為“當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置”;文件存儲(chǔ)模塊將該發(fā)出存儲(chǔ)請求的小文件數(shù)據(jù)寫入到當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置,與 “當(dāng)前數(shù)據(jù)存儲(chǔ)文件”合并,更新“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”,并保存在磁盤上;步驟3、文件存儲(chǔ)模塊將“當(dāng)前日期文件保存文件夾”名、“當(dāng)前時(shí)刻文件保存文件夾” 名和“當(dāng)前數(shù)據(jù)存儲(chǔ)文件”名,組合成“當(dāng)前文件存儲(chǔ)路徑”;步驟4、文件存儲(chǔ)模塊將獲得的“當(dāng)前文件存儲(chǔ)路徑”、“當(dāng)前文件數(shù)據(jù)存儲(chǔ)開始位置”和 “當(dāng)前文件數(shù)據(jù)大小”保存到數(shù)據(jù)庫的文件存儲(chǔ)信息表中相應(yīng)的“存儲(chǔ)路徑”、“數(shù)據(jù)存儲(chǔ)開始位置”和“數(shù)據(jù)大小”字段中,存儲(chǔ)完成后,數(shù)據(jù)庫自動(dòng)生成文件ID ;步驟5、文件存儲(chǔ)模塊獲取數(shù)據(jù)庫返回的文件ID,并提交給上述發(fā)起小文件存儲(chǔ)請求的外層應(yīng)用,供該外層應(yīng)用后續(xù)檢索; 2、檢索步驟步驟1、用戶在文件檢索模塊提供的界面上設(shè)置臨時(shí)文件路徑,記為“臨時(shí)文件路徑”; 步驟2、文件檢索模塊收到來自某外層應(yīng)用的一個(gè)小文件檢索請求,請求內(nèi)容主要是文件ID,記為“待檢索文件ID”;步驟3、該文件檢索模塊判斷“臨時(shí)文件路徑”內(nèi)的文件數(shù)量是否超過閾值,如果是,則刪除“臨時(shí)文件路徑”內(nèi)的所有文件;若“臨時(shí)文件路徑”內(nèi)的文件數(shù)量未超過閾值,則文件檢索模塊進(jìn)一步判斷“臨時(shí)文件路徑”內(nèi)是否存在以“待檢索文件ID”命名的文件,如果存在,則刪除該文件;步驟4、文件檢索模塊從數(shù)據(jù)庫的文件存儲(chǔ)信息表中,讀取文件ID等于“待檢索文件 ID”的文件存儲(chǔ)記錄;該文件檢索模塊根據(jù)獲取的文件存儲(chǔ)記錄中的“存儲(chǔ)路徑”字段,訪問存儲(chǔ)步驟中步驟1所設(shè)置的“文件保存路徑”中的相應(yīng)數(shù)據(jù)存儲(chǔ)文件,并根據(jù)“數(shù)據(jù)存儲(chǔ)開始位置”和“數(shù)據(jù)大小”字段,從數(shù)據(jù)存儲(chǔ)文件中讀取相應(yīng)的小文件數(shù)據(jù);步驟5、文件檢索模塊將上述讀取的小文件數(shù)據(jù),在“臨時(shí)文件路徑”中,創(chuàng)建以“待檢索文件ID”命名的臨時(shí)小文件,記為“當(dāng)前臨時(shí)小文件”;步驟6、文件檢索模塊將“臨時(shí)文件路徑”名和“當(dāng)前臨時(shí)小文件”名組合成“當(dāng)前文件臨時(shí)訪問路徑”,并提交給發(fā)起小文件檢索請求的外層應(yīng)用,供該外層應(yīng)用訪問。
全文摘要
本發(fā)明一種海量小文件的存儲(chǔ)與檢索方法,用戶在備份文件的時(shí)候,可以根據(jù)需要,按天、小時(shí)、分鐘進(jìn)行差異備份,備份的時(shí)候,只需要拷貝相應(yīng)的文件夾到備份磁盤即可,由于合理的文件存儲(chǔ)組織結(jié)構(gòu)設(shè)計(jì),再加上進(jìn)行了必要的文件合并,就算按天進(jìn)行備份,需要備份的文件數(shù)量最多也就是24*60=1440個(gè),有效地解決了海量小文件拷貝速度慢的問題,在進(jìn)行文件恢復(fù)的時(shí)候,也只需要根據(jù)備份文件夾或文件名,將備份文件夾或文件,拷貝到相應(yīng)的文件夾內(nèi)即可,整個(gè)備份與恢復(fù)過程簡單、便捷,實(shí)現(xiàn)了海量小文件在能夠進(jìn)行快速存儲(chǔ)與檢索的同時(shí),又可以簡便的進(jìn)行備份與數(shù)據(jù)恢復(fù)的目的。
文檔編號G06F17/30GK102419775SQ20111043501
公開日2012年4月18日 申請日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者余建成, 張皓, 曲建云, 韓震華 申請人:廈門雅迅網(wǎng)絡(luò)股份有限公司