本技術(shù)涉及存儲,尤其涉及一種數(shù)據(jù)訪問方法、裝置及系統(tǒng)。
背景技術(shù):
1、文件存儲是將數(shù)據(jù)以文件的形式存儲在文件存儲服務(wù)節(jié)點上,用戶可以通過文件存儲服務(wù)節(jié)點提供的文件接口訪問文件存儲服務(wù)節(jié)點上的數(shù)據(jù)。對象存儲是將數(shù)據(jù)以對象的形式存儲在對象存儲服務(wù)節(jié)點上,用戶通過對象存儲服務(wù)節(jié)點提供的對象接口訪問對象存儲服務(wù)節(jié)點上的數(shù)據(jù)。
2、當(dāng)前,為了兼容部分只能通過文件接口訪問數(shù)據(jù)的應(yīng)用(簡稱文件應(yīng)用),對象存儲服務(wù)節(jié)點提供了基于對象存儲的文件服務(wù),也就是說,文件應(yīng)用可以通過對象存儲服務(wù)節(jié)點提供的文件接口訪問對象存儲服務(wù)節(jié)點上的數(shù)據(jù)。然而,由于對象存儲服務(wù)節(jié)點是以文件全路徑來標(biāo)識一個文件,文件應(yīng)用的客戶端在訪問對象存儲服務(wù)節(jié)點存儲的文件的時候,也需要使用文件全路徑訪問,導(dǎo)致訪問效率較低。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種數(shù)據(jù)訪問方法、裝置及其他設(shè)備,通過文件識別碼分配器為對象存儲服務(wù)節(jié)點存儲的文件或目錄分配文件識別碼,該文件識別碼全局唯一,用于標(biāo)識文件或目錄。用戶使用文件識別碼訪問對象存儲服務(wù)節(jié)點存儲的文件或目錄,無需逐層解析文件全路徑,提升了用戶的訪問效率。
2、第一方面,提供了一種數(shù)據(jù)訪問方法,該方法應(yīng)用于對象存儲服務(wù)節(jié)點,對象存儲服務(wù)節(jié)點的存儲桶中存儲有至少一個對象,對象存儲服務(wù)節(jié)點包括分層命名空間,其中,分層命名空間用于將至少一個對象映射為目錄樹上的文件或目錄,該方法包括:接收文件創(chuàng)建請求,文件創(chuàng)建請求攜帶第一文件名和第一文件的父目錄的第一文件識別碼;獲取第一文件識別碼對應(yīng)的第一文件的父目錄的元數(shù)據(jù);根據(jù)第一文件的父目錄的元數(shù)據(jù),在父目錄下創(chuàng)建第一文件,并為第一文件分配第二文件識別碼,其中,第一文件為目錄樹上的文件或目錄;將第二文件識別碼與第一文件名的對應(yīng)關(guān)系記錄到文件索引表中。
3、在本實施例中,對象存儲服務(wù)節(jié)點增加文件識別碼分配器和文件索引表,在用戶創(chuàng)建文件或目錄的時候,對象存儲服務(wù)節(jié)點通過文件識別碼分配器為創(chuàng)建的文件或目錄生成全局唯一的文件識別碼,該文件識別碼是文件或目錄的基本屬性,一旦創(chuàng)建之后,不會發(fā)生變化。同時,在生成文件識別碼的同時,會在文件索引表中記錄文件識別碼到文件信息的對應(yīng)關(guān)系,通過文件索引表,用戶可以通過文件識別碼查詢文件或目錄的元數(shù)據(jù)信息。如此,用戶使用文件識別碼訪問對象存儲服務(wù)節(jié)點存儲的文件或目錄,無需逐層解析文件全路徑,提升了用戶的訪問效率。
4、結(jié)合第一方面,在第一方面的某些實現(xiàn)方式中,接收文件寫入請求,文件寫入請求攜帶待寫入的第一文件和第二文件識別碼;從文件索引表中獲取第二文件識別碼對應(yīng)的第一文件名,第一文件名用于指示第一文件的元數(shù)據(jù);獲取第一文件的元數(shù)據(jù),第一文件的元數(shù)據(jù)包括第一文件的數(shù)據(jù)布局;根據(jù)第一文件的數(shù)據(jù)布局,在第一存儲單元寫入第一文件;更新第一文件的元數(shù)據(jù)。
5、在本實現(xiàn)方式中,文件存儲客戶端使用文件識別碼在對象存儲服務(wù)節(jié)點寫入文件,對象存儲服務(wù)節(jié)點從文件索引表中獲取該文件識別碼對應(yīng)的元數(shù)據(jù)信息,進(jìn)而根據(jù)文件的數(shù)據(jù)布局寫入該文件,如此,無需逐層解析文件全路徑,提升了數(shù)據(jù)訪問效率。
6、結(jié)合第一方面,在第一方面的某些實現(xiàn)方式中,第一文件的元數(shù)據(jù)包括以下一項或多項:第一文件的文件大小、第一文件的創(chuàng)建時間、第一文件的訪問權(quán)限、第一文件的數(shù)據(jù)布局,其中,第一文件的數(shù)據(jù)布局包括存儲第一文件的第一存儲單元的標(biāo)識、第一文件在第一存儲單元的偏移量以及第一文件在第一存儲單元的長度。
7、結(jié)合第一方面,在第一方面的某些實現(xiàn)方式中,接收第一文件讀取請求,第一文件讀取請求攜帶第二文件識別碼;從文件索引表中獲取第二文件識別碼對應(yīng)的第一文件名;獲取第一文件的元數(shù)據(jù),第一文件的元數(shù)據(jù)包括第一文件的數(shù)據(jù)布局;根據(jù)第一文件的數(shù)據(jù)布局,從第一存儲單元讀取第一文件。
8、在本實現(xiàn)方式中,對象存儲服務(wù)節(jié)點寫入文件之后,用戶可以直接攜帶文件識別碼讀取數(shù)據(jù),根據(jù)該文件識別碼獲取該文件的元數(shù)據(jù)信息,并根據(jù)該文件的數(shù)據(jù)布局讀取該文件,無需逐層解析文件全路徑,提升了數(shù)據(jù)訪問效率。
9、結(jié)合第一方面,在第一方面的某些實現(xiàn)方式中,接收第二文件讀取請求,第二文件讀取請求攜帶第一文件的訪問路徑;通過分層命名空間,解析第一文件的訪問路徑,得到第一文件的第二文件識別碼;從文件索引表中獲取第二文件識別碼對應(yīng)的第一文件名;獲取第一文件的元數(shù)據(jù);根據(jù)第一文件的數(shù)據(jù)布局,從第一存儲單元讀取第一文件。
10、在本實現(xiàn)方式中,文件存儲客戶端使用文件全路徑訪問對象存儲服務(wù)節(jié)點讀取文件時,對象存儲服務(wù)節(jié)點能夠識別文件識別碼或者文件全路徑兩種訪問方式,并仍兼容文件全路徑的方式訪問文件,通過分層命名空間解析該文件全路徑,得到該文件的文件識別碼,進(jìn)而根據(jù)該文件識別碼讀取文件。
11、結(jié)合第一方面,在第一方面的某些實現(xiàn)方式中,接收第三文件讀取請求,第三文件讀取請求包括文件句柄;通過網(wǎng)關(guān)識別文件句柄中的第二文件識別碼;從文件索引表中獲取第二文件識別碼對應(yīng)的第一文件名;獲取第一文件的元數(shù)據(jù);根據(jù)第一文件的數(shù)據(jù)布局,從第一存儲單元讀取第一文件。
12、在本實現(xiàn)方式中,文件存儲客戶端基于文件協(xié)議從對象存儲服務(wù)節(jié)點讀取文件,能夠通過網(wǎng)關(guān)實現(xiàn)文件協(xié)議到對象存儲服務(wù)節(jié)點可以識別的對象協(xié)議的轉(zhuǎn)換,即使文件客戶端通過文件協(xié)議仍能基于文件識別碼訪問對象存儲服務(wù)節(jié)點存儲的文件,提升了數(shù)據(jù)訪問效率。此外,使用文件識別碼作為訪問標(biāo)識,更容易兼容文件協(xié)議。
13、第二方面,提供了一種數(shù)據(jù)訪問方法,該方法應(yīng)用于文件存儲客戶端,文件存儲客戶端通過文件接口訪問對象存儲服務(wù)節(jié)點,對象存儲服務(wù)節(jié)點的存儲桶中存儲有至少一個對象,對象存儲服務(wù)節(jié)點包括分層命名空間,分層命名空間用于將至少一個對象映射為目錄樹上的文件或目錄,該方法包括:接收應(yīng)用程序發(fā)送的針對第一文件的文件創(chuàng)建指令,第一文件為目錄樹上的文件或目錄;從映射關(guān)系表中獲取第一文件的父目錄的第一文件識別碼;向?qū)ο蟠鎯Ψ?wù)節(jié)點發(fā)送文件創(chuàng)建請求,文件創(chuàng)建請求攜帶第一文件名和第一文件識別碼;接收對象存儲服務(wù)節(jié)點分配的第二文件識別碼,并將第二文件識別碼與第一文件名的對應(yīng)關(guān)系記錄到映射關(guān)系表中。
14、在本實施例中,文件存儲客戶端構(gòu)建文件名和文件識別碼的映射關(guān)系表,在與對象存儲服務(wù)節(jié)點交互的時候,可以直接查詢文件存儲客戶端緩存的映射關(guān)系表中的文件識別碼,減少了對象存儲服務(wù)節(jié)點的訪問量和訪問壓力。同時,對于文件存儲客戶端,也減少了文件全路徑的逐層構(gòu)建緩存的過程,提升數(shù)據(jù)訪問效率。
15、結(jié)合第二方面,在第二方面的某些實現(xiàn)方式中,接收應(yīng)用程序發(fā)送的針對第一文件的文件寫入指令;從文件存儲客戶端的映射關(guān)系表中獲取第一文件對應(yīng)的第二文件識別碼;向?qū)ο蟠鎯Ψ?wù)節(jié)點發(fā)送文件寫入請求,文件寫入請求攜帶第二文件識別碼;接收文件寫入請求的處理結(jié)果。
16、結(jié)合第二方面,在第二方面的某些實現(xiàn)方式中,接收應(yīng)用程序發(fā)送的針對第一文件的第一文件讀取指令;從文件存儲客戶端的映射關(guān)系表中獲取第一文件對應(yīng)的第二文件識別碼;向?qū)ο蟠鎯Ψ?wù)節(jié)點發(fā)送第一文件讀取請求,第一文件讀取請求攜帶第二文件識別碼;接收第一文件讀取請求的處理結(jié)果。
17、第三方面,提供了一種數(shù)據(jù)訪問裝置,該裝置應(yīng)用于對象存儲服務(wù)節(jié)點,對象存儲服務(wù)節(jié)點的存儲桶中存儲有至少一個對象,對象存儲服務(wù)節(jié)點包括分層命名空間,分層命名空間用于將至少一個對象映射為目錄樹上的文件或目錄,該裝置包括:接收模塊,用于接收文件創(chuàng)建請求,文件創(chuàng)建請求攜帶第一文件名和第一文件的父目錄的第一文件識別碼;獲取模塊,用于獲取第一文件識別碼對應(yīng)的第一文件的父目錄的元數(shù)據(jù);處理模塊,用于根據(jù)第一文件的父目錄的元數(shù)據(jù),在父目錄下創(chuàng)建第一文件,并為第一文件分配第二文件識別碼,其中,第一文件為目錄樹上的文件或目錄;處理模塊,還用于將第二文件識別碼與第一文件名的對應(yīng)關(guān)系記錄到文件索引表中。
18、第四方面,提供了一種數(shù)據(jù)訪問裝置,該裝置應(yīng)用于文件存儲客戶端,文件存儲客戶端通過文件接口訪問對象存儲服務(wù)節(jié)點,對象存儲服務(wù)節(jié)點的存儲桶中存儲有至少一個對象,對象存儲服務(wù)節(jié)點包括分層命名空間,分層命名空間用于將至少一個對象映射為目錄樹上的文件或目錄,該裝置包括:接收模塊,用于接收應(yīng)用程序發(fā)送的針對第一文件的文件創(chuàng)建指令,第一文件為目錄樹上的文件或目錄;獲取模塊,用于從映射關(guān)系表中獲取第一文件的父目錄的第一文件識別碼;發(fā)送模塊,用于向?qū)ο蟠鎯Ψ?wù)節(jié)點發(fā)送文件創(chuàng)建請求,文件創(chuàng)建請求攜帶第一文件名和第一文件識別碼;接收模塊,還用于接收對象存儲服務(wù)節(jié)點分配的第二文件識別碼,并將第二文件識別碼與第一文件名的對應(yīng)關(guān)系記錄到映射關(guān)系表中。
19、關(guān)于第三方面和第四方面的技術(shù)原理和有益效果,可以參考前述第一方面和第二方面的相關(guān)描述,在此不再贅述。
20、第五方面,本技術(shù)提供了一種計算設(shè)備集群,包括至少一個計算設(shè)備,每個計算設(shè)備包括處理器和存儲器;至少一個計算設(shè)備的處理器用于執(zhí)行至少一個計算設(shè)備的存儲器中存儲的指令,以使得計算設(shè)備集群執(zhí)行上述第一方面或第一方面中的任意一種實現(xiàn)方式的方法。
21、第六方面,本技術(shù)提供了一種計算設(shè)備集群,包括至少一個計算設(shè)備,每個計算設(shè)備包括處理器和存儲器;至少一個計算設(shè)備的處理器用于執(zhí)行至少一個計算設(shè)備的存儲器中存儲的指令,以使得計算設(shè)備集群執(zhí)行上述第二方面或第二方面中的任意一種實現(xiàn)方式的方法。
22、第七方面,本技術(shù)提供了一種包含指令的計算機程序產(chǎn)品,當(dāng)指令被計算機設(shè)備集群運行時,使得計算機設(shè)備集群執(zhí)行上述第一方面或第一方面中的任意一種實現(xiàn)方式的方法。
23、第八方面,本技術(shù)提供了一種包含指令的計算機程序產(chǎn)品,當(dāng)指令被計算機設(shè)備集群運行時,使得計算機設(shè)備集群執(zhí)行上述第二方面或第二方面中的任意一種實現(xiàn)方式的方法。
24、第九方面,本技術(shù)提供了一種計算機可讀存儲介質(zhì),包括計算機程序指令,當(dāng)計算機程序指令由計算設(shè)備集群執(zhí)行時,計算設(shè)備集群執(zhí)行上述第一方面或第一方面中的任意一種實現(xiàn)方式的方法。
25、第十方面,本技術(shù)提供了一種計算機可讀存儲介質(zhì),包括計算機程序指令,當(dāng)計算機程序指令由計算設(shè)備集群執(zhí)行時,計算設(shè)備集群執(zhí)行上述第二方面或第二方面中的任意一種實現(xiàn)方式的方法。