本發(fā)明涉及計(jì)算機(jī)存儲技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)目前正逐漸從“以計(jì)算為中心”向“以數(shù)據(jù)為中心”的方向轉(zhuǎn)變,現(xiàn)在PB級別甚至是EB級別的海量數(shù)據(jù)存儲與處理已經(jīng)不僅僅局限在專業(yè)的科學(xué)研究領(lǐng)域,開始大量地出現(xiàn)在很多民用和商用領(lǐng)域中。隨著個性化信息服務(wù)的不斷發(fā)展,因?yàn)榉?wù)對象基數(shù)龐大,民用和商用領(lǐng)域的數(shù)據(jù)量還有超過專業(yè)領(lǐng)域的趨勢。例如,在專業(yè)科學(xué)領(lǐng)域中,地球物理勘探、氣象數(shù)值預(yù)報(bào)、模擬仿真等等都需要進(jìn)行大規(guī)模數(shù)據(jù)處理。
現(xiàn)有技術(shù)中,對數(shù)據(jù)進(jìn)行存儲后,則該數(shù)據(jù)就會固定存儲至當(dāng)前的存儲區(qū)域。如果該數(shù)據(jù)存儲至級別較低的存儲層(讀取速度較慢的存儲層),而該數(shù)據(jù)的訪問頻率很大,則對該數(shù)據(jù)進(jìn)行讀取時,讀取速度就會很慢,浪費(fèi)時間;或者如果該數(shù)據(jù)存儲至級別較高的存儲層(讀取速度較快的存儲層),而該數(shù)據(jù)的訪問頻率卻很小,則對該數(shù)據(jù)進(jìn)行讀取時,雖然讀取速度很快,但是該數(shù)據(jù)長期占用了級別較高的存儲層,浪費(fèi)級別較高的存儲層的存儲空間;或者有的數(shù)據(jù)在一段時間內(nèi),訪問頻率很大,而另外的一段時間內(nèi),訪問頻率又很小,如果把該數(shù)據(jù)存儲至級別較高的存儲層,則在訪問頻率很小的那段時間浪費(fèi)級別較高的存儲層的存儲空間,如果把該數(shù)據(jù)存儲至級別較低的存儲層,則在訪問頻率很大的那段時間,對該數(shù)據(jù)進(jìn)行讀取時,讀取速度就會很慢,浪費(fèi)時間。
由此可見,如何根據(jù)數(shù)據(jù)的訪問頻率對數(shù)據(jù)的存儲區(qū)域進(jìn)行動態(tài)變化從而更加合理利用存儲空間是本領(lǐng)域技術(shù)人員亟待解決地問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種數(shù)據(jù)存儲方法及裝置,用于根據(jù)數(shù)據(jù)的訪問頻率對數(shù)據(jù)的存儲區(qū)域進(jìn)行動態(tài)變化從而更加合理利用存儲空間。
為解決上述技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)存儲方法,包括:
在接收到存儲請求后,將待存儲數(shù)據(jù)存儲至最高級別的存儲層;
周期性地分析所述最高級別的存儲層中存儲的各數(shù)據(jù)的I/O占用比;
判斷各數(shù)據(jù)的I/O占用比是否超過第一閾值;
如果是,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在所述最高級別的存儲層;
如果否,則將對應(yīng)的數(shù)據(jù)存儲至所述最高級別以下的存儲層。
優(yōu)選地,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,所述將對應(yīng)的數(shù)據(jù)存儲至所述最高級別以下的存儲層具體包括:
將對應(yīng)的數(shù)據(jù)存儲至所述二級存儲層。
優(yōu)選地,還包括:
判斷所述二級存儲層中存儲的各數(shù)據(jù)的I/O占用比是否超過第二閾值;
如果是,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在所述二級存儲層;
如果否,則將對應(yīng)的數(shù)據(jù)存儲至所述三級存儲層。
優(yōu)選地,所述將待存儲數(shù)據(jù)存儲至最高級別的存儲層之前還包括:
在接收到存儲請求后,判斷所述存儲請求中所需的存儲空間是否小于或等于所述最高級別的存儲層的剩余存儲空間;
其中,如果是,則將待存儲數(shù)據(jù)存儲至所述最高級別的存儲層;
如果否,則篩選出所述最高級別的存儲層中I/O占用比最小的數(shù)據(jù),并將該數(shù)據(jù)存儲至所述最高級別以下的存儲層。
優(yōu)選地,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,所述將該數(shù)據(jù)存儲至所述最高級別以下的存儲層具體包括:
將該數(shù)據(jù)存儲至所述二級存儲層。
優(yōu)選地,還包括:
周期性地分析所述二級存儲層中存儲的各數(shù)據(jù)的I/O占用比;
判斷各數(shù)據(jù)的I/O占用比是否高于所述第一閾值;
如果是,則將對應(yīng)的數(shù)據(jù)存儲至所述一級存儲層;
如果否,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲至所述二級存儲層。
優(yōu)選地,還包括:
周期性地分析所述三級存儲層中存儲的各數(shù)據(jù)的I/O占用比;
判斷各數(shù)據(jù)的I/O占用比是否高于所述第二閾值;
如果是,則將對應(yīng)的數(shù)據(jù)存儲至所述二級存儲層;
如果否,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲至所述三級存儲層。
優(yōu)選地,所述周期性地分析所述最高級別的存儲層中存儲的各待存儲數(shù)據(jù)的I/O占用比具體為:每隔24小時分析所述最高級別的存儲層中存儲的各待存儲數(shù)據(jù)的I/O占用比。
為解決上述技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)存儲裝置,包括:
初始存儲控制模塊,用于在接收到存儲請求后,將待存儲數(shù)據(jù)存儲至最高級別的存儲層;
分析模塊,用于周期性地分析所述最高級別的存儲層中存儲的各數(shù)據(jù)的I/O占用比;
判斷模塊,用于判斷各數(shù)據(jù)的I/O占用比是否超過第一閾值;其中,如果是,將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在所述最高級別的存儲層,如果否,觸發(fā)數(shù)據(jù)轉(zhuǎn)移模塊;
所述數(shù)據(jù)轉(zhuǎn)移模塊,用于將對應(yīng)的數(shù)據(jù)存儲至所述最高級別以下的存儲層。
優(yōu)選地,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,所述數(shù)據(jù)轉(zhuǎn)移模塊具體用于將對應(yīng)的數(shù)據(jù)存儲至所述二級存儲層。
本發(fā)明所提供的數(shù)據(jù)存儲方法及裝置,該方法包括,將待存儲數(shù)據(jù)均先存儲至最高級別的存儲層,然后周期性地分析最高級別的存儲層中各數(shù)據(jù)的I/O占用比,如果一個數(shù)據(jù)的I/O占用比大于第一閾值,則將該數(shù)據(jù)繼續(xù)存儲在最高級別的存儲層,如果一個數(shù)據(jù)的I/O占用比低于第一閾值,則將該數(shù)據(jù)存儲至最高級別以下的存儲。由此可見,通過上述方法,可以將I/O占用比較高的數(shù)據(jù)存儲在最高級別的存儲層,從而在讀取這些數(shù)據(jù)時,縮短讀取時間,而將I/O占用比較高的數(shù)據(jù)存儲在最高級別以下的存儲層,從而節(jié)約最高級別的存儲層的存儲空間,很顯然,該方法實(shí)現(xiàn)了數(shù)據(jù)的動態(tài)存儲,更加合理。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例,下面將對實(shí)施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲方法的流程圖;
圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)存儲方法的流程圖;
圖3為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)存儲方法的流程圖;
圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下,所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)范圍。
本發(fā)明的核心是提供一種數(shù)據(jù)存儲方法及裝置。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明作進(jìn)一步的詳細(xì)說明。
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲方法的流程圖。如圖1所示,數(shù)據(jù)存儲方法包括:
S10:在接收到存儲請求后,將待存儲數(shù)據(jù)存儲至最高級別的存儲層。
本實(shí)施例中,任意的存儲請求對應(yīng)的數(shù)據(jù)均存儲至最高級別的存儲層,可以理解地是,存儲層最少包含兩個存儲層。如果有兩個存儲層,則最高級別的存儲層相對于次高級別的存儲層的讀取速度要快,即如果數(shù)據(jù)存儲在最高級別的存儲層,則當(dāng)需要讀取該數(shù)據(jù)時,讀取的速度更快。
S11:周期性地分析最高級別的存儲層中存儲的各數(shù)據(jù)的I/O占用比。
在系統(tǒng)運(yùn)行中,會有大量的存儲請求,如果全部的存儲請求的數(shù)據(jù)都存儲在最高級別的存儲層中,則最高級別的存儲層剩余的存儲空間就會越來越少,甚至存儲空間為0,導(dǎo)致無法存儲數(shù)據(jù)。因此,需要定期地分析最高級別的存儲層中存儲的各個數(shù)據(jù)的I/O占用比與第一閾值的關(guān)系。
S12:判斷各數(shù)據(jù)的I/O占用比是否超過第一閾值。如果是,進(jìn)入步驟S13,如果否,進(jìn)入步驟S14。
S13:將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在最高級別的存儲層。
S14:將對應(yīng)的數(shù)據(jù)存儲至最高級別以下的存儲層。
可以理解地是,如果存儲在最高級別的存儲層的部分?jǐn)?shù)據(jù)的I/O占用比較低,即這部分?jǐn)?shù)據(jù)不會經(jīng)常被訪問屬于冷數(shù)據(jù),那么這部分?jǐn)?shù)據(jù)也就沒有必要占用最高級別的存儲層。同樣的,如果存儲在最高級別的存儲層的部分?jǐn)?shù)據(jù)的I/O占用比較高,即這部分?jǐn)?shù)據(jù)經(jīng)常被訪問屬于熱數(shù)據(jù),那么這部分?jǐn)?shù)據(jù)就有必要占用最高級別的存儲層,使得在訪問這些數(shù)據(jù)時,讀取速度更快??梢岳斫獾厥?,第一閾值可以根據(jù)實(shí)際情況設(shè)定,可以是永久固定的值,也可以隨著系統(tǒng)的運(yùn)行狀態(tài)改變。
本實(shí)施例提供的數(shù)據(jù)存儲方法,將待存儲數(shù)據(jù)均先存儲至最高級別的存儲層,然后周期性地分析最高級別的存儲層中各數(shù)據(jù)的I/O占用比,如果一個數(shù)據(jù)的I/O占用比大于第一閾值,則將該數(shù)據(jù)繼續(xù)存儲在最高級別的存儲層,如果一個數(shù)據(jù)的I/O占用比低于第一閾值,則將該數(shù)據(jù)存儲至最高級別以下的存儲。由此可見,通過上述方法,可以將I/O占用比較高的數(shù)據(jù)存儲在最高級別的存儲層,從而在讀取這些數(shù)據(jù)時,縮短讀取時間,而將I/O占用比較高的數(shù)據(jù)存儲在最高級別以下的存儲層,從而節(jié)約最高級別的存儲層的存儲空間,很顯然,該方法實(shí)現(xiàn)了數(shù)據(jù)的動態(tài)存儲,更加合理。
圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)存儲方法的流程圖。如圖2所示,在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,將對應(yīng)的數(shù)據(jù)存儲至最高級別以下的存儲層具體包括:
S20:將對應(yīng)的數(shù)據(jù)存儲至二級存儲層。
在具體實(shí)施中,可以將存儲層分為三層,如果一級存儲層為最高級別的存儲層的話,則上述步驟S14在本實(shí)施例中就是步驟S20,即將對應(yīng)的數(shù)據(jù)存儲至二級存儲層。本實(shí)施例的存儲方式可以避免數(shù)據(jù)的跨層存儲。
如圖2所示,在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,還包括:
S21:判斷二級存儲層中存儲的各數(shù)據(jù)的I/O占用比是否超過第二閾值。如果是,則進(jìn)入步驟S22,如果否,則進(jìn)入步驟S23。
S22:將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在二級存儲層。
S23:將對應(yīng)的數(shù)據(jù)存儲至三級存儲層。
可以理解地是,如果存儲在二級存儲層的部分?jǐn)?shù)據(jù)的I/O占用比較低,即這部分?jǐn)?shù)據(jù)不會經(jīng)常被訪問屬于冷數(shù)據(jù),那么這部分?jǐn)?shù)據(jù)也就沒有必要占用二級存儲層。同樣的,如果存儲在二級存儲層的部分?jǐn)?shù)據(jù)的I/O占用比較高,即這部分?jǐn)?shù)據(jù)經(jīng)常被訪問屬于熱數(shù)據(jù),那么這部分?jǐn)?shù)據(jù)就有必要占用二級存儲層,使得在訪問這些數(shù)據(jù)時,讀取速度更快??梢岳斫獾厥?,第二閾值可以根據(jù)實(shí)際情況設(shè)定,可以是永久固定的值,也可以隨著系統(tǒng)的運(yùn)行狀態(tài)改變。
可以理解的是,第二閾值小于第一閾值。
圖3為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)存儲方法的流程圖。如圖3所示,在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,步驟S10之前還包括:
S30:判斷存儲請求中所需的存儲空間是否小于或等于最高級別的存儲層的剩余存儲空間;
其中,如果是,進(jìn)入步驟S10;如果否,則進(jìn)入步驟S31。
S31:篩選出最高級別的存儲層中I/O占用比最小的數(shù)據(jù),并將該數(shù)據(jù)存儲至最高級別以下的存儲層。
本實(shí)施例中考慮到當(dāng)有待存儲數(shù)據(jù)需要存儲時,可能當(dāng)前最高級別的存儲的存儲空間不滿足所需的空間,此時要將最高級別的存儲層中I/O占用比最小的數(shù)據(jù)存儲至最高級別以下的存儲層??梢岳斫獾氖?,如果將I/O占用比最小的數(shù)據(jù)存儲至最高級別以下的存儲層后,最高級別的存儲空間仍然不滿足所需的空間,則需要繼續(xù)進(jìn)行步驟S31直到滿足為止。
在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,將該數(shù)據(jù)存儲至最高級別以下的存儲層具體包括:將該數(shù)據(jù)存儲至二級存儲層。
在具體實(shí)施中,可以將存儲層分為三層,如果一級存儲層為最高級別的存儲層的話,則上述步驟S31在本實(shí)施例中就是將對應(yīng)的數(shù)據(jù)存儲至二級存儲層。本實(shí)施例的存儲方式可以避免數(shù)據(jù)的跨層存儲。
在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,還包括:
周期性地分析二級存儲層中存儲的各數(shù)據(jù)的I/O占用比。
判斷各數(shù)據(jù)的I/O占用比是否高于第一閾值。進(jìn)入步驟S42,進(jìn)入步驟S43。
如果是,則將對應(yīng)的數(shù)據(jù)存儲至一級存儲層。
如果否,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲至二級存儲層。
在具體實(shí)施中,一個數(shù)據(jù)的I/O占用比并不是固定不變的,可能這段時間的訪問頻率較低,導(dǎo)致存儲至二級存儲層,但是過一段時間的訪問頻率較高,此時,如果該數(shù)據(jù)依然存儲在二級存儲層,則在讀取該數(shù)據(jù)時,讀取速度較慢,浪費(fèi)時間。因此,對于這樣的數(shù)據(jù),本實(shí)施例中,將該數(shù)據(jù)再次存儲至一級存儲層,從而實(shí)現(xiàn)動態(tài)的存儲過程。
作為優(yōu)選地實(shí)施方式,還包括:
周期性地分析三級存儲層中存儲的各數(shù)據(jù)的I/O占用比。
判斷各數(shù)據(jù)的I/O占用比是否高于第二閾值。如果是,則將對應(yīng)的數(shù)據(jù)存儲至二級存儲層。
如果否,則將對應(yīng)的數(shù)據(jù)繼續(xù)存儲至三級存儲層。
在具體實(shí)施中,一個數(shù)據(jù)的I/O占用比并不是固定不變的,可能這段時間的訪問頻率較低,導(dǎo)致存儲至三級存儲層,但是過一段時間的訪問頻率較高,此時,如果該數(shù)據(jù)依然存儲在三級存儲層,則在讀取該數(shù)據(jù)時,讀取速度較慢,浪費(fèi)時間。因此,對于這樣的數(shù)據(jù),本實(shí)施例中,將該數(shù)據(jù)存儲至二級存儲層,從而實(shí)現(xiàn)動態(tài)的存儲過程。
在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,周期性地分析最高級別的存儲層中存儲的各待存儲數(shù)據(jù)的I/O占用比具體為:每隔24小時分析最高級別的存儲層中存儲的各待存儲數(shù)據(jù)的I/O占用比。
可以理解地是,周期可以根據(jù)實(shí)際情況設(shè)定,可以是24小時,也可以是48小時,或者10小時等。在具體實(shí)施中,如果周期設(shè)置的過短,則導(dǎo)致數(shù)據(jù)存儲的位置變化較多,不利于管理,如果周期設(shè)置的過長,則導(dǎo)致動態(tài)存儲不能更好地發(fā)揮作用。
圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)存儲裝置的結(jié)構(gòu)圖。如圖4所示,數(shù)據(jù)存儲裝置包括:
初始存儲控制模塊10,用于在接收到存儲請求后,將待存儲數(shù)據(jù)存儲至最高級別的存儲層;
分析模塊11,用于周期性地分析最高級別的存儲層中存儲的各數(shù)據(jù)的I/O占用比;
判斷模塊12,用于判斷各數(shù)據(jù)的I/O占用比是否超過第一閾值;其中,如果是,將對應(yīng)的數(shù)據(jù)繼續(xù)存儲在最高級別的存儲層,如果否,觸發(fā)數(shù)據(jù)轉(zhuǎn)移模塊;
數(shù)據(jù)轉(zhuǎn)移模塊13,用于將對應(yīng)的數(shù)據(jù)存儲至最高級別以下的存儲層。
在上述實(shí)施例的基礎(chǔ)上,作為優(yōu)選地實(shí)施方式,存儲層包括三層,級別由高到低分別為一級存儲層、二級存儲層和三級存儲層,數(shù)據(jù)轉(zhuǎn)移模塊具體用于將對應(yīng)的數(shù)據(jù)存儲至二級存儲層。
由于裝置部分的實(shí)施例與方法部分的實(shí)施例相互對應(yīng),因此裝置部分的實(shí)施例請參見方法部分的實(shí)施例的描述,這里暫不贅述。
本實(shí)施例提供的數(shù)據(jù)存儲裝置,將待存儲數(shù)據(jù)均先存儲至最高級別的存儲層,然后周期性地分析最高級別的存儲層中各數(shù)據(jù)的I/O占用比,如果一個數(shù)據(jù)的I/O占用比大于第一閾值,則將該數(shù)據(jù)繼續(xù)存儲在最高級別的存儲層,如果一個數(shù)據(jù)的I/O占用比低于第一閾值,則將該數(shù)據(jù)存儲至最高級別以下的存儲。由此可見,通過上述過程,可以將I/O占用比較高的數(shù)據(jù)存儲在最高級別的存儲層,從而在讀取這些數(shù)據(jù)時,縮短讀取時間,而將I/O占用比較高的數(shù)據(jù)存儲在最高級別以下的存儲層,從而節(jié)約最高級別的存儲層的存儲空間,很顯然,該裝置實(shí)現(xiàn)了數(shù)據(jù)的動態(tài)存儲,更加合理。
以上對本發(fā)明所提供的數(shù)據(jù)存儲方法及裝置進(jìn)行了詳細(xì)介紹。說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。