SJlash _的值分別為3和5,那么下表1中第 2-7行,將被確定為包含查詢相關(guān)數(shù)據(jù)的哈希值。
[0072]表 1
[0074] 在實際應(yīng)用中,可選的,作為一種可實施的方式,所述方法還包括:記錄所述各個 屬性字段的映射關(guān)系、所述映射關(guān)系的啟用時間和終止時間、所述存儲單元的元信息和數(shù) 據(jù)文件的集合。
[0075] 具體來說,在日志數(shù)據(jù)不斷分片的過程中,我們不斷對日志數(shù)據(jù)進行監(jiān)控,了解各 個范圍查詢字段在各個哈希桶上,是否均勻。當(dāng)日志數(shù)據(jù)的均勻性發(fā)生較大變化的時候,即 某些哈希桶數(shù)據(jù)過于密集,某些哈希桶過于稀疏。
[0076] 那么,我們基于新的數(shù)據(jù)采樣,使用同上述相同的方法步驟,為范圍查詢字段設(shè)計 新的哈希函數(shù)。新的哈希函數(shù)集設(shè)計完成后,記錄新的哈希函數(shù)集為活動數(shù)據(jù)紀(jì)(Active Data Epoch)。上次使用的哈希函數(shù)集、啟用時間和終止時間、元信息以及相應(yīng)的數(shù)據(jù)文件 稱為一個數(shù)據(jù)紀(jì)。
[0077] 當(dāng)范圍查詢字段跨越兩個以上數(shù)據(jù)紀(jì)的時候,需要根據(jù)數(shù)據(jù)紀(jì)的邊界進行范圍查 詢的改寫。比如范圍查詢字段的上、下界為[時間常量1]和[時間常量2],該查詢跨越兩 個數(shù)據(jù)紀(jì),兩個數(shù)據(jù)紀(jì)的邊界為Te,那么范圍查詢條件"[時間常量1]〈=時間and時間〈 =[時間常量2] ",被改寫為"[時間常量1]〈=時間and時間〈="Tc〈=時間and 時間〈=[時間常量2] ",余下的步驟與上述實施例中類似。
[0078] 圖4為本發(fā)明基于分段保序哈希的日志數(shù)據(jù)分片裝置一實施例的結(jié)構(gòu)示意圖。如 圖4所示,本實施例的裝置,可以包括:劃分模塊401和映射模塊402 ;
[0079] 其中,劃分模塊401,用于將日志數(shù)據(jù)的多個屬性字段的值域分別劃分成N個分 段;N為大于1的整數(shù);
[0080] 映射模塊402,用于按照所述N個分段的順序建立每個所述屬性字段對應(yīng)的所述N 個分段與哈希值的映射關(guān)系;所述哈希值為連續(xù)排列的整數(shù),所述哈希值的排列順序與所 述N個分段的順序一致;
[0081] 所述劃分模塊401,還用于將每個所述哈希值對應(yīng)的日志數(shù)據(jù)劃分到一個存儲單 元中。
[0082] 可選地,所述劃分模塊401,具體用于:
[0083] 獲取采樣的日志數(shù)據(jù),根據(jù)所述采樣的日志數(shù)據(jù)在所述多個屬性字段的值域上分 別建立等深直方圖;
[0084] 根據(jù)所述等深直方圖將所述值域劃分為所述N個分段。
[0085] 可選地,所述劃分模塊401,還具體用于:
[0086] 分別從每個所述屬性字段中選擇一個所述分段對應(yīng)的哈希值生成向量,將所述向 量作為單元編號;
[0087] 將所述單元編號對應(yīng)的日志數(shù)據(jù)劃分到一個所述存儲單元中;所述存儲單元與所 述單元編號 對應(yīng)。
[0088] 可選地,還包括:
[0089] 處理模塊,用于若所述存儲單元的存儲空間存滿之后,記錄所述存儲單元的元信 息,并將所述存儲單元中的日志數(shù)據(jù)寫入數(shù)據(jù)文件中;其中,所述元信息包括:所述各個屬 性字段的哈希值、所述存儲單元存滿的次數(shù)、所述各個屬性字段的值域在所述存儲單元的 最大值和最小值以及位置信息。
[0090] 可選地,所述處理模塊,還用于:
[0091] 將多個所述存儲單元中的日志數(shù)據(jù)寫入同一數(shù)據(jù)文件,所述數(shù)據(jù)文件的文件頭中 包括:所述存儲單元的單元編號與所述存儲單元中的日志數(shù)據(jù)在所述數(shù)據(jù)文件內(nèi)偏移量的 對應(yīng)關(guān)系。
[0092] 可選地,所述處理模塊,還用于:
[0093] 記錄所述各個屬性字段的映射關(guān)系、所述映射關(guān)系的啟用時間和終止時間、所述 存儲單元的元信息和數(shù)據(jù)文件的集合。
[0094] 本實施例的裝置,可以用于執(zhí)行如圖1-3任一所示方法實施例的技術(shù)方案,其實 現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0095] 本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的軟件和硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中, 該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁 碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0096] 最后應(yīng)說明的是:以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡 管參照前述實施例對本申請進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然 可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的精 神和范圍。
【主權(quán)項】
1. 一種基于分段保序哈希的日志數(shù)據(jù)分片方法,其特征在于,包括: 將日志數(shù)據(jù)的多個屬性字段的值域分別劃分成N個分段;N為大于1的整數(shù); 按照所述N個分段的順序建立每個所述屬性字段對應(yīng)的所述N個分段與哈希值的映射 關(guān)系;所述哈希值為連續(xù)排列的整數(shù),所述哈希值的排列順序與所述N個分段的順序一致; 將每個所述哈希值對應(yīng)的日志數(shù)據(jù)劃分到一個存儲單元中。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將日志數(shù)據(jù)的多個屬性字段的值域 分別劃分成N個分段,包括: 獲取采樣的日志數(shù)據(jù),根據(jù)所述采樣的日志數(shù)據(jù)在所述多個屬性字段的值域上分別建 立等深直方圖; 根據(jù)所述等深直方圖將所述值域劃分為所述N個分段。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將每個所述哈希值對應(yīng)的日志數(shù) 據(jù)劃分到一個存儲單元中,包括: 分別從每個所述屬性字段中選擇一個所述分段對應(yīng)的哈希值生成向量,將所述向量作 為單元編號; 將所述單元編號對應(yīng)的日志數(shù)據(jù)劃分到一個所述存儲單元中;所述存儲單元與所述單 元編號 對應(yīng)。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述單元編號對應(yīng)的日志數(shù)據(jù)劃 分到一個所述存儲單元中之后,還包括: 若所述存儲單元的存儲空間存滿之后,記錄所述存儲單元的元信息,并將所述存儲單 元中的日志數(shù)據(jù)寫入數(shù)據(jù)文件中;其中,所述元信息包括:所述各個屬性字段的哈希值、所 述存儲單元存滿的次數(shù)、所述各個屬性字段的值域在所述存儲單元的最大值和最小值以及 位置信息。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括: 將多個所述存儲單元中的日志數(shù)據(jù)寫入同一數(shù)據(jù)文件,所述數(shù)據(jù)文件的文件頭中包 括:所述存儲單元的單元編號與所述存儲單元中的日志數(shù)據(jù)在所述數(shù)據(jù)文件內(nèi)偏移量的對 應(yīng)關(guān)系。6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 記錄所述各個屬性字段的映射關(guān)系、所述映射關(guān)系的啟用時間和終止時間、所述存儲 單元的元信息和數(shù)據(jù)文件的集合。7. -種基于分段保序哈希的日志數(shù)據(jù)分片裝置,其特征在于,包括: 劃分模塊,用于將日志數(shù)據(jù)的多個屬性字段的值域分別劃分成N個分段;N為大于1的 整數(shù); 映射模塊,用于按照所述N個分段的順序建立每個所述屬性字段對應(yīng)的所述N個分段 與哈希值的映射關(guān)系;所述哈希值為連續(xù)排列的整數(shù),所述哈希值的排列順序與所述N個 分段的順序一致; 所述劃分模塊,還用于將每個所述哈希值對應(yīng)的日志數(shù)據(jù)劃分到一個存儲單元中。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述劃分模塊,具體用于: 獲取采樣的日志數(shù)據(jù),根據(jù)所述采樣的日志數(shù)據(jù)在所述多個屬性字段的值域上分別建 立等深直方圖; 根據(jù)所述等深直方圖將所述值域劃分為所述N個分段。9. 根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述劃分模塊,還具體用于: 分別從每個所述屬性字段中選擇一個所述分段對應(yīng)的哈希值生成向量,將所述向量作 為單元編號; 將所述單元編號對應(yīng)的日志數(shù)據(jù)劃分到一個所述存儲單元中;所述存儲單元與所述單 元編號 對應(yīng)。10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括: 處理模塊,用于若所述存儲單元的存儲空間存滿之后,記錄所述存儲單元的元信息,并 將所述存儲單元中的日志數(shù)據(jù)寫入數(shù)據(jù)文件中;其中,所述元信息包括:所述各個屬性字 段的哈希值、所述存儲單元存滿的次數(shù)、所述各個屬性字段的值域在所述存儲單元的最大 值和最小值以及位置信息。
【專利摘要】本發(fā)明提供一種基于分段保序哈希的日志數(shù)據(jù)分片方法及裝置。本發(fā)明基于分段保序哈希的日志數(shù)據(jù)分片方法包括:將日志數(shù)據(jù)的多個屬性字段的值域分別劃分成N個分段;N為大于1的整數(shù);按照所述N個分段的順序建立每個所述屬性字段對應(yīng)的所述N個分段與哈希值的映射關(guān)系;所述哈希值為連續(xù)排列的整數(shù),所述哈希值的排列順序與所述N個分段的順序一致;將每個所述哈希值對應(yīng)的日志數(shù)據(jù)劃分到一個存儲單元中。本發(fā)明通過哈希函數(shù)的保序性,保證了相鄰的日志數(shù)據(jù)被劃分到相鄰的存儲單元,以便支持范圍查詢能夠快速尋找到相關(guān)數(shù)據(jù)。
【IPC分類】G06F17/30
【公開號】CN105117402
【申請?zhí)枴緾N201510420017
【發(fā)明人】覃雄派, 陳躍國, 杜小勇, 金國棟
【申請人】中國人民大學(xué)
【公開日】2015年12月2日
【申請日】2015年7月16日