本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種文件存儲(chǔ)方法及裝置。
背景技術(shù):
:目前,在存儲(chǔ)文件時(shí),需要在存儲(chǔ)終端中存儲(chǔ)該文件的元數(shù)據(jù),以便有數(shù)據(jù)訪問需求時(shí),存儲(chǔ)終端根據(jù)元數(shù)據(jù)獲得該文件。一旦元數(shù)據(jù)丟失,即使讀取到數(shù)據(jù),也不能區(qū)分出讀取到的數(shù)據(jù)是屬于哪些文件的,從而造成文件的損失。為了避免文件的損失,常采用以下兩種方法來存儲(chǔ)文件:第一種,備份元數(shù)據(jù)。在存儲(chǔ)文件時(shí),將該文件的元數(shù)據(jù)存儲(chǔ)至元數(shù)據(jù)庫中之后,再將該文件的元數(shù)據(jù)存儲(chǔ)至備份元數(shù)據(jù)庫中,當(dāng)元數(shù)據(jù)庫中的元數(shù)據(jù)丟失后,由備份元數(shù)據(jù)庫中的元數(shù)據(jù)來恢復(fù)元數(shù)據(jù)庫中丟失的元數(shù)據(jù),從而避免了文件的損失。但是,這樣雖然增強(qiáng)了元數(shù)據(jù)的安全性,能夠保證元數(shù)據(jù)庫中元數(shù)據(jù)的恢復(fù),但是需要增加額外的存儲(chǔ)空間去存儲(chǔ)備份元數(shù)據(jù)庫中的元數(shù)據(jù),并且為了能夠更為安全的恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),通常會(huì)在存儲(chǔ)終端上建立多個(gè)備份元數(shù)據(jù)庫,這樣占用的存儲(chǔ)終端的存儲(chǔ)空間更多;第二種,利用日志記錄對(duì)元數(shù)據(jù)的操作。利用日志記錄對(duì)元數(shù)據(jù)庫中元數(shù)據(jù)的操作,如:何時(shí)存儲(chǔ)了哪些元數(shù)據(jù)、何時(shí)刪除了哪些元數(shù)據(jù)、何時(shí)更新了哪些元數(shù)據(jù),這樣就可以在元數(shù)據(jù)庫中的元數(shù)據(jù)丟失后,利用日志中記錄的對(duì)元數(shù)據(jù)的操作恢復(fù)元數(shù)據(jù)庫中丟失的元數(shù)據(jù),從而避免了文件的損失。但是,這樣需要增加額外的存儲(chǔ)空間去存儲(chǔ)日志,占用過多的存儲(chǔ)服務(wù)器的存儲(chǔ)空間。由以上可知,現(xiàn)有技術(shù)為了避免文件的損失,保證丟失的元數(shù)據(jù)能夠恢復(fù),都需要占用額外的存儲(chǔ)空間,降低了存儲(chǔ)終端對(duì)存儲(chǔ)空間的有效利用率。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例公開了一種文件存儲(chǔ)方法及裝置,以保證元數(shù)據(jù)的恢復(fù),同時(shí)節(jié)約存儲(chǔ)終端的存儲(chǔ)空間。為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種文件存儲(chǔ)方法,應(yīng)用于存儲(chǔ)終 端,所述方法包括:接收針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求;確定用于存儲(chǔ)所述待存儲(chǔ)文件的目標(biāo)鍵;根據(jù)所確定的目標(biāo)鍵,獲得所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù);將所述待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至預(yù)設(shè)的元數(shù)據(jù)庫以及所確定的目標(biāo)鍵的名字中,并將所述待存儲(chǔ)文件存儲(chǔ)至所確定的目標(biāo)鍵的值中。在本發(fā)明的一種實(shí)現(xiàn)方式中,在所確定的目標(biāo)鍵為多個(gè)鍵的情況下,在所述根據(jù)所確定的目標(biāo)鍵,獲得所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)之前,還包括:根據(jù)所確定的目標(biāo)鍵的數(shù)量,獲得每一目標(biāo)鍵要存儲(chǔ)的所述待存儲(chǔ)文件的文件塊;所述根據(jù)所確定的目標(biāo)鍵,獲得所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù),包括:獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),并將所獲得的元數(shù)據(jù)確定為所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),包括:確定每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于所述待存儲(chǔ)文件的文件頭的偏移量;根據(jù)每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于所述待存儲(chǔ)文件的文件頭的偏移量,獲得該目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述方法還包括:在所述預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新所述預(yù)設(shè)的元數(shù)據(jù)庫。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述待存儲(chǔ)元數(shù)據(jù)包含所述待存儲(chǔ)文件的標(biāo)識(shí);所述根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新所述預(yù)設(shè)的元數(shù)據(jù)庫,包括:獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí);根據(jù)所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵;根據(jù)所確定的鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新所述預(yù)設(shè)的元數(shù)據(jù)庫。為達(dá)到上述目的,本發(fā)明實(shí)施例還公開了一種文件存儲(chǔ)裝置,應(yīng)用于存儲(chǔ)終端,所述裝置包括:存儲(chǔ)請(qǐng)求接收模塊、目標(biāo)鍵確定模塊、元數(shù)據(jù)獲得模塊和數(shù)據(jù)存儲(chǔ)模塊;其中,所述存儲(chǔ)請(qǐng)求接收模塊,用于接收針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求;所述目標(biāo)鍵確定模塊,用于確定用于存儲(chǔ)所述待存儲(chǔ)文件的目標(biāo)鍵;所述元數(shù)據(jù)獲得模塊,用于根據(jù)所確定的目標(biāo)鍵,獲得所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù);所述數(shù)據(jù)存儲(chǔ)模塊,用于將所述待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至預(yù)設(shè)的元數(shù)據(jù)庫以及所確定的目標(biāo)鍵的名字中,并將所述待存儲(chǔ)文件存儲(chǔ)至所確定的目標(biāo)鍵的值中。在本發(fā)明的一種實(shí)現(xiàn)方式中,在所確定的目標(biāo)鍵為多個(gè)鍵的情況下,所述裝置還包括:文件塊獲得模塊,用于:根據(jù)所確定的目標(biāo)鍵的數(shù)量,獲得每一目標(biāo)鍵要存儲(chǔ)的所述待存儲(chǔ)文件的文件塊所述元數(shù)據(jù)獲得模塊,具體用于:獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),并將所獲得的元數(shù)據(jù)確定為所述待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述元數(shù)據(jù)獲得模塊,包括:偏移量確定子模塊和元數(shù)據(jù)獲得子模塊;所述偏移量確定子模塊,用于確定每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于所述待存儲(chǔ)文件的文件頭的偏移量;所述元數(shù)據(jù)獲得子模塊,用于根據(jù)每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于所述待存儲(chǔ)文件的文件頭的偏移量,獲得該目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述裝置還包括:元數(shù)據(jù)庫更新模塊;其中,所述元數(shù)據(jù)庫更新模塊,用于在所述預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新所述預(yù)設(shè)的元數(shù)據(jù)庫。在本發(fā)明的一種實(shí)現(xiàn)方式中,所述待存儲(chǔ)元數(shù)據(jù)包含所述待存儲(chǔ)文件的標(biāo)識(shí);所述元數(shù)據(jù)庫更新模塊,包括:標(biāo)識(shí)獲得子模塊、鍵確定子模塊和數(shù)據(jù)庫更新子模塊;其中,所述標(biāo)識(shí)獲得子模塊,用于獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí);所述鍵確定子模塊,用于根據(jù)所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵;所述數(shù)據(jù)庫更新子模塊,用于根據(jù)所獲得的鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新所述預(yù)設(shè)的元數(shù)據(jù)庫。由上可知,在本發(fā)明實(shí)施例中,存儲(chǔ)終端在接收到針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求后,獲得該待存儲(chǔ)文件待存儲(chǔ)元數(shù)據(jù),在將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至元數(shù)據(jù)庫中同時(shí),將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)在目標(biāo)鍵的名字中,并將待存儲(chǔ)文件存儲(chǔ)至目標(biāo)鍵的值中。這樣,在元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,就可以根據(jù)鍵的名字中存儲(chǔ)的元數(shù)據(jù)來恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),保證了元數(shù)據(jù)的恢復(fù),并且將元數(shù)據(jù)存儲(chǔ)在鍵的名字原本就占用的固定存儲(chǔ)空間中,不會(huì)占用額外的存儲(chǔ)空間,進(jìn)而節(jié)約了存儲(chǔ)終端的存儲(chǔ)空間。附圖說明為了更清楚地說明本發(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í)施例提供的另一種文件存儲(chǔ)方法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)方法的流程示意圖;圖4為本發(fā)明實(shí)施例提供的一種文件存儲(chǔ)裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)裝置的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)裝置的結(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ù)的范圍。下面通過具體實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說明。參考圖1,圖1為本發(fā)明實(shí)施例提供的一種文件存儲(chǔ)方法的流程示意圖,應(yīng)用于存儲(chǔ)終端,該方法可以包括如下步驟:s101:接收針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求;這里,存儲(chǔ)請(qǐng)求中包含待存儲(chǔ)文件,還可以包含該待存儲(chǔ)文件的標(biāo)識(shí),以便于存儲(chǔ)終端快速獲得該待存儲(chǔ)文件的標(biāo)識(shí),進(jìn)而存儲(chǔ)該待存儲(chǔ)文件的元數(shù)據(jù);或者,存儲(chǔ)請(qǐng)求也可以不包含該待存儲(chǔ)文件的標(biāo)識(shí),存儲(chǔ)終端可以解析待存儲(chǔ)文件以獲得該待存儲(chǔ)文件的標(biāo)識(shí),這樣存儲(chǔ)請(qǐng)求更為簡(jiǎn)單明了。s102:確定用于存儲(chǔ)待存儲(chǔ)文件的目標(biāo)鍵;在本發(fā)明的一種實(shí)施方式中,具備高可靠性及可擴(kuò)展性的海量數(shù)據(jù)存儲(chǔ)對(duì)互聯(lián)網(wǎng)公司來說是一個(gè)巨大的挑戰(zhàn),傳統(tǒng)的數(shù)據(jù)庫往往很難滿足該需求,在這種情況下使用關(guān)系型數(shù)據(jù)庫將使得存儲(chǔ)和讀取數(shù)據(jù)的效率低下,并且擴(kuò)展數(shù)據(jù)庫也將成為很大的難題。在這樣的情況下,使用鍵存儲(chǔ)將會(huì)是一個(gè)很好的選擇。鍵存儲(chǔ)具有以下優(yōu)點(diǎn):1、availability可用性;2、scalability可擴(kuò)展性;3、failover故障恢復(fù);4、performance高性能。鍵由名字key和值value組成,并且key和value占用的存儲(chǔ)空間均是是固定 的。具體地,每個(gè)鍵的值能夠存儲(chǔ)的數(shù)據(jù)量d1是固定的,但是需要存儲(chǔ)的文件的數(shù)據(jù)量d2是不固定的,當(dāng)待存儲(chǔ)文件的數(shù)據(jù)量d2大于鍵的值能夠存儲(chǔ)的數(shù)據(jù)量d1時(shí),就需要2個(gè)、3個(gè)或更多個(gè)目標(biāo)鍵來存儲(chǔ)該待存儲(chǔ)文件。在本發(fā)明的一種實(shí)施方式中,可以根據(jù)待存儲(chǔ)文件的數(shù)據(jù)量和鍵的值能夠存儲(chǔ)的數(shù)據(jù)量,計(jì)算得到所需的目標(biāo)鍵的數(shù)量。具體的,由待存儲(chǔ)文件的數(shù)據(jù)量d2除以每個(gè)鍵的值能夠存儲(chǔ)的數(shù)據(jù)量d1,獲得商,對(duì)獲得的商取整后再加1,就可以得到需要獲得的目標(biāo)鍵的個(gè)數(shù)。如:待存儲(chǔ)文件的數(shù)據(jù)量d2為1.2m,每個(gè)鍵的值能夠存儲(chǔ)的數(shù)據(jù)量d1為1m,1.2/1=1.2,取整后得到1,再加1獲得2,此時(shí)可以確定需要獲得的用于存儲(chǔ)該待存儲(chǔ)文件的目標(biāo)鍵的個(gè)數(shù)為2。確定了目標(biāo)鍵的數(shù)量后,可以進(jìn)一步確定用于存儲(chǔ)待存儲(chǔ)文件的目標(biāo)鍵。在本發(fā)明的一種實(shí)施方式中,可以從上一次存儲(chǔ)數(shù)據(jù)后數(shù)據(jù)的末尾存儲(chǔ)位置,向后查找所需的目標(biāo)鍵的數(shù)量個(gè)空閑的鍵作為目標(biāo)鍵。假設(shè),當(dāng)前存儲(chǔ)終端中有5個(gè)鍵,分別為a、b、c、d、e,上一次存儲(chǔ)數(shù)據(jù)后數(shù)據(jù)的末尾存儲(chǔ)位置在a中,并且c中存儲(chǔ)了數(shù)據(jù),確定的目標(biāo)鍵的數(shù)量為2,則從a向后查找空閑的鍵,進(jìn)而可以確定目標(biāo)鍵為b和d。s103:根據(jù)所確定的目標(biāo)鍵,獲得待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù);具體地,待存儲(chǔ)文件的元數(shù)據(jù)一般包括:該待存儲(chǔ)文件的標(biāo)識(shí)、該待存儲(chǔ)文件的數(shù)據(jù)量和該待存儲(chǔ)文件的存儲(chǔ)位置等。由于確定了目標(biāo)鍵后,也就確定了待存儲(chǔ)文件的存儲(chǔ)位置,所以可以根據(jù)上述目標(biāo)鍵獲得待存儲(chǔ)文件的元數(shù)據(jù),也就是上述的待存儲(chǔ)元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,在確定用于存儲(chǔ)待存儲(chǔ)文件的目標(biāo)鍵包含多個(gè)鍵的情況下,在根據(jù)所確定的目標(biāo)鍵,獲得待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)之前,還可以包括:根據(jù)所確定的目標(biāo)鍵的數(shù)量,獲得每一目標(biāo)鍵要存儲(chǔ)的待存儲(chǔ)文件的文件塊。具體地,一個(gè)目標(biāo)鍵對(duì)應(yīng)一個(gè)文件塊,而文件塊為待存儲(chǔ)文件的一段數(shù)據(jù),也就是說,一個(gè)目標(biāo)鍵對(duì)應(yīng)待存儲(chǔ)文件的一段數(shù)據(jù)。如:一個(gè)待存儲(chǔ)文件的數(shù) 據(jù)量為1m,目標(biāo)鍵的個(gè)數(shù)為2,可以獲得該待存儲(chǔ)文件的2個(gè)文件塊,每個(gè)文件塊的數(shù)據(jù)量為0.5m,也就是說,每個(gè)目標(biāo)鍵對(duì)應(yīng)0.5m的該待存儲(chǔ)文件的數(shù)據(jù)。在本發(fā)明的一種實(shí)施方式中,獲取待存儲(chǔ)文件獲得文件塊時(shí),每一文件塊的大小并不一定是都相同的。例如,在確定了用于存儲(chǔ)待存儲(chǔ)文件的目標(biāo)鍵后,從待存儲(chǔ)文件中依次獲得若干個(gè)數(shù)據(jù)量為d1的文件塊(d1為每一目標(biāo)鍵能夠存儲(chǔ)的數(shù)據(jù)量),若最后獲得的文件塊a的數(shù)據(jù)量d3小于數(shù)據(jù)量d1,則可以直接將該文件塊a確定為一目標(biāo)鍵對(duì)應(yīng)的文件塊。假設(shè),待存儲(chǔ)文件的數(shù)據(jù)量d2為1.2m,每一目標(biāo)鍵能夠存儲(chǔ)的數(shù)據(jù)量d1為1m,那么可以確定目標(biāo)鍵的數(shù)量為2,從上一次數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)的鍵向后查找兩個(gè)空閑的鍵作為目標(biāo)鍵,假設(shè),查找到的兩個(gè)空閑鍵的名字分別為key1和key2,則可以從該待存儲(chǔ)文件中獲得與名字為key1的鍵對(duì)應(yīng)的1m的文件塊和與名字為key2的鍵對(duì)應(yīng)的0.2m的文件塊。在本發(fā)明的一種實(shí)現(xiàn)方式中,存儲(chǔ)終端可以根據(jù)目標(biāo)鍵的數(shù)量,直接將待存儲(chǔ)文件分割為目標(biāo)鍵的數(shù)量個(gè)文件塊,其中,每一文件塊的數(shù)據(jù)量d3不大于每一目標(biāo)鍵能夠存儲(chǔ)的數(shù)據(jù)量d1,此時(shí),可以直接獲取文件塊,并將獲取的文件塊存儲(chǔ)至對(duì)應(yīng)的目標(biāo)鍵中。這種情況下,上述根據(jù)所確定的目標(biāo)鍵,獲得待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù),可以包括:獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),并將所獲得的元數(shù)據(jù)確定為待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)。具體地,在確定的目標(biāo)鍵包含多個(gè)鍵的情況下,待存儲(chǔ)文件會(huì)以文件塊的形式存儲(chǔ)在多個(gè)鍵中,這種情況下,每一文件塊均會(huì)對(duì)應(yīng)具體的存儲(chǔ)位置,且各個(gè)文件塊的存儲(chǔ)位置可能不是連續(xù)的。另外,由于每一文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量不同,待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)中不僅包括各個(gè)文件塊的存儲(chǔ)位置信息,還包括文件塊相對(duì)于待存儲(chǔ)文件文件頭的偏移量信息,這樣,就可以保證從存儲(chǔ)設(shè)備中讀取出文件的各個(gè)文件塊后,能夠?qū)@些文件塊進(jìn)行正確組合,得到完整的文件。這種情況下,由于該文件塊為待存儲(chǔ)文件的一部分,因此,可以獲得每一目標(biāo)鍵的值中存儲(chǔ)的文件塊的元數(shù)據(jù),將所獲得的元數(shù)據(jù)作為待存儲(chǔ)文件的待 存儲(chǔ)元數(shù)據(jù)的一部分,該待存儲(chǔ)文件的所有文件塊的元數(shù)據(jù)組成該待存儲(chǔ)文件的完整的待存儲(chǔ)元數(shù)據(jù)。需要說明的是,文件塊的元數(shù)據(jù)可以包括:該文件塊所屬待存儲(chǔ)文件的標(biāo)識(shí)、存儲(chǔ)該文件塊的域的標(biāo)識(shí)、該文件塊在該待存儲(chǔ)文件中的偏移量和該文件塊的數(shù)據(jù)量。其中,上述存儲(chǔ)該文件塊的域的標(biāo)識(shí)為該待存儲(chǔ)文件在存儲(chǔ)終端中的附加屬性,每個(gè)存儲(chǔ)終端中包含多個(gè)域,一個(gè)域也可以包含多個(gè)存儲(chǔ)終端,待存儲(chǔ)文件的文件塊可以被存儲(chǔ)在若干個(gè)域中,有了存儲(chǔ)文件塊的域的標(biāo)識(shí),在讀取文件時(shí)就能夠更為準(zhǔn)確快速地獲得該文件塊;另外,上述文件塊在待存儲(chǔ)文件中的偏移量為:該文件塊相對(duì)于該待存儲(chǔ)文件文件頭的偏移量,如上述假設(shè)中,名字為key2的鍵的值中存儲(chǔ)的文件塊在待存儲(chǔ)文件中的偏移量為1m。在發(fā)明的一種實(shí)現(xiàn)方式中,上述獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),可以包括:s1、確定每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量;在本發(fā)明的一種實(shí)施方式中,確定每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量,可以包括:計(jì)算目標(biāo)鍵x要存儲(chǔ)的文件塊f相對(duì)于待存儲(chǔ)文件文件頭的偏移量,其中,目標(biāo)鍵x為:待存儲(chǔ)文件對(duì)應(yīng)的若干目標(biāo)鍵中的任一鍵。文件塊相對(duì)于該待存儲(chǔ)文件文件頭的偏移量也是該待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)的一部分,存儲(chǔ)該偏移量后,存儲(chǔ)終端就可以在讀取文件時(shí),根據(jù)該偏移量準(zhǔn)確的獲得該文件的文件塊,并以正確的順序?qū)⒋鎯?chǔ)在多個(gè)鍵中的、屬于同一個(gè)文件的文件塊組成完整正確的文件。s2、根據(jù)每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量,獲得該目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù)。在本發(fā)明的一種實(shí)施方式中,在確定了文件塊f相對(duì)于待存儲(chǔ)文件的文件頭的偏移量之后,結(jié)合待存儲(chǔ)文件的標(biāo)識(shí)、文件塊f的數(shù)據(jù)量和存儲(chǔ)該文件塊f的域的標(biāo)識(shí)等元數(shù)據(jù)信息,獲得該目標(biāo)鍵x的值要存儲(chǔ)的文件塊f的元數(shù)據(jù)。s104:將待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至預(yù)設(shè)的元數(shù)據(jù)庫以及所確定的目標(biāo)鍵的名字中,并將待存儲(chǔ)文件存儲(chǔ)至所確定的目標(biāo)鍵的值中。這里,預(yù)設(shè)的元數(shù)據(jù)庫,用于存儲(chǔ)文件的元數(shù)據(jù)。具體地,存儲(chǔ)終端將待存儲(chǔ)文件存儲(chǔ)至目標(biāo)鍵的值中的同時(shí),將待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至預(yù)設(shè)的元數(shù)據(jù)庫以及目標(biāo)鍵的名字中。這樣,在進(jìn)行數(shù)據(jù)訪問時(shí),就可以根據(jù)元數(shù)據(jù)庫中的元數(shù)據(jù)進(jìn)行數(shù)據(jù)訪問了。另外,將待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)在目標(biāo)鍵的名字中,這樣就可以在元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)鍵的名字中存儲(chǔ)的元數(shù)據(jù)來恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù)了。由于每個(gè)鍵的名字所占的存儲(chǔ)空間是固定的,不管每個(gè)鍵的名字對(duì)應(yīng)的存儲(chǔ)空間是否被信息存滿,均會(huì)占用固定的存儲(chǔ)空間,因此將待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)在目標(biāo)鍵的名字中,既備份了文件的元數(shù)據(jù),又不會(huì)占用額外的存儲(chǔ)空間,進(jìn)而變相節(jié)約了存儲(chǔ)終端的存儲(chǔ)空間。需要說明的是,上述存儲(chǔ)待存儲(chǔ)文件的步驟可以與存儲(chǔ)待存儲(chǔ)元數(shù)據(jù)的步驟同時(shí)執(zhí)行,也可以在存儲(chǔ)待存儲(chǔ)元數(shù)據(jù)之前s102之后執(zhí)行,或者,也可以在存儲(chǔ)待存儲(chǔ)元數(shù)據(jù)之后執(zhí)行,本申請(qǐng)并不對(duì)此進(jìn)行限定。在本發(fā)明的一種實(shí)現(xiàn)方式中,在目標(biāo)鍵包含多個(gè)鍵時(shí),鍵的命名規(guī)則可以為:[文件的標(biāo)識(shí)]_[該文件所在域的標(biāo)識(shí)]_[鍵的值中存儲(chǔ)的文件塊相對(duì)于該文件文件頭的偏移量]_[鍵的值中存儲(chǔ)的該文件的文件塊的數(shù)據(jù)量]。在一個(gè)實(shí)施例中,根據(jù)步驟s103中的描述,可以參考表1對(duì)鍵進(jìn)行命名,表1為原鍵的名字與本發(fā)明實(shí)施例中鍵的名字的對(duì)比。表1原鍵的名字本發(fā)明實(shí)施例中鍵的名字key1[file1]_[1]_[0]_[len_in_key1]key2[file1]_[1]_[len_in_key1]_[len_in_key2]其中,第一個(gè)鍵的原名為key1,第二個(gè)鍵的原名為key2;在本發(fā)明實(shí)施例的鍵的名字中,[file1]為文件a的標(biāo)識(shí);[1]為存儲(chǔ)該文件a的域的標(biāo)識(shí),表示文件a被存儲(chǔ)在域1中;在本發(fā)明實(shí)施例的第一個(gè)鍵(原名為key1的鍵)中,[0]為鍵的值中存儲(chǔ)的文件塊相對(duì)于該文件a文件頭的偏移量,因?yàn)榈谝粋€(gè)鍵是從文件a文件頭開始存儲(chǔ)文件a的一個(gè)文件塊的,所以第一個(gè)鍵的偏移量為0;[len_in_key1]表示在第一 個(gè)鍵的值中存儲(chǔ)的文件塊的數(shù)據(jù)量;在本發(fā)明實(shí)施例的第二個(gè)鍵(原名為key2的鍵)中,[len_in_key1]為鍵的值中存儲(chǔ)的文件塊相對(duì)于該文件a文件頭的偏移量,因?yàn)樵诘谝粋€(gè)鍵中已經(jīng)存儲(chǔ)了數(shù)據(jù)量為[len_in_key1]的文件塊,因此,第二個(gè)鍵的偏移量為[len_in_key1];[len_in_key2]表示在第二個(gè)鍵中存儲(chǔ)的文件塊的數(shù)據(jù)量。由上可以看出,鍵的名中存儲(chǔ)了元數(shù)據(jù)庫中需要的元數(shù)據(jù),當(dāng)元數(shù)據(jù)庫存儲(chǔ)元數(shù)據(jù)丟失的情況下,就可以根據(jù)鍵的名中存儲(chǔ)的元數(shù)據(jù)恢復(fù)元數(shù)據(jù)了。在本發(fā)明的一種實(shí)現(xiàn)方式中,按照文件塊的起始存儲(chǔ)位置相對(duì)于待存儲(chǔ)文件的文件頭的偏移量由小到大的順序,依次存儲(chǔ)至目標(biāo)鍵中,這樣避免待存儲(chǔ)文件的某一文件塊未能成功存儲(chǔ)的問題;另外,將文件塊存儲(chǔ)至目標(biāo)鍵中時(shí),按照目標(biāo)鍵的物理地址或邏輯地址由小到大的順序依次存儲(chǔ)文件塊,這樣在讀取該待存儲(chǔ)文件時(shí),便于存儲(chǔ)終端快速獲得該待存儲(chǔ)文件的文件塊。另外,存儲(chǔ)終端在成功存儲(chǔ)了待存儲(chǔ)文件后,再存儲(chǔ)該待存儲(chǔ)文件的元數(shù)據(jù),保證了元數(shù)據(jù)庫中的元數(shù)據(jù)的準(zhǔn)確性,避免出現(xiàn)未成功存儲(chǔ)待存儲(chǔ)文件,卻存儲(chǔ)了該待存儲(chǔ)文件的元數(shù)據(jù),進(jìn)而導(dǎo)致存儲(chǔ)終端不能正確讀取元數(shù)據(jù)庫中的元數(shù)據(jù)數(shù)據(jù),出現(xiàn)存儲(chǔ)終端崩潰等問題。應(yīng)用圖1所示實(shí)施例,存儲(chǔ)終端在接收到針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求后,獲得該待存儲(chǔ)文件待存儲(chǔ)元數(shù)據(jù),在將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至元數(shù)據(jù)庫中同時(shí),將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)在目標(biāo)鍵的名字中,并將待存儲(chǔ)文件存儲(chǔ)至目標(biāo)鍵的值中。這樣,在元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,就可以根據(jù)鍵的名字中存儲(chǔ)的元數(shù)據(jù)來恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),保證了元數(shù)據(jù)的恢復(fù),并且將元數(shù)據(jù)存儲(chǔ)在鍵的名字原本就占用的固定存儲(chǔ)空間中,不會(huì)占用額外的存儲(chǔ)空間,進(jìn)而節(jié)約了存儲(chǔ)終端的存儲(chǔ)空間。參考圖2,圖2為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)方法的流程示意圖,應(yīng)用于存儲(chǔ)終端,該方法還可以包括如下步驟:s105:在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新該預(yù)設(shè)的元數(shù)據(jù)庫。在本發(fā)明的一種實(shí)現(xiàn)方式中,每次元數(shù)據(jù)庫更新了存儲(chǔ)的元數(shù)據(jù)后,都獲 得一個(gè)第一校驗(yàn)值,在下一次存儲(chǔ)元數(shù)據(jù)之前可以再次獲得一個(gè)第二校驗(yàn)值,當(dāng)?shù)谝恍r?yàn)值和第二校驗(yàn)值不同時(shí),就可以判定元數(shù)據(jù)庫存在元數(shù)據(jù)丟失。在本發(fā)明的一種實(shí)施方式中,可以根據(jù)crc(cyclicredundancycheck)校驗(yàn)算法或其他校驗(yàn)算法來獲得校驗(yàn)值。在本發(fā)明的一種實(shí)現(xiàn)方式中,當(dāng)確定元數(shù)據(jù)庫存在元數(shù)據(jù)丟失時(shí),可以根據(jù)所有鍵的名字中存儲(chǔ)的文件的標(biāo)識(shí)、在鍵的值中存儲(chǔ)的文件塊的起始位置與該文件的文件頭間的偏移量、該文件所在的域的標(biāo)識(shí)、該文件在鍵的值中存儲(chǔ)的文件塊的數(shù)據(jù)量等信息,獲得元數(shù)據(jù)信息,用獲得的元數(shù)據(jù)信息替換元數(shù)據(jù)庫中的全部原有數(shù)據(jù),這樣就能更新元數(shù)據(jù)庫,保證了元數(shù)據(jù)庫中元數(shù)據(jù)的恢復(fù),避免了文件損失。需要說明的是,步驟s105可以發(fā)生在步驟s101、s102、s103和s104中的任一步驟之前,也可以發(fā)生在步驟s101、s102、s103和s104中的任一步驟之后,還可以與步驟s101、s102、s103和s104中的任一步驟同時(shí)發(fā)生,本發(fā)明對(duì)此不進(jìn)行限定。應(yīng)用圖2所示實(shí)施例,存儲(chǔ)終端在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù)信息,更新預(yù)設(shè)的元數(shù)據(jù)庫,能夠有效地恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),避免了文件損失。參考圖3,圖3為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)方法的流程示意圖,應(yīng)用于存儲(chǔ)終端,該方法中,步驟s105可以包括:s1051:在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí);在本發(fā)明的一種實(shí)施方式中,元數(shù)據(jù)庫中丟失的元數(shù)據(jù)可能僅僅只是一小部分,此時(shí),若全部更新元數(shù)據(jù)庫中存儲(chǔ)的元數(shù)據(jù),將會(huì)增加存儲(chǔ)終端的工作量,并且導(dǎo)致元數(shù)據(jù)的恢復(fù)速度慢。若只更新元數(shù)據(jù)庫中丟失的元數(shù)據(jù),將會(huì)大大減少存儲(chǔ)終端的工作量,并且使得元數(shù)據(jù)的恢復(fù)速度加快。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)存儲(chǔ)終端針對(duì)某一文件進(jìn)行讀取時(shí),若不能夠讀取到該文件,則可以判定該文件在元數(shù)據(jù)庫中的元數(shù)據(jù)丟失,進(jìn)而獲得該文件的標(biāo)識(shí)。在本發(fā)明的一種可選實(shí)現(xiàn)方式中,該文件的標(biāo)識(shí)可以從針對(duì)該文件的讀取請(qǐng)求中獲得。s1052:根據(jù)s1051中所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵;在本發(fā)明的一個(gè)實(shí)施例中,元數(shù)據(jù)中包含文件的標(biāo)識(shí),可以讀取所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),判斷讀取到的元數(shù)據(jù)是否包含元數(shù)據(jù)丟失的文件的標(biāo)識(shí),若一個(gè)鍵的名字中存儲(chǔ)的元數(shù)據(jù)包含該文件的標(biāo)識(shí),則獲得該鍵,并將該鍵確定為包含該文件的標(biāo)識(shí)的鍵。s1053:根據(jù)所確定的鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新預(yù)設(shè)的元數(shù)據(jù)庫。在本發(fā)明的一個(gè)實(shí)施例中,在確定出包含元數(shù)據(jù)的鍵后,就可以根據(jù)鍵的命名規(guī)則(如步驟s104中提到的鍵的命名規(guī)則)獲得該鍵的值中存儲(chǔ)的文件或文件塊的元數(shù)據(jù),進(jìn)而將獲得的元數(shù)據(jù)對(duì)應(yīng)該文件的標(biāo)識(shí)存入元數(shù)據(jù)庫中,更新元數(shù)據(jù)庫中的元數(shù)據(jù)。應(yīng)用圖3所示實(shí)施例,在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,存儲(chǔ)終端只需要獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí),根據(jù)所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵,根據(jù)所獲得的鍵的名字中存儲(chǔ)的元數(shù)據(jù),對(duì)應(yīng)該文件的標(biāo)識(shí)更新預(yù)設(shè)的元數(shù)據(jù)庫就可以了,減少了存儲(chǔ)終端的工作量,提高了元數(shù)據(jù)庫更新的效率。參考圖4,圖4為本發(fā)明實(shí)施例提供的一種文件存儲(chǔ)裝置的結(jié)構(gòu)示意圖,應(yīng)用于存儲(chǔ)終端,該裝置包括:存儲(chǔ)請(qǐng)求接收模塊401、目標(biāo)鍵確定模塊402、元數(shù)據(jù)獲得模塊403和數(shù)據(jù)存儲(chǔ)模塊404;其中,存儲(chǔ)請(qǐng)求接收模塊401,用于接收針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求;目標(biāo)鍵確定模塊402,用于確定用于存儲(chǔ)待存儲(chǔ)文件的目標(biāo)鍵;元數(shù)據(jù)獲得模塊403,用于根據(jù)所確定的目標(biāo)鍵,獲得待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù);數(shù)據(jù)存儲(chǔ)模塊404,用于將待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至預(yù)設(shè)的元數(shù)據(jù)庫以及所確定的目標(biāo)鍵的名字中,并將待存儲(chǔ)文件存儲(chǔ)至所確定的目標(biāo)鍵的值中。在本發(fā)明的一種實(shí)現(xiàn)方式中,在所確定的目標(biāo)鍵為多個(gè)鍵的情況下,上述文件存儲(chǔ)裝置還可以包括:文件塊獲得模塊(圖4中未示出),用于:根據(jù)所確定的目標(biāo)鍵的數(shù)量,獲得每一目標(biāo)鍵要存儲(chǔ)的待存儲(chǔ)文件的文件塊;這種情況下,元數(shù)據(jù)獲得模塊403,具體用于:獲得每一目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù),并將所獲得的元數(shù)據(jù)確定為待存儲(chǔ)文件的待存儲(chǔ)元數(shù)據(jù)。在本發(fā)明的一種實(shí)現(xiàn)方式中,元數(shù)據(jù)獲得模塊403,可以包括:偏移量確定子模塊和元數(shù)據(jù)獲得子模塊(圖4中未示出);偏移量確定子模塊,用于確定每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量;元數(shù)據(jù)獲得子模塊,用于根據(jù)每一目標(biāo)鍵要存儲(chǔ)的文件塊相對(duì)于待存儲(chǔ)文件的文件頭的偏移量,獲得該目標(biāo)鍵要存儲(chǔ)的文件塊的元數(shù)據(jù)。應(yīng)用圖4所示實(shí)施例,存儲(chǔ)終端在接收到針對(duì)待存儲(chǔ)文件的存儲(chǔ)請(qǐng)求后,獲得該待存儲(chǔ)文件待存儲(chǔ)元數(shù)據(jù),在將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)至元數(shù)據(jù)庫中同時(shí),將該待存儲(chǔ)元數(shù)據(jù)存儲(chǔ)在目標(biāo)鍵的名字中,并將待存儲(chǔ)文件存儲(chǔ)至目標(biāo)鍵的值中。這樣,在元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,就可以根據(jù)鍵的名字中存儲(chǔ)的元數(shù)據(jù)來恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),保證了元數(shù)據(jù)的恢復(fù),并且將元數(shù)據(jù)存儲(chǔ)在鍵的名字原本就占用的固定存儲(chǔ)空間中,不會(huì)占用額外的存儲(chǔ)空間,進(jìn)而節(jié)約了存儲(chǔ)終端的存儲(chǔ)空間。參考圖5,圖5為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)裝置的結(jié)構(gòu)示意圖,應(yīng)用于存儲(chǔ)終端,該裝置還可以包括:元數(shù)據(jù)庫更新模塊405;其中,元數(shù)據(jù)庫更新模塊405,用于在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新預(yù)設(shè)的元數(shù)據(jù)庫。應(yīng)用圖5所示實(shí)施例,存儲(chǔ)終端在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,根據(jù)所有鍵的名字中存儲(chǔ)的元數(shù)據(jù)信息,更新預(yù)設(shè)的元數(shù)據(jù)庫,能夠有效地恢復(fù)元數(shù)據(jù)庫中的元數(shù)據(jù),避免了文件損失。參考圖6,圖6為本發(fā)明實(shí)施例提供的另一種文件存儲(chǔ)裝置的結(jié)構(gòu)示意圖,應(yīng)用于存儲(chǔ)終端,待存儲(chǔ)元數(shù)據(jù)包含待存儲(chǔ)文件的標(biāo)識(shí),該裝置中,元數(shù)據(jù)庫更新模塊405,可以包括:標(biāo)識(shí)獲得子模塊4051、鍵確定子模塊4052和數(shù)據(jù)庫更 新子模塊4053;其中,標(biāo)識(shí)獲得子模塊4051,用于獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí);鍵確定子模塊4052,用于根據(jù)所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵;數(shù)據(jù)庫更新子模塊4053,用于根據(jù)所獲得的鍵的名字中存儲(chǔ)的元數(shù)據(jù),更新預(yù)設(shè)的元數(shù)據(jù)庫。應(yīng)用圖6所示實(shí)施例,在預(yù)設(shè)的元數(shù)據(jù)庫存在元數(shù)據(jù)丟失的情況下,存儲(chǔ)終端只需要獲得元數(shù)據(jù)丟失的文件的標(biāo)識(shí),根據(jù)所獲得的標(biāo)識(shí)和所有鍵的名字中存儲(chǔ)的元數(shù)據(jù),確定包含所獲得的標(biāo)識(shí)的鍵,根據(jù)所獲得的鍵的名字中存儲(chǔ)的元數(shù)據(jù),對(duì)應(yīng)該文件的標(biāo)識(shí)更新預(yù)設(shè)的元數(shù)據(jù)庫就可以了,減少了存儲(chǔ)終端的工作量,提高了元數(shù)據(jù)庫更新的效率。對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,這里所稱得的存儲(chǔ)介質(zhì),如:rom/ram、磁碟、光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁12