本申請涉及計算機技術領域,尤其涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術:
隨著網(wǎng)絡技術的不斷發(fā)展,數(shù)據(jù)的安全性已經(jīng)越來越被人們所重視,為了保證存儲的數(shù)據(jù)的安全性,通??蓪⑿枰鎯Φ綌?shù)據(jù)庫中的數(shù)據(jù)進行亂序存儲。
例如,為了保證用來校驗登錄用戶的驗證碼,不被除該登錄用戶以外的人獲知,因此,可采用隨機碼作為驗證碼,在現(xiàn)有技術中,生成隨機碼的方式大致分為兩種方式。第一種生成方式為:使用隨機碼生成器直接生成隨機碼。第二種生成方式為:預先隨機生成隨機碼,并將這些隨機碼在內(nèi)存中進行亂序處理,將亂序處理后的各隨機碼存儲到數(shù)據(jù)庫中,后續(xù),在需要使用驗證碼時,直接從數(shù)據(jù)庫按隨機碼的存儲順序,取出隨機碼。即,上述第二種生成方式就是基于亂序存儲的生成方式。
具體的,在第二種方式中,對預先生成的隨機碼進行亂序處理時,通常會將預先生成的各隨機碼添加到一個數(shù)據(jù)文件中,再將包含各隨機碼的數(shù)據(jù)文件在內(nèi)存中進行亂序處理。
但是,在實際應用中,針對第二種生成方式,由于內(nèi)存的空間是有限的,不可能無限的擴大,當要進行亂序處理的上述數(shù)據(jù)文件的數(shù)據(jù)量超過內(nèi)存空間容量時,則無法對該數(shù)據(jù)文件進行亂序處理。
技術實現(xiàn)要素:
本申請實施例提供一種數(shù)據(jù)存儲方法及裝置,用以解決現(xiàn)有技術中當要進行亂序處理的包含隨機碼的數(shù)據(jù)文件的數(shù)據(jù)量超過內(nèi)存空間容量時,則無法對 該數(shù)據(jù)文件進行亂序處理的問題。
本申請實施例提供的一種數(shù)據(jù)存儲方法,所述方法包括:
服務器獲取數(shù)據(jù)文件;
將所述數(shù)據(jù)文件拆分成至少兩個子文件,其中,每個子文件的數(shù)據(jù)量均不大于所述服務器的內(nèi)存空間容量;
對拆分后的每個子文件分別進行亂序處理;
將亂序處理后的每個子文件存儲到數(shù)據(jù)庫中。
本申請實施例提供的一種數(shù)據(jù)存儲裝置,所述裝置包括:
拆分模塊,用于將所述數(shù)據(jù)文件拆分成至少兩個子文件,其中,每個子文件的數(shù)據(jù)量均不大于所述裝置的內(nèi)存空間容量;
處理模塊,用于對拆分后的每個子文件分別進行亂序處理;
存儲模塊,用于將亂序處理后的每個子文件存儲到數(shù)據(jù)庫中。
本申請實施例提供一種數(shù)據(jù)存儲方法及裝置,該方法由服務器獲取數(shù)據(jù)文件,并將該數(shù)據(jù)文件拆分成至少兩個子文件,其中,每個子文件的數(shù)據(jù)量均不大于該服務器的內(nèi)存空間容量,對拆分后的每個子文件分別進行亂序處理,將亂序處理后的每個子文件存儲到數(shù)據(jù)庫中。通過上述方法,即使進行亂序處理的包含隨機碼的數(shù)據(jù)文件的數(shù)據(jù)量超過內(nèi)存空間容量時,也可將數(shù)據(jù)文件進行拆分,并對拆分后的子文件進行亂序,最后存儲到數(shù)據(jù)庫中。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
圖1為本申請實施例提供的數(shù)據(jù)存儲過程示意圖;
圖2為本申請實施例提供的數(shù)據(jù)存儲裝置結構示意圖。
具體實施方式
為使本申請的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請實施例提供的數(shù)據(jù)存儲過程,具體包括以下步驟:
s101:服務器獲取數(shù)據(jù)文件。
在實際應用中,為了保證數(shù)據(jù)的安全性,在將數(shù)據(jù)存儲到數(shù)據(jù)庫之前,需要對數(shù)據(jù)進行亂序處理。而在對數(shù)據(jù)進行亂序處理時,通常會將數(shù)據(jù)添加到一個數(shù)據(jù)文件中,再將包含數(shù)據(jù)的數(shù)據(jù)文件在內(nèi)存中進行亂序處理,如,對預先生成的隨機碼進行亂序處理時,通常將預先生成的各隨機碼添加到一個數(shù)據(jù)文件中,再將包含各隨機碼的數(shù)據(jù)文件在內(nèi)存中進行亂序。
因此,本申請中,在將數(shù)據(jù)亂序存儲到數(shù)據(jù)庫的整個過程中,首先,服務器需要獲取數(shù)據(jù)文件,所述數(shù)據(jù)文件中包含要進行亂序存儲的數(shù)據(jù),所述數(shù)據(jù)可以是任何數(shù)據(jù),如,隨機碼等。
例如,假設服務器為用戶提供口令紅包的業(yè)務,服務器在生成向其他用戶發(fā)送的口令紅包的同時,可自動為生成的口令紅包附加一個隨機碼,其他用戶需要輸入口令紅包中的隨機碼才可以獲取口令紅包中的金額,因此,服務器需要預先將進行亂序處理的大量隨機碼存儲到數(shù)據(jù)庫中。
服務器在將進行亂序處理的大量隨機碼存儲到數(shù)據(jù)庫的過程中,首先,服務器需要獲取預先生成包含大量隨機碼的數(shù)據(jù)文件,為了方便后續(xù)能夠闡述本申請中的方案,因此,在該例子中,假設數(shù)據(jù)文件中所包含的隨機碼由前向后為:數(shù)字1~9。
s102:將所述數(shù)據(jù)文件拆分成至少兩個子文件,其中,每個子文件的數(shù)據(jù)量均不大于所述服務器的內(nèi)存空間容量。
由于整個對數(shù)據(jù)文件進行亂序處理的過程是在服務器的內(nèi)存中進行的,而服務器的內(nèi)存是有限的,這也導致了有可能出現(xiàn)獲取到的整個數(shù)據(jù)文件的數(shù)據(jù)量超過服務器的內(nèi)存空間容量,從而無法將整個數(shù)據(jù)文件一次性放到內(nèi)存中,因此,在本申請中,可以采用將數(shù)據(jù)文件拆分成至少兩個子文件的方式,使得每個子文件的數(shù)據(jù)量均不大于服務器的內(nèi)存空間容量,后續(xù),可對每個子文件分別進行亂序處理。
在此需要說明的是,在拆分成至少兩個子文件時,每個子文件的數(shù)據(jù)量可能相等,也可能不等,只要每個子文件的數(shù)據(jù)量均不大于服務器的內(nèi)存空間容量即可。
考慮到在實際應用中,為了盡可能多的利用服務器的內(nèi)存空間容量,因此,在本申請中,在將數(shù)據(jù)文件拆分成至少兩個子文件時,可以采用以下方式來進行拆分:將該數(shù)據(jù)文件拆分成包含的數(shù)據(jù)量相同的至少兩個子文件,其中,每個子文件的數(shù)據(jù)量均等于服務器的內(nèi)存空間容量。
延續(xù)上例,假設服務器的內(nèi)存空間容量只能一次性對3個數(shù)字字符數(shù)據(jù)進行處理,服務器采用的拆分方式為:將數(shù)據(jù)文件拆分成包含的數(shù)據(jù)量相同,且均等于服務器的內(nèi)存空間容量的至少兩個子文件,因此,服務器在獲取到預先生成包含數(shù)字1~9的數(shù)據(jù)文件后,直接將該數(shù)據(jù)文件拆分成包含數(shù)字1到數(shù)字3的子文件1、包含數(shù)字4到數(shù)字6的子文件2、包含數(shù)字7到數(shù)字9的子文件3。
s103:對拆分后的每個子文件分別進行亂序處理。
在本申請實施例中,服務器在將數(shù)據(jù)文件拆分成至少兩個子文件后,分別對每個子文件進行亂序處理。
進一步的,本申請?zhí)峁┝艘环N具體的亂序處理方式:
針對每個子文件,將該子文件中的數(shù)據(jù)進行分組,將分組后的數(shù)據(jù)組進行排序,按排序先后順序,依次針對每個數(shù)據(jù)組,從該數(shù)據(jù)組后的各數(shù)據(jù)組中隨機抽取出一個數(shù)據(jù)組,作為調(diào)換組,并將調(diào)換組與該數(shù)據(jù)組在該子文件中的排 序位置進行互換。其中,一個數(shù)據(jù)組可包含多個數(shù)據(jù)(如,567),也可只包含一個數(shù)據(jù)(如,3)。
另外,基于上述本申請?zhí)峁┑木唧w的亂序處理方式,本申請還提供了實現(xiàn)該亂序處理方式的代碼:
在此需要說明的是,以上提到的亂序處理的方式并不是唯一的,只要能夠讓數(shù)據(jù)文件中的數(shù)據(jù)在排序時不再按照某一有規(guī)律的順序排序,而是隨機排序即可,在此不再一一贅述。
延續(xù)上例,假設采用步驟s103中涉及到的亂序處理方式,因此,服務器將子文件1中的每個數(shù)字字符單獨作為一個數(shù)據(jù)組,即,將子文件1中的數(shù)字字符1~3分別作為數(shù)據(jù)組1~3,假設當前該子文件中各數(shù)據(jù)組的排序為:數(shù)據(jù)組1、數(shù)據(jù)組2、數(shù)據(jù)組3,因此,服務器按照排序先后順序,針對處于最前端位置的數(shù)據(jù)組1,從數(shù)據(jù)組1后面的數(shù)據(jù)組2、數(shù)據(jù)組3中隨機抽取一個數(shù)據(jù)組,假設隨機抽取的數(shù)據(jù)組為數(shù)據(jù)組3,將數(shù)據(jù)組3作為調(diào)換組,并且將數(shù)據(jù)組3與數(shù)據(jù)組1在子文件1中的排序位置進行互換,即,此時該子文件1中各數(shù)據(jù)組的排序為:數(shù)據(jù)組3、數(shù)據(jù)組2、數(shù)據(jù)組1。再針對中間位置的數(shù)據(jù)組2,將數(shù)據(jù)組2后面的數(shù)據(jù)組1作為調(diào)換組,并且將數(shù)據(jù)組2與數(shù)據(jù)組1在子文件1中的排序位置進行互換,即,此時該子文件1中各數(shù)據(jù)組的排序為:數(shù)據(jù)組 3、數(shù)據(jù)組1、數(shù)據(jù)組2,最終得到的亂序結果為:312。類似的,子文件2和子文件3也通過同種方式進行亂序,分別得到的亂序結果為:564和978。
s104:將亂序處理后的每個子文件存儲到數(shù)據(jù)庫中。
繼續(xù)延用上例,服務器在將子文件1、子文件2、子文件3分別進行亂序處理后,可以直接將子文件1、子文件2、子文件3存儲到的數(shù)據(jù)庫中。
通過上述方法,即使進行亂序處理的包含隨機碼的數(shù)據(jù)文件的數(shù)據(jù)量超過內(nèi)存空間容量時,也可將數(shù)據(jù)文件進行拆分,并對拆分后的子文件進行亂序,最后存儲到數(shù)據(jù)庫中。
但是,考慮到實際應用中,直接將每個子文件存儲到的數(shù)據(jù)庫中,會導致亂序的隨機性降低,也就是說,每個子文件中包含的數(shù)據(jù)只是在該子文件所包含的數(shù)據(jù)范圍之內(nèi)進行了亂序,即使子文件中包含的數(shù)據(jù)進行亂序,而子文件中包含的數(shù)據(jù)的數(shù)據(jù)范圍依然沒變,在該子文件中不會出現(xiàn)其他子文件中包含的數(shù)據(jù),導致隨機性的降低,如,將數(shù)字1到數(shù)字9000分別拆分成包含數(shù)字1到數(shù)字3000的子文件1、包含數(shù)字3001到數(shù)字6000的子文件2、包含數(shù)字6001到數(shù)字9000的子文件3,子文件1即使進行了亂序處理,但是子文件1中包含的數(shù)據(jù)的數(shù)據(jù)范圍依然是[1,3000],在子文件1中取到的數(shù)字只能是[1,3000],不會出現(xiàn)[3001,9000]中的任何數(shù)據(jù)。
為了提高進行亂序處理后數(shù)據(jù)的隨機性,因此,在本申請中,可以將亂序處理后的各子文件合并成亂序文件,通過合并的過程,將各子文件包含的數(shù)據(jù)再次進行亂序,這樣合并后的亂序文件融合了所有子文件包含的數(shù)據(jù)的數(shù)據(jù)范圍,如,將上例中的子文件1、子文件2、子文件3進行合并后,合并后的亂序文件包含的數(shù)據(jù)的數(shù)據(jù)范圍為[1,9000],也就是說,從亂序文件中可以取到[1,9000]中的任何一個數(shù)字,提高了亂序處理后數(shù)據(jù)的隨機性。
進一步的,對于上述提到的將亂序處理后的各子文件合并成亂序文件,本申請?zhí)峁┝艘环N具體的實施方式,具體如下:
從亂序處理后的每個子文件中,隨機確定出任意一個子文件,并提取出隨 機確定出的該子文件中未添加到亂序文件、且排序位置最前的數(shù)據(jù),將提取出的數(shù)據(jù)添加到亂序文件中,直至將每個子文件中的所有數(shù)據(jù)添加到亂序文件中為止。
延續(xù)步驟s103的例子,假設將亂序處理后的子文件1~3合并成亂序文件,采用上述提到的實施方式,服務器從亂序處理后的子文件1~3中,隨機確定出任意一個子文件,假設確定出的子文件為子文件1,則提取出子文件1中未添加到亂序文件b的數(shù)據(jù)(即,312)、且排序位置最前的數(shù)據(jù),即,數(shù)字3,并將提取出來的數(shù)據(jù)添加到亂序文件b中,即,3;
繼續(xù)從亂序處理后的子文件1~3中,隨機確定出任意一個子文件,假設確定出的子文件為子文件3,則提取出子文件3中未添加到亂序文件b的數(shù)據(jù)(即,978)、且排序位置最前的數(shù)據(jù),即,數(shù)字9,并將提取出來的數(shù)據(jù)添加到亂序文件b中,即,39;
繼續(xù)從亂序處理后的子文件1~3中,隨機確定出任意一個子文件,假設確定出的子文件為子文件1,則提取出子文件1中未添加到亂序文件b的數(shù)據(jù)(即,12)、且排序位置最前的數(shù)據(jù),即,數(shù)字1,并將提取出來的數(shù)據(jù)添加到亂序文件b中,即,391;
直到所有子文件中的所有數(shù)據(jù)均已添加到亂序文件中,此時,得到的最終亂序文件為:391675248。
在此需要說明的是,以上提到的將亂序處理后的各子文件合并成亂序文件的方式并不是唯一的,只要能夠在將各子文件合并成亂序文件時,再次打亂各子文件中數(shù)據(jù)之間的順序即可,在此不再一一贅述。
進一步的,服務器在將亂序處理后的各子文件合并成亂序文件后,可按該亂序文件中各數(shù)據(jù)的排序先后順序,讀取亂序文件中的數(shù)據(jù),每當讀取的數(shù)據(jù)的數(shù)據(jù)量達到預設的數(shù)據(jù)量時,通過預先建立的線程池中處于空閑狀態(tài)的線程,將該讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中,并繼續(xù)讀取該亂序文件中的數(shù)據(jù),直至將該亂序文件中的所有數(shù)據(jù)寫入到數(shù)據(jù)庫中為止,所述預設的數(shù)據(jù)量是根據(jù)線程池 中每個線程的運行處理能力來定的,只要預設的數(shù)據(jù)量不超過線程運行處理的能力即可。
例如,假設預設的數(shù)據(jù)量為80個,線程池中的線程的數(shù)量為100個,服務器按亂序文件中各數(shù)據(jù)的排序先后順序,讀取亂序文件中的數(shù)據(jù),當讀取的數(shù)據(jù)量達到80個時,通過預先建立的包含100個線程的線程池中處于空閑狀態(tài)的線程,將該讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中,服務器繼續(xù)按排序先后順序讀取亂序文件中的數(shù)據(jù),當再次讀取的數(shù)據(jù)量達到80個時,再通過空閑狀態(tài)的線程,將該再次讀取的80個數(shù)據(jù)寫入到數(shù)據(jù)庫中,直到將該亂序文件中的所有數(shù)據(jù)寫入到數(shù)據(jù)庫中為止。
另外,在本申請中,服務器也可以在按該亂序文件中各數(shù)據(jù)的排序先后順序,讀取亂序文件中的數(shù)據(jù)后,將讀取的數(shù)據(jù)添加到緩存中,每當緩存中的數(shù)據(jù)量達到預設的數(shù)據(jù)量時,通過預先建立的線程池中處于空閑狀態(tài)的線程,將緩存中的數(shù)據(jù)寫入到數(shù)據(jù)庫中,并立刻清空緩存,再繼續(xù)讀取該亂序文件中的數(shù)據(jù)直至將該亂序文件中的所有數(shù)據(jù)寫入到數(shù)據(jù)庫中為止。
考慮到實際應用中,有可能出現(xiàn)服務器在將數(shù)據(jù)寫入到數(shù)據(jù)庫的過程中,數(shù)據(jù)庫突然壞掉或者停止運行的情況,因此,在本申請中,服務器可實時監(jiān)測線程與數(shù)據(jù)庫的運行狀況,當監(jiān)測到該線程未成功將數(shù)據(jù)寫入到數(shù)據(jù)庫中時,記錄當前讀取亂序文件的數(shù)據(jù)的排序位置,作為當前位置,根據(jù)當前線程池中處于運行狀態(tài)的線程的數(shù)量以及上述提到的預設的數(shù)據(jù)量,確定出待恢復的數(shù)據(jù)的數(shù)據(jù)量(這是由于服務器并不知道是哪個數(shù)據(jù)成功寫入到數(shù)據(jù)庫中,哪個數(shù)據(jù)沒有成功寫入到數(shù)據(jù)庫中,但是,未成功寫入到數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)量最多不會超過服務器將運行狀態(tài)的線程的數(shù)量乘以預設的數(shù)據(jù)量),根據(jù)確定出的待恢復的數(shù)據(jù)的數(shù)據(jù)量以及記錄下的當前位置,確定當前位置與該待恢復的數(shù)據(jù)的數(shù)據(jù)量的差值,作為恢復位置,在該亂序文件中,按該亂序文件中各數(shù)據(jù)的排序先后順序,從排序位置為恢復位置處,重新開始讀取數(shù)據(jù),并通過該線程池中處于空閑狀態(tài)的線程,將讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中。其中,根據(jù) 當前線程池中處于運行狀態(tài)的線程的數(shù)量以及上述提到的預設的數(shù)據(jù)量,確定出待恢復的數(shù)據(jù)的數(shù)據(jù)量的方式具體可以為:直接將當前線程池中處于運行狀態(tài)的線程的數(shù)量乘以上述提到的預設的數(shù)據(jù)量,將計算出的結果確定為待恢復的數(shù)據(jù)的數(shù)據(jù)量。當然,也可以是,直接將當前線程池中所有線程的數(shù)量乘以上述提到的預設的數(shù)據(jù)量,將計算出的結果確定為待恢復的數(shù)據(jù)的數(shù)據(jù)量。
例如,服務器每讀取到數(shù)據(jù)的數(shù)據(jù)量達到100個時,通過線程池中處于空閑狀態(tài)的線程將100個數(shù)據(jù)寫入到數(shù)據(jù)庫中,假設服務器監(jiān)測到數(shù)據(jù)庫突然停止運轉,記錄下當前讀取亂序文件b的數(shù)據(jù)的排序位置3000,將排序位置3000作為當前位置,假設處于運行狀態(tài)的線程有3個,服務器根據(jù)當前線程池中處于運行狀態(tài)的線程的數(shù)量(即,3個)以及預設的數(shù)據(jù)量(即,100個),確定出待恢復的數(shù)據(jù)的數(shù)據(jù)量為300,根據(jù)確定出的待恢復的數(shù)據(jù)的數(shù)據(jù)量300以及記錄下的當前位置3000,確定當前位置與該待恢復的數(shù)據(jù)的數(shù)據(jù)量的差值為2700,將2700作為恢復位置,從排序位置為2700處,重新開始讀取數(shù)據(jù),并通過該線程池中處于空閑狀態(tài)的線程,將讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中。
在此需要說明的是,上述過程中是由于數(shù)據(jù)庫出現(xiàn)了問題,導致未成功將數(shù)據(jù)寫入到數(shù)據(jù)庫中的,但是,實際應用中,線程池中的某個線程也可能在運行的過程中出現(xiàn)問題,也會導致未成功將數(shù)據(jù)寫入到數(shù)據(jù)庫中,因此,當某個或幾個線程出現(xiàn)問題時,也可執(zhí)行上述重新寫入數(shù)據(jù)的過程。
最后,服務器在將亂序文件中的所有數(shù)據(jù)都寫入到數(shù)據(jù)庫中后,為了節(jié)省服務器的資源,可以將上述涉及到的亂序處理的各子文件以及亂序文件進行清除。
以上為本申請實施例提供的數(shù)據(jù)存儲方法,基于同樣的思路,本申請實施例還提供一種數(shù)據(jù)存儲裝置,如圖2所示。
圖2為本申請實施例提供的數(shù)據(jù)存儲裝置結構示意圖,所述裝置包括:
獲取模塊201,用于獲取數(shù)據(jù)文件;
拆分模塊202,用于將所述數(shù)據(jù)文件拆分成至少兩個子文件,其中,每個 子文件的數(shù)據(jù)量均不大于所述裝置的內(nèi)存空間容量;
處理模塊203,用于對拆分后的每個子文件分別進行亂序處理;
存儲模塊204,用于將亂序處理后的每個子文件存儲到數(shù)據(jù)庫中。
所述拆分模塊202具體用于,將所述數(shù)據(jù)文件拆分成包含的數(shù)據(jù)量相同的至少兩個子文件。
所述處理模塊203具體用于,針對每個子文件,將該子文件中的數(shù)據(jù)進行分組,將分組后的數(shù)據(jù)組進行排序,按排序先后順序,依次針對每個數(shù)據(jù)組,從該數(shù)據(jù)組后的各數(shù)據(jù)組中隨機抽取出一個數(shù)據(jù)組,作為調(diào)換組,并將調(diào)換組與該數(shù)據(jù)組在該子文件中的排序位置進行互換。
所述存儲模塊204具體用于,將亂序處理后的各子文件合并成亂序文件,按所述亂序文件中各數(shù)據(jù)的排序先后順序,讀取所述亂序文件中的數(shù)據(jù),每當讀取的數(shù)據(jù)的數(shù)據(jù)量達到預設的數(shù)據(jù)量時,通過預先建立的線程池中處于空閑狀態(tài)的線程,將所述讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中,并繼續(xù)讀取所述亂序文件中的數(shù)據(jù),直至將所述亂序文件中的所有數(shù)據(jù)寫入到數(shù)據(jù)庫中為止。
所述存儲模塊204具體用于,從亂序處理后的每個子文件中,隨機確定出任意一個子文件,并提取出隨機確定出的該子文件中未添加到亂序文件、且排序位置最前的數(shù)據(jù),將提取出的數(shù)據(jù)添加到亂序文件中,直至將每個子文件中的所有數(shù)據(jù)添加到亂序文件中為止。
所述存儲模塊204還用于,針對每個線程,監(jiān)測該線程是否成功將數(shù)據(jù)寫入到數(shù)據(jù)庫中,當監(jiān)測到該線程未成功將數(shù)據(jù)寫入到數(shù)據(jù)庫中時,記錄當前讀取亂序文件中的數(shù)據(jù)的排序位置,作為當前位置,根據(jù)當前線程池中處于運行狀態(tài)的線程的數(shù)量以及所述預設的數(shù)據(jù)量,確定出待恢復的數(shù)據(jù)的數(shù)據(jù)量,根據(jù)所述待恢復的數(shù)據(jù)的數(shù)據(jù)量以及所述當前位置,確定當前位置與所述待恢復的數(shù)據(jù)的數(shù)據(jù)量的差值,作為恢復位置,在所述亂序文件中,按所述亂序文件中各數(shù)據(jù)的排序先后順序,從排序位置為所述恢復位置處,重新開始讀取數(shù)據(jù),并通過所述線程池中處于空閑狀態(tài)的線程,將讀取的數(shù)據(jù)寫入到數(shù)據(jù)庫中。
所述裝置還包括:
清除模塊205,用于在所述存儲模塊將所述亂序文件中的所有數(shù)據(jù)寫入到數(shù)據(jù)庫中之后,對所述亂序處理的各子文件以及所述亂序文件進行清除。
在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和 硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內(nèi)。