全局標(biāo)識(shí)生成方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本公開涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別涉及一種全局標(biāo)識(shí)生成方法及裝置。
【背景技術(shù)】
[0002]在高并發(fā)分布式系統(tǒng)中,系統(tǒng)所管理的數(shù)據(jù)庫(kù)中用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)表非常大,這種大數(shù)據(jù)表會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的查詢性能非常低。
[0003]為了提高查詢性能,通常利用分片標(biāo)識(shí)將大數(shù)據(jù)表拆分成很多的小數(shù)據(jù)表,這樣則容易導(dǎo)致同一個(gè)數(shù)據(jù)可能被一條條分別記錄在不同的小數(shù)據(jù)表中,此時(shí)則要求小數(shù)據(jù)表中的每條數(shù)據(jù)記錄的標(biāo)識(shí)必須是全局唯一的,因此,需要為每條數(shù)據(jù)記錄生成一個(gè)全局唯一標(biāo)識(shí)O
【發(fā)明內(nèi)容】
[0004]本公開提供一種全局標(biāo)識(shí)生成方法及裝置。所述技術(shù)方案如下:
[0005]根據(jù)本公開實(shí)施例的第一方面,提供一種全局標(biāo)識(shí)生成方法,應(yīng)用于當(dāng)前服務(wù)器中,所述方法包括:
[0006]在為存儲(chǔ)至數(shù)據(jù)分片中的數(shù)據(jù)記錄生成全局標(biāo)識(shí)時(shí),獲取所述數(shù)據(jù)分片的分片標(biāo)識(shí);
[0007]將上一次生成的增長(zhǎng)值加上預(yù)定步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值;
[0008]為所述數(shù)據(jù)記錄生成全局標(biāo)識(shí),所述全局標(biāo)識(shí)包括生成所述全局標(biāo)識(shí)的生成時(shí)亥IJ、所述分片標(biāo)識(shí)和增長(zhǎng)序列,所述增長(zhǎng)序列中包含所述增長(zhǎng)值。
[0009]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:通過(guò)獲取數(shù)據(jù)片的分片標(biāo)識(shí),得到數(shù)據(jù)記錄的增長(zhǎng)值,將生成時(shí)刻、分片標(biāo)識(shí)和增長(zhǎng)序列生成該數(shù)據(jù)記錄的全局標(biāo)識(shí);由于在查詢某個(gè)數(shù)據(jù)記錄時(shí),可以利用該數(shù)據(jù)記錄的全局標(biāo)識(shí)中的生成時(shí)刻和分片標(biāo)識(shí)進(jìn)行查詢,然后在符合條件的全局標(biāo)識(shí)中再查詢?cè)摂?shù)據(jù)記錄全局標(biāo)識(shí)中的增長(zhǎng)序列,因此可以提高查詢的效率,解決了當(dāng)數(shù)據(jù)記錄非常多時(shí),查詢效率比較低的問(wèn)題;達(dá)到了生成的全局唯一標(biāo)識(shí)包含時(shí)間、分片標(biāo)識(shí)等豐富?目息,查詢效率提尚的效果。
[0010]可選的,所述獲取所述數(shù)據(jù)分片的分片標(biāo)識(shí),包括:
[0011]獲取用于標(biāo)識(shí)用戶的用戶標(biāo)識(shí),所述用戶標(biāo)識(shí)由數(shù)字組成;
[0012]將所述用戶標(biāo)識(shí)除以預(yù)定值,將得到的余數(shù)結(jié)果確定為所述數(shù)據(jù)分片的分片標(biāo)識(shí),所述數(shù)據(jù)分片用于存儲(chǔ)具有相同余數(shù)結(jié)果的用戶標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù),所述預(yù)定值為用于存儲(chǔ)數(shù)據(jù)的服務(wù)器的數(shù)量。
[0013]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:通過(guò)將相同余數(shù)結(jié)果的用戶標(biāo)識(shí)劃分到一個(gè)分片標(biāo)識(shí)中,可以將同一個(gè)用戶的所有數(shù)據(jù)記錄均劃分到同一個(gè)分片中,在查詢同一個(gè)用戶的數(shù)據(jù)記錄時(shí),僅需要到該用戶所對(duì)應(yīng)的分片中查詢即可,因此提高了查詢效率,解決了當(dāng)數(shù)據(jù)記錄非常多時(shí),查詢效率比較低的問(wèn)題。
[0014]可選的,所述將上一次生成的增長(zhǎng)值加上預(yù)定步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值,包括:
[0015]檢測(cè)正常工作的服務(wù)器的數(shù)量是否發(fā)生變化,所述服務(wù)器為用于為數(shù)據(jù)記錄生成全局標(biāo)識(shí)的服務(wù)器;
[0016]若正常工作的服務(wù)器的數(shù)量發(fā)生變化,則獲取發(fā)生故障的服務(wù)器的數(shù)量,將所述發(fā)生故障的服務(wù)器的數(shù)量記為第一數(shù)量,將上一次計(jì)算用的預(yù)定步長(zhǎng)減去所述第一數(shù)量,得到變化后的預(yù)定步長(zhǎng),將所述變化后的預(yù)定步長(zhǎng)記為第一變化步長(zhǎng);將上一次生成的增長(zhǎng)值加上所述第一變化步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值;
[0017]或者,
[0018]獲取恢復(fù)工作的服務(wù)器的數(shù)量,將所述恢復(fù)工作的服務(wù)器的數(shù)量記為第二數(shù)量,將上一次計(jì)算用的預(yù)定步長(zhǎng)加上所述第二數(shù)量,得到變化后的預(yù)定步長(zhǎng),將所述變化后的預(yù)定步長(zhǎng)記為第二變化步長(zhǎng);將上一次生成的增長(zhǎng)值加上所述第二變化步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值。
[0019]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:通過(guò)針對(duì)正常工作的服務(wù)器的數(shù)量對(duì)預(yù)定步長(zhǎng)做出實(shí)時(shí)更改,這樣在出現(xiàn)故障的服務(wù)器無(wú)法為數(shù)據(jù)記錄生成全局標(biāo)識(shí)時(shí),也可以利用這些出現(xiàn)故障的服務(wù)器所占用的增長(zhǎng)值,因此避免了因故障服務(wù)器造成對(duì)增長(zhǎng)值的浪費(fèi),達(dá)到了可以節(jié)約增長(zhǎng)值的效果。
[0020]可選的,所述為所述數(shù)據(jù)記錄生成全局標(biāo)識(shí),包括:
[0021]將用于標(biāo)識(shí)所述當(dāng)前服務(wù)器的標(biāo)識(shí)與所述數(shù)據(jù)記錄的增長(zhǎng)值進(jìn)行綁定,得到所述數(shù)據(jù)記錄的增長(zhǎng)序列;
[0022]將生成所述全局標(biāo)識(shí)的生成時(shí)刻、所述分片標(biāo)識(shí)和所述數(shù)據(jù)記錄的增長(zhǎng)序列組合成所述數(shù)據(jù)記錄的全局標(biāo)識(shí)。
[0023]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:通過(guò)將全局標(biāo)識(shí)的生成時(shí)刻、分片標(biāo)識(shí)和數(shù)據(jù)記錄的增長(zhǎng)序列構(gòu)成全局標(biāo)識(shí),由于同一臺(tái)服務(wù)器在同一個(gè)生成時(shí)刻,僅能為一條數(shù)據(jù)記錄生成增長(zhǎng)值,因此通過(guò)上述三個(gè)元素構(gòu)成的全局標(biāo)識(shí)是全局唯一的,達(dá)到了可以保證為數(shù)據(jù)記錄生成的全局標(biāo)識(shí)是唯一的效果。
[0024]可選的,所述方法還包括:
[0025]接收通知指令,所述通知指令包含一個(gè)變量參數(shù),所述變量參數(shù)用于指示連續(xù)未成功生成全局標(biāo)識(shí)的次數(shù);
[0026]在接收到所述通知指令后,將上一次生成的增長(zhǎng)值加上預(yù)定步長(zhǎng)后減去所述變量參數(shù),得到所述數(shù)據(jù)記錄的增長(zhǎng)值,執(zhí)行所述為所述數(shù)據(jù)記錄生成全局標(biāo)識(shí)的步驟。
[0027]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:利用變量參數(shù)用于指示連續(xù)未成功生成全局標(biāo)識(shí)的次數(shù),達(dá)到了節(jié)約全局標(biāo)識(shí)的效果。
[0028]可選的,所述方法還包括:
[0029]當(dāng)所述當(dāng)前服務(wù)器生成的一個(gè)全局標(biāo)識(shí)被注銷后,將所述全局標(biāo)識(shí)中的增長(zhǎng)序列分配到增長(zhǎng)序列池中;
[0030]當(dāng)為所述數(shù)據(jù)記錄生成全局標(biāo)識(shí)時(shí),檢測(cè)所述增長(zhǎng)序列池中是否存在增長(zhǎng)序列;
[0031]若所述增長(zhǎng)序列池中存在增長(zhǎng)序列,則將所述增長(zhǎng)序列池中的增長(zhǎng)序列分配給所述數(shù)據(jù)記錄。
[0032]上述技術(shù)方案實(shí)現(xiàn)的有益效果為:通過(guò)增長(zhǎng)序列池實(shí)現(xiàn)將注銷后的全局標(biāo)識(shí)進(jìn)行回收利用,因此可以避免被注銷后的全局標(biāo)識(shí)的浪費(fèi),提高了全局標(biāo)識(shí)利用率的效果。
[0033]根據(jù)本公開實(shí)施例的第二方面,提供一種全局標(biāo)識(shí)生成裝置,應(yīng)用于當(dāng)前服務(wù)器中,所述裝置包括:
[0034]獲取模塊,被配置為在為存儲(chǔ)至數(shù)據(jù)分片中的數(shù)據(jù)記錄生成全局標(biāo)識(shí)時(shí),獲取所述數(shù)據(jù)分片的分片標(biāo)識(shí)
[0035]第一計(jì)算模塊,被配置為將上一次生成的增長(zhǎng)值加上預(yù)定步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值;
[0036]生成模塊,被配置為為所述數(shù)據(jù)記錄生成全局標(biāo)識(shí),所述全局標(biāo)識(shí)包括生成所述全局標(biāo)識(shí)的生成時(shí)刻、所述獲取模塊獲取的所述分片標(biāo)識(shí)和增長(zhǎng)序列,所述增長(zhǎng)序列中包含所述第一計(jì)算模塊計(jì)算得到的所述增長(zhǎng)值。
[0037]上述裝置實(shí)現(xiàn)的有益效果為:通過(guò)獲取數(shù)據(jù)片的分片標(biāo)識(shí),得到數(shù)據(jù)記錄的增長(zhǎng)值,將生成時(shí)刻、分片標(biāo)識(shí)和增長(zhǎng)序列生成該數(shù)據(jù)記錄的全局標(biāo)識(shí);由于在查詢某個(gè)數(shù)據(jù)記錄時(shí),可以利用該數(shù)據(jù)記錄的全局標(biāo)識(shí)中的生成時(shí)刻和分片標(biāo)識(shí)進(jìn)行查詢,然后在符合條件的全局標(biāo)識(shí)中再查詢?cè)摂?shù)據(jù)記錄全局標(biāo)識(shí)中的增長(zhǎng)序列,因此可以提高查詢的效率,解決了當(dāng)數(shù)據(jù)記錄非常多時(shí),查詢效率比較低的問(wèn)題;達(dá)到了生成的全局唯一標(biāo)識(shí)包含時(shí)間、分片標(biāo)識(shí)等豐富信息,查詢效率提高的效果。
[0038]可選的,所述獲取模塊,包括:
[0039]獲取子模塊,被配置為獲取用于標(biāo)識(shí)用戶的用戶標(biāo)識(shí),所述用戶標(biāo)識(shí)由數(shù)字組成;
[0040]取模子模塊,被配置為將所述獲取子模塊獲取的所述用戶標(biāo)識(shí)除以預(yù)定值,將得到的余數(shù)結(jié)果確定為所述數(shù)據(jù)分片的分片標(biāo)識(shí),所述數(shù)據(jù)分片用于存儲(chǔ)具有相同余數(shù)結(jié)果的用戶標(biāo)識(shí)所對(duì)應(yīng)的數(shù)據(jù),所述預(yù)定值為用于存儲(chǔ)數(shù)據(jù)的服務(wù)器的數(shù)量。
[0041]上述裝置實(shí)現(xiàn)的有益效果為:通過(guò)將相同余數(shù)結(jié)果的用戶標(biāo)識(shí)劃分到一個(gè)分片標(biāo)識(shí)中,可以將同一個(gè)用戶的所有數(shù)據(jù)記錄均劃分到同一個(gè)分片中,在查詢同一個(gè)用戶的數(shù)據(jù)記錄時(shí),僅需要到該用戶所對(duì)應(yīng)的分片中查詢即可,因此提高了查詢效率,解決了當(dāng)數(shù)據(jù)記錄非常多時(shí),查詢效率比較低的問(wèn)題。
[0042]可選的,所述第一計(jì)算模塊,包括:
[0043]檢測(cè)子模塊,被配置為檢測(cè)正常工作的服務(wù)器的數(shù)量是否發(fā)生變化,所述服務(wù)器為用于為數(shù)據(jù)記錄生成全局標(biāo)識(shí)的服務(wù)器;
[0044]第一計(jì)算子模塊,被配置為若所述檢測(cè)子模塊檢測(cè)出正常工作的服務(wù)器的數(shù)量發(fā)生變化,則獲取發(fā)生故障的服務(wù)器的數(shù)量,將所述發(fā)生故障的服務(wù)器的數(shù)量記為第一數(shù)量,將上一次計(jì)算用的預(yù)定步長(zhǎng)減去所述第一數(shù)量,得到變化后的預(yù)定步長(zhǎng),將所述變化后的預(yù)定步長(zhǎng)記為第一變化步長(zhǎng);將上一次生成的增長(zhǎng)值加上所述第一變化步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值;
[0045]或者,
[0046]第二計(jì)算子模塊,被配置為獲取恢復(fù)工作的服務(wù)器的數(shù)量,將所述恢復(fù)工作的服務(wù)器的數(shù)量記為第二數(shù)量,將上一次計(jì)算用的預(yù)定步長(zhǎng)加上所述第二數(shù)量,得到變化后的預(yù)定步長(zhǎng),將所述變化后的預(yù)定步長(zhǎng)記為第二變化步長(zhǎng);將上一次生成的增長(zhǎng)值加上變化后的所述第二變化步長(zhǎng),得到所述數(shù)據(jù)記錄的增長(zhǎng)值。
[0047]上述裝置實(shí)現(xiàn)的有益效果為:通過(guò)針對(duì)正常工作的服務(wù)器的數(shù)量對(duì)預(yù)定步長(zhǎng)做出實(shí)時(shí)更改,這樣在出現(xiàn)故障的服務(wù)器無(wú)法為數(shù)據(jù)記錄生成全局標(biāo)識(shí)時(shí),也可以利用這些出現(xiàn)故障的服務(wù)器所占用的增長(zhǎng)值,因此避免了因故障服務(wù)器造成對(duì)增長(zhǎng)值的浪費(fèi),達(dá)到了可以節(jié)約增長(zhǎng)值的效果。
[0048]可選的,所述生成模塊,包括:
[0049]綁定子模塊,被配置為將用于標(biāo)識(shí)所述當(dāng)前服務(wù)器的標(biāo)識(shí)與所述數(shù)據(jù)記錄的增長(zhǎng)值進(jìn)行綁定,得到所述數(shù)據(jù)記錄的增長(zhǎng)序列;
[0050]組合子模塊,被配置為將生成所述全局標(biāo)識(shí)的生成時(shí)刻、所述分片標(biāo)識(shí)和所述數(shù)據(jù)記錄的增長(zhǎng)序列組合成所述數(shù)據(jù)記錄的全局標(biāo)識(shí)。
[0051]