文件的訪問方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種文件的訪問方法及裝置。
【背景技術(shù)】
[0002]在很多情況下,數(shù)據(jù)庫與文件系統(tǒng)是相對獨(dú)立的,兩者間的運(yùn)行也是只有“利用”關(guān)系,而無“結(jié)盟”關(guān)系,數(shù)據(jù)庫只是調(diào)用文件系統(tǒng)的讀寫功能,文件系統(tǒng)也不管接收的請求是否是數(shù)據(jù)庫的請求。文件系統(tǒng)提供它自己的接口,數(shù)據(jù)庫只能讓文件系統(tǒng)將所有數(shù)據(jù)取出,然后再一個個篩選,文件系統(tǒng)返回了很多無用的數(shù)據(jù),增大了開銷,并且文件系統(tǒng)對待接口的操作方式是:嘗試在內(nèi)存中讀取這個文件,如果文件還未加載到內(nèi)存,則導(dǎo)致缺頁中斷,然后真正調(diào)用1驅(qū)動獲取數(shù)據(jù)。
[0003]IBM公司做了一款產(chǎn)品:它將數(shù)據(jù)庫的業(yè)務(wù)放在文件系統(tǒng)中實現(xiàn)。即文件系統(tǒng)允許用戶按照條件輸入,但文件系統(tǒng)只能判斷該條件的邊界,實際運(yùn)行時還是需要調(diào)用文件系統(tǒng)接口來獲取數(shù)據(jù),即用戶通過文件描述符及偏移量,調(diào)用文件系統(tǒng)接口獲取數(shù)據(jù)。每次調(diào)用文件系統(tǒng)接口獲取數(shù)據(jù)時,都需要判斷內(nèi)存中是否加載該數(shù)據(jù),如果還未加載該數(shù)據(jù)則缺頁中斷,并調(diào)用1驅(qū)動獲取該數(shù)據(jù),而不會一次性將所有符合條件的數(shù)據(jù)都加載到內(nèi)存中。
[0004]本申請的發(fā)明人在長期的研發(fā)中發(fā)現(xiàn),上述方案均會由于一次查詢帶來多次的缺頁中斷以及磁盤的1開銷,導(dǎo)致文件系統(tǒng)的查詢性能較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明主要解決的技術(shù)問題是提供一種文件的訪問方法及裝置,能夠避免一次查詢帶來的多次缺頁中斷以及多次磁盤10。
[0006]第一方面,本發(fā)明提供一種文件的訪問方法,包括:文件系統(tǒng)接收來自應(yīng)用層的文件訪問請求;若所述文件訪問請求是根據(jù)查詢條件獲取所述文件的內(nèi)容,則獲取所述文件的元數(shù)據(jù),其中,所述文件的元數(shù)據(jù)中包含所述文件的索引信息,所述查詢條件是針對所述文件的索引信息選擇所述文件的內(nèi)容;根據(jù)所述文件的索引信息,確定符合所述查詢條件的所述文件的內(nèi)容;通過磁盤1控制器獲取所有符合查詢條件的所述文件的內(nèi)容,以便于所述應(yīng)用層訪問所述文件。
[0007]在第一方面的第一種可能的實現(xiàn)方式中,所述文件系統(tǒng)接收來自應(yīng)用層的文件訪問請求的步驟之前,包括:所述文件系統(tǒng)對所述文件按照預(yù)設(shè)要求進(jìn)行預(yù)處理,獲得所述文件的索引信息;將所述文件的索引信息保存在所述文件的元數(shù)據(jù)中。
[0008]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述索引信息至少包括規(guī)則類型和每個簇包含的范圍,其中,所述規(guī)則類型中規(guī)定了對所述文件進(jìn)行預(yù)處理的方式。
[0009]在第一方面的第三種可能的實現(xiàn)方式中,所述若所述文件訪問請求是根據(jù)查詢條件獲取所述文件的內(nèi)容,則獲取所述文件的元數(shù)據(jù)的步驟之前,包括:判斷所述文件訪問請求是否是根據(jù)查詢條件獲取所述文件的內(nèi)容;若所述文件訪問請求中至少包含文件描述符、與所述查詢條件相關(guān)的參數(shù)以及緩沖區(qū),則所述文件訪問請求是根據(jù)查詢條件獲取所述文件的內(nèi)容。
[0010]結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述緩沖區(qū)包括完全匹配緩沖區(qū)和半匹配緩沖區(qū)。
[0011]結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述通過磁盤1控制器獲取所有符合所述查詢條件的所述文件的內(nèi)容的步驟之后,包括:若所述獲取的所述文件的內(nèi)容完全匹配所述查詢條件,則將所述獲取的所述文件的內(nèi)容放入所述完全匹配緩沖區(qū),若所述獲取的所述文件的內(nèi)容部分匹配所述查詢條件,則將所述獲取的所述文件的內(nèi)容放入所述半匹配緩沖區(qū)。
[0012]第二方面,本發(fā)明提供一種文件的訪問裝置,所述裝置包括:接收模塊、第一獲取模塊、確定模塊以及第二獲取模塊;所述接收模塊用于接收來自應(yīng)用層的文件訪問請求;所述第一獲取模塊用于在所述接收模塊接收來自應(yīng)用層的文件訪問請求后,在所述文件訪問請求是根據(jù)查詢條件獲取所述文件的內(nèi)容時,獲取所述文件的元數(shù)據(jù),其中,所述文件的元數(shù)據(jù)中包含所述文件的索引信息,所述查詢條件是針對所述文件的索引信息選擇所述文件的內(nèi)容;所述確定模塊用于在所述第一獲取模塊獲取所述文件的元數(shù)據(jù)后,根據(jù)所述文件的索引信息,確定符合所述查詢條件的所述文件的內(nèi)容;所述第二獲取模塊用于在所述確定模塊確定符合所述查詢條件的所述文件的內(nèi)容后,通過磁盤1控制器獲取所有符合所述查詢條件的所述文件的內(nèi)容,以便于所述應(yīng)用層訪問所述文件。
[0013]在第二方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:獲得模塊和保存模塊;所述獲得模塊用于對所述文件按照預(yù)設(shè)要求進(jìn)行預(yù)處理,獲得所述文件的索引信息;所述保存模塊用于在所述獲得模塊獲得所述文件的索引信息后,將所述文件的索引信息保存在所述文件的元數(shù)據(jù)中。
[0014]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述索引信息至少包括規(guī)則類型和每個簇包含的范圍,其中,所述規(guī)則類型中規(guī)定了對所述文件進(jìn)行預(yù)處理的方式。
[0015]在第二方面的第三種可能的實現(xiàn)方式中,所述裝置還包括:判斷模塊;所述判斷模塊用于判斷所述文件訪問請求是否是根據(jù)查詢條件獲取所述文件的內(nèi)容,在所述文件訪問請求中至少包含文件描述符、與所述查詢條件相關(guān)的參數(shù)以及緩沖區(qū)時,判斷所述文件訪問請求是根據(jù)查詢條件獲取所述文件的內(nèi)容。
[0016]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述緩沖區(qū)包括完全匹配緩沖區(qū)和半匹配緩沖區(qū)。
[0017]結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述裝置還包括存放模塊;所述存放模塊用于在所述獲取的所述文件的內(nèi)容完全匹配所述查詢條件時,將所述獲取的所述文件的內(nèi)容放入所述完全匹配緩沖區(qū),在所述獲取的所述文件的內(nèi)容部分匹配所述查詢條件時,將所述獲取的所述文件的內(nèi)容放入所述半匹配緩沖區(qū)。
[0018]本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)的情況,本發(fā)明由于文件的元數(shù)據(jù)中保存有文件的索引信息,在接收到來自應(yīng)用層的包含針對索引信息的查詢條件的文件訪問請求時,根據(jù)文件的索引信息,即可通過磁盤1控制器獲取所有符合查詢條件的文件的內(nèi)容,因此,通過這種方式,能夠避免一次查詢帶來的多次缺頁中斷以及多次磁盤10,并且通過過濾部分?jǐn)?shù)據(jù)減少內(nèi)存使用。
【附圖說明】
[0019]圖1是本發(fā)明文件的訪問方法一實施方式的流程圖;
[0020]圖2是本發(fā)明文件的訪問方法另一實施方式的流程圖;
[0021]圖3是本發(fā)明文件的訪問方法又一實施方式的流程圖;
[0022]圖4是本發(fā)明文件的訪問方法一個具體實例的應(yīng)用示意圖;
[0023]圖5是本發(fā)明文件的訪問裝置一實施方式的結(jié)構(gòu)示意圖;
[0024]圖6是本發(fā)明文件的訪問裝置另一實施方式的結(jié)構(gòu)示意圖;
[0025]圖7是本發(fā)明文件的訪問裝置又一實施方式的結(jié)構(gòu)示意圖;
[0026]圖8是本發(fā)明文件的訪問裝置又一實施方式的結(jié)構(gòu)示意圖。
【具體實施方式】
[0027]下面結(jié)合附圖和實施方式對本發(fā)明進(jìn)行詳細(xì)說明。
[0028]參閱圖1,圖1是本發(fā)明文件的訪問方法一實施方式的流程圖,包括:
[0029]步驟SlOl:文件系統(tǒng)接收來自應(yīng)用層的文件訪問請求。
[0030]本發(fā)明文件的訪問系統(tǒng)包括三層:一個是應(yīng)用層,數(shù)據(jù)庫通常在應(yīng)用層;第二個是文件系統(tǒng)層,第三個是磁盤,即文件的存放位置。
[0031]文件系統(tǒng)是操作系統(tǒng)用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在磁盤上數(shù)據(jù)的組織方法。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲文件,當(dāng)用戶不再使用時撤銷文件等。
[0032]在一般情況下,文件系統(tǒng)對文件是不做任何處理的,數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,在本發(fā)明實施方式中,文件系統(tǒng)已經(jīng)按照預(yù)設(shè)要求對文件進(jìn)行了預(yù)處理,即將數(shù)據(jù)庫的部分功能加入文件系統(tǒng)中來。預(yù)設(shè)要求是預(yù)先設(shè)定的對文件進(jìn)行預(yù)處理(例如組織、排序、分類、整理等等)的要求,例如:按照某種條件對文件進(jìn)行排序,列數(shù)據(jù)庫文件記錄某個列的信息,可以按照某列進(jìn)行排序;或者按照哈希值對文件進(jìn)行處理;或者按照該文件的某個參數(shù)的范圍對該文件進(jìn)行處理等等。
[0033]步驟S102:若文件訪問請求是根據(jù)查詢條件獲取文件的內(nèi)容,則獲取文件的元數(shù)據(jù),其中,文件的元數(shù)據(jù)中包含文件的索引信息,查詢條件是針對文件的索引信息選擇文件的內(nèi)容。
[0034]元數(shù)據(jù)(Metadata)是描述其它數(shù)據(jù)的數(shù)據(jù)(data about other data),或者說是用于提供某種資源的有關(guān)信息的結(jié)構(gòu)數(shù)據(jù)(structured data)。
[0035]索引本身是數(shù)據(jù)庫中經(jīng)常需要使用的信息,是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。在本發(fā)明實施方式中,將索引信息引入到文件系統(tǒng)中,將對文件預(yù)處理后獲得的索引信息保存在該文件的元數(shù)據(jù)中。
[0036]在文件系統(tǒng)對文件按照預(yù)設(shè)要求進(jìn)行預(yù)處理后,獲得該文件的索引信息,將該文件的索引信息保存在該文件的元數(shù)據(jù)中。如果文件訪問請求是根據(jù)查詢條件獲取文件的內(nèi)容,那么獲取該文件的元數(shù)據(jù)。因為元數(shù)據(jù)中保存有已預(yù)處理的文件的索引信息,查詢條件是針對文件的索引信息選擇文件的內(nèi)容的,那么根據(jù)該索引信息,