本申請(qǐng)涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)集的亂序處理方法和裝置。
背景技術(shù):
在自動(dòng)題庫(kù)、對(duì)稱式密碼設(shè)計(jì)、網(wǎng)絡(luò)信息安全模擬檢測(cè)等系統(tǒng)中,都需要對(duì)大型數(shù)據(jù)集進(jìn)行亂序處理。亂序處理是對(duì)數(shù)據(jù)集中的記錄進(jìn)行重新排列,并且使得重新排列后的順序與原先的順序盡可能不相關(guān)聯(lián)。
在對(duì)數(shù)據(jù)集進(jìn)行重新排列時(shí),需要將涉及到記錄讀入內(nèi)存后再按照預(yù)定的算法確定其新的順序。由于任何計(jì)算設(shè)備的硬件資源都有存在限制,當(dāng)數(shù)據(jù)集的規(guī)模增大到一定程度時(shí),對(duì)整個(gè)數(shù)據(jù)集重新排序所需要的時(shí)間往往無(wú)法滿足實(shí)際應(yīng)用的需求。
現(xiàn)有技術(shù)中,將大規(guī)模的數(shù)據(jù)集拆分成若干個(gè)小文件,每個(gè)文件中包括部分記錄,針對(duì)每個(gè)文件中的記錄采用亂序算法重新排列順序。這樣,實(shí)際上只實(shí)現(xiàn)了數(shù)據(jù)集的局部亂序而不是全局亂序,亂序后的數(shù)據(jù)集仍舊有特征可循。例如,一個(gè)包括100萬(wàn)條順序排列的密碼的數(shù)據(jù)集,每個(gè)文件中包括100個(gè)連續(xù)的密碼,亂序后由于系統(tǒng)在一段時(shí)間內(nèi)應(yīng)用的都是同一個(gè)文件中的密碼,則在這段時(shí)間內(nèi)可以在100個(gè)值而不是100萬(wàn)個(gè)值中猜測(cè)可能出現(xiàn)的密碼,也就是說(shuō),局部亂序極大的降低了系統(tǒng)的安全性。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)集的亂序處理方法,包括:
在一定的取值范圍內(nèi)為初始數(shù)據(jù)集中的每條記錄生成一個(gè)隨機(jī)數(shù);
將每條記錄根據(jù)其隨機(jī)數(shù)劃分到子數(shù)據(jù)集中;每個(gè)子數(shù)據(jù)集對(duì)應(yīng)于不同的數(shù)值區(qū)間,所有子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間之和為隨機(jī)數(shù)的取值范圍;
在每個(gè)子數(shù)據(jù)集中按照隨機(jī)數(shù)對(duì)所有記錄進(jìn)行排序,根據(jù)對(duì)應(yīng)的數(shù)值區(qū)間的順序?qū)⒆訑?shù)據(jù)集合成為亂序數(shù)據(jù)集。
本申請(qǐng)還提供了一種數(shù)據(jù)集的亂序處理裝置,包括:
隨機(jī)數(shù)生成單元,用于在一定的取值范圍內(nèi)為初始數(shù)據(jù)集中的每條記錄生成一個(gè)隨機(jī)數(shù);
子數(shù)據(jù)集劃分單元,用于將每條記錄根據(jù)其隨機(jī)數(shù)劃分到子數(shù)據(jù)集中;每個(gè)子數(shù)據(jù)集對(duì)應(yīng)于不同的數(shù)值區(qū)間,所有子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間之和為隨機(jī)數(shù)的取值范圍;
排序單元,用于在每個(gè)子數(shù)據(jù)集中按照隨機(jī)數(shù)對(duì)所有記錄進(jìn)行排序,根據(jù)對(duì)應(yīng)的數(shù)值區(qū)間的順序?qū)⒆訑?shù)據(jù)集合成為亂序數(shù)據(jù)集。
由以上技術(shù)方案可見(jiàn),本申請(qǐng)的實(shí)施例中為每條記錄生成隨機(jī)數(shù),按照隨機(jī)數(shù)所屬的數(shù)值區(qū)間將記錄劃分到子數(shù)據(jù)集中,通過(guò)對(duì)子數(shù)據(jù)集中的記錄和子數(shù)據(jù)集分別進(jìn)行排序,利用有限的硬件資源即可高效的實(shí)現(xiàn)大數(shù)據(jù)集的全局亂序,達(dá)到更好的亂序效果,在應(yīng)用于密碼亂序時(shí)可以極大的提高安全性。
附圖說(shuō)明
圖1是本申請(qǐng)實(shí)施例中一種數(shù)據(jù)集的亂序方法的流程圖;
圖2是本申請(qǐng)實(shí)施例中一種劃分子數(shù)據(jù)集的實(shí)現(xiàn)方式的流程圖;
圖3是本申請(qǐng)應(yīng)用示例中對(duì)初始文件進(jìn)行亂序的處理流程圖;
圖4是本申請(qǐng)實(shí)施例所應(yīng)用的設(shè)備的一種硬件結(jié)構(gòu)圖;
圖5是本申請(qǐng)實(shí)施例中一種數(shù)據(jù)集的亂序裝置的邏輯結(jié)構(gòu)圖。
具體實(shí)施方式
本申請(qǐng)的實(shí)施例提出一種新的數(shù)據(jù)集的亂序處理方法,通過(guò)為初始數(shù)據(jù)集中的每條記錄生成隨機(jī)數(shù)并對(duì)隨機(jī)數(shù)進(jìn)行全局排序的方式實(shí)現(xiàn)全局亂序,并通過(guò)將全局排序拆分為兩次排序,即不同數(shù)值區(qū)間內(nèi)記錄的排序和數(shù)值區(qū)間的排序,來(lái)降低對(duì)硬件資源的占用并提高處理速度,以解決現(xiàn)有技術(shù)中存在的問(wèn)題。本申請(qǐng)的實(shí)施例可以應(yīng)用在任何具有計(jì)算功能的設(shè)備上,其流程如圖1所示。
步驟110,在一定的取值范圍內(nèi)為初始數(shù)據(jù)集中的每條記錄生成一個(gè)隨機(jī)數(shù)。
本實(shí)施例中,初始數(shù)據(jù)集可以是包含若干記錄的文件,可以是數(shù)據(jù)庫(kù)中的一張表;記錄是進(jìn)行亂序處理的單位(即針對(duì)記錄進(jìn)行重新排列),每條記錄可以是一個(gè)數(shù)字,可以是一個(gè)字符串;可以是包括多個(gè)不同類型字段的一行數(shù)據(jù),也可以是包括多個(gè)值的數(shù)據(jù)序列。記錄可以是口令、密碼、測(cè)驗(yàn)題目等等。本實(shí)施例中對(duì)初始數(shù)據(jù)集和記錄的具體形式都不做限定。
對(duì)需要進(jìn)行亂序處理的初始數(shù)據(jù)集,在一定的取值范圍內(nèi)為其中的每條記錄生成一個(gè)隨機(jī)數(shù)。實(shí)際應(yīng)用中,可以根據(jù)具體場(chǎng)景的需求、所處的運(yùn)行環(huán)境等因素來(lái)確定隨機(jī)數(shù)的取值范圍。不論取值范圍為多大,各條記錄的隨機(jī)數(shù)在理論上總是存在重復(fù)(即隨機(jī)數(shù)數(shù)值相等)的可能性,本實(shí)施例中隨機(jī)數(shù)用來(lái)對(duì)所有記錄進(jìn)行全局排序,重復(fù)的隨機(jī)數(shù)越少,亂序的效果就越好。在本實(shí)施例中,隨機(jī)數(shù)的取值范圍可以可以大于、小于或等于初始數(shù)據(jù)集中記錄的總條數(shù),但較大的取值范圍能夠達(dá)到更好的離散性從而提高亂序的效果,而較大的取值范圍也往往需要更多的硬件資源來(lái)支持。
在一定范圍內(nèi)生成隨機(jī)數(shù)的方法可以參照現(xiàn)有技術(shù)中的各種隨機(jī)數(shù)生成算法,不再贅述。
步驟120,將每條記錄根據(jù)其隨機(jī)數(shù)劃分到子數(shù)據(jù)集中;每個(gè)子數(shù)據(jù)集對(duì)應(yīng)于不同的數(shù)值區(qū)間,所有子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間之和為隨機(jī)數(shù)的取值 范圍。
將隨機(jī)數(shù)的取值范圍分成若干個(gè)數(shù)值區(qū)間,每個(gè)數(shù)值區(qū)間對(duì)應(yīng)于一個(gè)子數(shù)據(jù)集,每個(gè)子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間不相重疊。各個(gè)子數(shù)據(jù)集數(shù)值區(qū)間的大小可以相同,也可以不同。對(duì)每條記錄,按照這條記錄的隨機(jī)數(shù)所屬的數(shù)值區(qū)間,把該記錄劃分到對(duì)應(yīng)的子數(shù)據(jù)集中。
可以采用多種不同的方式來(lái)將初始數(shù)據(jù)集中的記錄劃分到子數(shù)據(jù)集中。例如,可以逐條處理初始數(shù)據(jù)集中的記錄,按照記錄的隨機(jī)數(shù)把記錄移動(dòng)到對(duì)應(yīng)的子數(shù)據(jù)集中,直至初始數(shù)據(jù)集為空;再如,可以針對(duì)一個(gè)子數(shù)據(jù)集的數(shù)值區(qū)間掃描初始數(shù)據(jù)集中的所有記錄,將隨機(jī)數(shù)處于該數(shù)值區(qū)間內(nèi)的記錄寫入到該子數(shù)據(jù)集中,直到對(duì)所有的子數(shù)據(jù)集執(zhí)行上述操作。
在一種實(shí)現(xiàn)方式中,每批次將初始數(shù)據(jù)集中隨機(jī)數(shù)屬于一定處理值域的記錄劃分到對(duì)應(yīng)的子數(shù)據(jù)集中,其流程如圖2所示。需要說(shuō)明的是,每批次的隨機(jī)數(shù)處理值域可以與子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間有關(guān),也可以與其無(wú)關(guān);換言之,可以根據(jù)子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間來(lái)設(shè)置隨機(jī)數(shù)處理值域(如一批次處理數(shù)個(gè)子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間,或數(shù)個(gè)批次處理一個(gè)子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間),也可以由其他因素確定各批次的處理值域而不考慮子數(shù)據(jù)集的數(shù)值區(qū)間。
步驟210,將初始數(shù)據(jù)集置為源數(shù)據(jù)集。
劃分記錄的流程開(kāi)始時(shí),以全部的記錄,即初始數(shù)據(jù)集作為源數(shù)據(jù)集。
步驟220,確定本批次的隨機(jī)數(shù)處理值域。
每批次處理的隨機(jī)數(shù)處理值域的大小可以相同,也可以不同??梢圆捎萌我夥绞絹?lái)在隨機(jī)數(shù)的取值范圍內(nèi)確定每批次的處理值域,本實(shí)施例中不做限定,各次處理值域的和能夠覆蓋隨機(jī)數(shù)的取值范圍即可。
例如,可以以固定增量的方式來(lái)獲得每批次的處理值域,設(shè)隨機(jī)數(shù)的取值范圍為0到99999,固定增量為10000時(shí),第一批次的處理值域?yàn)?到9999,第二批次為10000到19999,以此類推,直到第十批次為90000到99999。
步驟230,讀入源數(shù)據(jù)集中的一條記錄,如果該記錄的隨機(jī)數(shù)在本批次 的處理值域內(nèi),則根據(jù)該記錄的隨機(jī)數(shù)將該記錄及其隨機(jī)數(shù)寫入子數(shù)據(jù)集中;否則將該記錄及其隨機(jī)數(shù)寫入未處理數(shù)據(jù)集中;重復(fù)本步驟直到源數(shù)據(jù)集的每條記錄處理完畢。
如果源數(shù)據(jù)集中的記錄的隨機(jī)數(shù)在本批次的處理值域內(nèi),則按照其隨機(jī)數(shù)所處的數(shù)值區(qū)間,將該記錄及其隨機(jī)數(shù)寫入到對(duì)應(yīng)于該數(shù)值區(qū)間的子數(shù)據(jù)集中。如果記錄的隨機(jī)數(shù)不在本批次的處理值域內(nèi),則本批次不對(duì)該記錄進(jìn)行子數(shù)據(jù)集的劃分,將該記錄及其隨機(jī)數(shù)寫入未處理數(shù)據(jù)集中,留待后續(xù)的批次再行劃分。
對(duì)源數(shù)據(jù)集中的每條記錄執(zhí)行本步驟,執(zhí)行完畢時(shí),本批次劃分進(jìn)行完畢,隨機(jī)數(shù)在本批次處理值域內(nèi)的所有記錄都被劃分到子數(shù)據(jù)集中,而尚未進(jìn)行劃分的所有記錄都在未處理數(shù)據(jù)集中。
步驟240,判斷未處理數(shù)據(jù)集是否為空,如果不為空,將未處理數(shù)據(jù)集置為源數(shù)據(jù)集后轉(zhuǎn)步驟220,進(jìn)行下一批次的劃分;如果為空則劃分流程結(jié)束。
在一個(gè)批次的劃分進(jìn)行完畢后,如果未處理數(shù)據(jù)集為空,說(shuō)明所有的初始數(shù)據(jù)集中的記錄已劃分完畢,劃分流程結(jié)束。如果未處理數(shù)據(jù)集不為空,將未處理數(shù)據(jù)集置為源數(shù)據(jù)集后轉(zhuǎn)步驟220,在下一個(gè)隨機(jī)數(shù)處理值域繼續(xù)進(jìn)行記錄的劃分。將未處理數(shù)據(jù)集置為源數(shù)據(jù)集后,未處理數(shù)據(jù)集為空。
需要說(shuō)明的是,未處理數(shù)據(jù)集為空包括兩種情形,第一種是不存在未處理數(shù)據(jù)集,第二種是未處理數(shù)據(jù)集存在但其中的記錄條數(shù)為零。對(duì)第一種情形,將記錄寫入未處理數(shù)據(jù)集時(shí)可能需要先創(chuàng)建未處理數(shù)據(jù)集的文件或者表項(xiàng)等。例如,對(duì)文件形式的未處理數(shù)據(jù)集,未處理數(shù)據(jù)集為空可能表現(xiàn)為該文件存在但內(nèi)容為空,也可能表現(xiàn)為該文件不存在;類似的,將記錄寫入未處理數(shù)據(jù)集時(shí)可能是直接在文件中增加記錄,也可能是先創(chuàng)建文件再增加記錄。
當(dāng)子數(shù)據(jù)集為文件時(shí),可以根據(jù)子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間來(lái)為子文件命名,從而簡(jiǎn)化劃分流程的實(shí)現(xiàn)。例如,設(shè)子數(shù)據(jù)集包括文件名為從0到K的 (K+1)個(gè)子文件(K為自然數(shù)),每個(gè)子文件對(duì)應(yīng)的數(shù)值區(qū)間的大小相同,都為N(N為自然數(shù)),設(shè)隨機(jī)數(shù)的取值范圍為從0到L(L為自然數(shù),且L不大于N乘以(K+1)),則文件名為m的子文件對(duì)應(yīng)的隨機(jī)數(shù)的數(shù)值區(qū)間為從m*N到(m+1)*N-1。在將記錄劃分到子文件中時(shí),記錄的隨機(jī)數(shù)除以N所得的整數(shù)商即是該記錄要寫入的子文件的文件名。
回到圖1,步驟130,在每個(gè)子數(shù)據(jù)集中按照隨機(jī)數(shù)對(duì)所有記錄進(jìn)行排序,根據(jù)對(duì)應(yīng)的數(shù)值區(qū)間的順序?qū)⒆訑?shù)據(jù)集合成為亂序數(shù)據(jù)集。
步驟120執(zhí)行完畢后,每個(gè)子數(shù)據(jù)集中包括隨機(jī)數(shù)在該子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間內(nèi)的所有記錄。為了實(shí)現(xiàn)全局亂序,需要對(duì)初始數(shù)據(jù)集中的所有記錄按照隨機(jī)數(shù)排序,本實(shí)施例中,所有記錄的排序拆分為兩個(gè)階段來(lái)進(jìn)行:對(duì)所有子數(shù)據(jù)集的排序和對(duì)每個(gè)子數(shù)據(jù)集內(nèi)記錄的排序。由于每個(gè)子數(shù)據(jù)集內(nèi)的記錄條數(shù)可以遠(yuǎn)小于初始數(shù)據(jù)集內(nèi)的記錄條數(shù),在硬件資源有限的條件下,分別進(jìn)行每個(gè)子數(shù)據(jù)集內(nèi)記錄的排序的執(zhí)行效率將遠(yuǎn)遠(yuǎn)高于對(duì)初始數(shù)據(jù)集內(nèi)記錄的排序。
可以采用不同的方式來(lái)具體實(shí)現(xiàn)這兩個(gè)階段的排序。一個(gè)例子中,按照對(duì)應(yīng)的數(shù)值區(qū)間的順序排列子數(shù)據(jù)集,將第一個(gè)子數(shù)據(jù)集作為當(dāng)前子數(shù)據(jù)集;對(duì)當(dāng)前子數(shù)據(jù)集中的所有記錄根據(jù)記錄的隨機(jī)數(shù)進(jìn)行排序,按照排序后的順序?qū)⑺凶訑?shù)據(jù)集中的記錄增加到亂序數(shù)據(jù)集中;以下一個(gè)子數(shù)據(jù)集為當(dāng)前數(shù)據(jù)集按照上個(gè)步驟進(jìn)行記錄排序和寫入亂序數(shù)據(jù)集,直到所有子數(shù)據(jù)集處理完畢。
另一個(gè)例子中,先對(duì)每個(gè)子數(shù)據(jù)集中的所有記錄按照其隨機(jī)數(shù)進(jìn)行排序,生成排序后的子數(shù)據(jù)集;再按照對(duì)應(yīng)的數(shù)值區(qū)間的順序,把所有排序后的子數(shù)據(jù)集中的記錄匯總到亂序數(shù)據(jù)集中。
本步驟中輸出的亂序數(shù)據(jù)集即為所有記錄按照隨機(jī)數(shù)進(jìn)行全局排序的數(shù)據(jù)集,即實(shí)現(xiàn)了全局亂序的數(shù)據(jù)集。
可見(jiàn),本申請(qǐng)的實(shí)施例中,為初始數(shù)據(jù)集中的每條記錄生成隨機(jī)數(shù)并按照隨機(jī)數(shù)的全局排序來(lái)確定記錄的順序,從而實(shí)現(xiàn)了所有記錄的全局亂序; 在對(duì)記錄做全局排序時(shí),將排序拆分為對(duì)對(duì)應(yīng)于隨機(jī)數(shù)所屬的數(shù)值區(qū)間的子數(shù)據(jù)集的排序、和對(duì)各個(gè)子數(shù)據(jù)集內(nèi)記錄的排序兩個(gè)階段,從而能夠利用有限的硬件資源達(dá)到大數(shù)據(jù)集的全局亂序,提高了運(yùn)行效率;對(duì)密碼或口令進(jìn)行亂序時(shí)能夠極大的增加被破解的難度,提高了安全性。
在本申請(qǐng)的一個(gè)應(yīng)用示例中,初始文件(即初始數(shù)據(jù)集)中存放了100,000,000條順序排列的口令,其格式為每行一個(gè)口令(每行一個(gè)記錄),需要將這些口令亂序后存放到List文件中,這樣,在使用這些口令時(shí),從List文件中逐行讀取,即可達(dá)到足夠的安全性。本應(yīng)用示例中,子數(shù)據(jù)集包括20個(gè)子文件,其文件名為0.txt、1.txt直到19.txt,其對(duì)應(yīng)的隨機(jī)數(shù)的數(shù)值范圍分別為(0,4,999,999]、[5,000,000,9,999,999]直到[95,000,000,100,000,000)。本應(yīng)用示例的流程如圖3所示。
步驟301,讀取初始文件,為每行記錄產(chǎn)生一個(gè)隨機(jī)數(shù),隨機(jī)數(shù)的取值范圍為(0,100,000,000)。生成的隨機(jī)數(shù)添加在每行的頭部,保存為新的文件new.txt。
步驟302,確定本批次劃分子文件時(shí)的隨機(jī)數(shù)處理值域。設(shè)每批次最多劃分10,000條記錄,則第一批次的隨機(jī)數(shù)處理值域?yàn)?0,9,999],第二批次的隨機(jī)數(shù)處理值域?yàn)閇10,000,19,999],依此類推。
步驟303,從new.txt(源文件)中讀取一行,截取行頭的隨機(jī)數(shù)。
步驟304,判斷該行的隨機(jī)數(shù)是否在本批次的處理值域內(nèi),如果在,則執(zhí)行步驟305,把該行寫入文件名為a.txt的子文件中,a等于該行的隨機(jī)數(shù)除以5,000,000的整數(shù)商,轉(zhuǎn)步驟307;如果不在,則執(zhí)行步驟306,把該行寫入未處理文件unexe.txt中。如果寫入unexe.txt時(shí),該文件尚不存在,則創(chuàng)建該文件并寫入。
步驟307,判斷是否到達(dá)源文件尾,如果到達(dá),沒(méi)有下一行的隨機(jī)數(shù)和口令可以讀取,執(zhí)行步驟308,否則轉(zhuǎn)步驟303。
步驟308,判斷是否存在未處理文件unexe.txt,如果存在,執(zhí)行步驟309,將unexe.txt重命名為new.txt,轉(zhuǎn)步驟302;如果不存在,執(zhí)行步驟310。
步驟310,按照子文件名對(duì)所有子文件進(jìn)行排序。
步驟311,按照排序讀入一個(gè)子文件,將該子文件中的數(shù)據(jù)讀入內(nèi)存,按照行頭的隨機(jī)數(shù)對(duì)所有行進(jìn)行排序,把排序后的記錄(即口令,不包括隨機(jī)數(shù))按照其排序增加到List文件中。
步驟312,判斷是否還有未處理的子文件,如果有,轉(zhuǎn)步驟311讀入下一個(gè)子文件;如果沒(méi)有,則流程結(jié)束,List文件即為按照隨機(jī)數(shù)排序的最終亂序口令文件。
與上述流程實(shí)現(xiàn)對(duì)應(yīng),本申請(qǐng)的實(shí)施例還提供了一種數(shù)據(jù)集的亂序處理裝置。該裝置應(yīng)用在具有計(jì)算功能的設(shè)備上,可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為邏輯意義上的裝置,是通過(guò)所在設(shè)備的CPU(Central Process Unit,中央處理器)將對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,除了圖4所示的CPU、內(nèi)存以及非易失性存儲(chǔ)器之外,該裝置所在的設(shè)備通常還包括用于實(shí)現(xiàn)網(wǎng)絡(luò)通信功能的板卡等其他硬件。
圖5所示為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)集的亂序處理裝置,其特征在于,包括隨機(jī)數(shù)生成單元、子數(shù)據(jù)集劃分單元和排序單元,其中:隨機(jī)數(shù)生成單元用于在一定的取值范圍內(nèi)為初始數(shù)據(jù)集中的每條記錄生成一個(gè)隨機(jī)數(shù);子數(shù)據(jù)集劃分單元用于將每條記錄根據(jù)其隨機(jī)數(shù)劃分到子數(shù)據(jù)集中;每個(gè)子數(shù)據(jù)集對(duì)應(yīng)于不同的數(shù)值區(qū)間,所有子數(shù)據(jù)集對(duì)應(yīng)的數(shù)值區(qū)間之和為隨機(jī)數(shù)的取值范圍;排序單元用于在每個(gè)子數(shù)據(jù)集中按照隨機(jī)數(shù)對(duì)所有記錄進(jìn)行排序,根據(jù)對(duì)應(yīng)的數(shù)值區(qū)間的順序?qū)⒆訑?shù)據(jù)集合成為亂序數(shù)據(jù)集。
可選的,所述子數(shù)據(jù)集劃分單元包括初始化模塊、處理值域模塊、記錄劃分模塊和循環(huán)控制模塊,其中:初始化模塊用于將初始數(shù)據(jù)集置為源數(shù)據(jù)集;處理值域模塊用于確定本批次的隨機(jī)數(shù)處理值域;記錄劃分模塊用于讀入源數(shù)據(jù)集中的一條記錄,如果該記錄的隨機(jī)數(shù)在本批次的處理值域內(nèi),則根據(jù)該記錄的隨機(jī)數(shù)將該記錄及其隨機(jī)數(shù)寫入子數(shù)據(jù)集中;否則將該記錄及其隨機(jī)數(shù)寫入未處理數(shù)據(jù)集中;重復(fù)應(yīng)用本模塊直到源數(shù)據(jù)集的每條記錄處 理完畢;循環(huán)控制模塊用于當(dāng)未處理數(shù)據(jù)集不為空時(shí),將未處理數(shù)據(jù)集置為源數(shù)據(jù)集后轉(zhuǎn)入處理值域模塊,由處理值域模塊和記錄劃分模塊進(jìn)行下一批次的處理,直到未處理數(shù)據(jù)集為空。
一種實(shí)現(xiàn)方式中,所述排序單元包括當(dāng)前子數(shù)據(jù)集模塊和增量寫入模塊,其中:當(dāng)前子數(shù)據(jù)集模塊用于按照對(duì)應(yīng)的數(shù)值區(qū)間的順序依次將一個(gè)子數(shù)據(jù)集作為當(dāng)前子數(shù)據(jù)集;增量寫入模塊用于對(duì)當(dāng)前子數(shù)據(jù)集中的所有記錄按照其隨機(jī)數(shù)進(jìn)行排序,按照排序后的順序?qū)⑺杏涗浽黾拥絹y序數(shù)據(jù)集中;重復(fù)上述應(yīng)用兩個(gè)模塊直到所有子數(shù)據(jù)集處理完畢。
另一種實(shí)現(xiàn)方式中,所述排序單元包括子數(shù)據(jù)集排序模塊和匯總模塊,其中:子數(shù)據(jù)集排序模塊用于對(duì)每個(gè)子數(shù)據(jù)集中的所有記錄按照其隨機(jī)數(shù)進(jìn)行排序,生成排序后的子數(shù)據(jù)集;匯總模塊用于按照對(duì)應(yīng)的數(shù)值區(qū)間的順序,將所有排序后的子數(shù)據(jù)集中的記錄匯總到亂序數(shù)據(jù)集中。
可選的,所述子數(shù)據(jù)集包括文件名為從0到K的(K+1)個(gè)子文件,K為自然數(shù);所述子數(shù)據(jù)集劃分單元具體用于:將記錄寫入到以其隨機(jī)數(shù)除以N所得的整數(shù)商為文件名的子文件中;N為預(yù)設(shè)的自然數(shù),且N乘以(K+1)不小于隨機(jī)數(shù)的取值范圍。
可選的,所述記錄包括口令或密碼。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序 的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。