Id生成方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種ID生成方法及裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫,隨著信息技術(shù)和市場的發(fā)展,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成按照用戶所需要的各種數(shù)據(jù)管理的方式。
[0003]隨著互聯(lián)網(wǎng)的發(fā)展,人們?cè)絹碓搅?xí)慣網(wǎng)上購物,尤其是在有些電商平臺(tái)上購物,當(dāng)用戶在電商平臺(tái)上提交購物信息后,需要將這些購物信息在數(shù)據(jù)庫上進(jìn)行存儲(chǔ),若很多用戶在同一時(shí)間段內(nèi)提交購物信息,需要數(shù)據(jù)庫能夠快速生成不重復(fù)的新ID,但現(xiàn)有技術(shù)中卻無法保證生成的新ID不重復(fù),無法保證用戶信息的安全性和穩(wěn)定性。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種ID生成方法及裝置。
[0005]依據(jù)本發(fā)明的一個(gè)方面,提供了一種ID生成方法,包括:
[0006]接收ID生成請(qǐng)求;
[0007]依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值;
[0008]根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID。
[0009]可選地,所述依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器值,進(jìn)一步包括:
[0010]依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào);
[0011]相應(yīng)地,所述根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID,進(jìn)一步包括:
[0012]根據(jù)當(dāng)前時(shí)間、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID。
[0013]可選地,所述根據(jù)當(dāng)前時(shí)間、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID,進(jìn)一步包括:
[0014]計(jì)算當(dāng)前時(shí)間和基準(zhǔn)時(shí)間之間的時(shí)間差,根據(jù)所述時(shí)間差、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID。
[0015]可選地,所述根據(jù)所述時(shí)間差、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID,進(jìn)一步包括:
[0016]將所述時(shí)間差、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)分別轉(zhuǎn)換為二進(jìn)制,并按照預(yù)設(shè)順序?qū)⑥D(zhuǎn)換的二進(jìn)制進(jìn)行排列,以生成新ID。
[0017]可選地,所述新ID為64位數(shù)字。
[0018]可選地,所述時(shí)間差轉(zhuǎn)換的二進(jìn)制為42位,所述計(jì)數(shù)器轉(zhuǎn)換的二進(jìn)制為12位,所述本地預(yù)存的序號(hào)轉(zhuǎn)換的二進(jìn)制為10位。
[0019]可選地,所述根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID之后,所述方法還包括:
[0020]將所述新ID返回給所述ID生成請(qǐng)求的請(qǐng)求方。
[0021]可選地,所述根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID之后,所述方法還包括:
[0022]對(duì)所述計(jì)數(shù)器的數(shù)值進(jìn)行更新。
[0023 ]依據(jù)本發(fā)明的另一個(gè)方面,提供了一種ID生成裝置,包括:
[0024]請(qǐng)求接收單元,適于接收ID生成請(qǐng)求;
[0025]數(shù)據(jù)獲取單元,適于依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值;
[0026]ID生成單元,適于根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID。
[0027]可選地,所述數(shù)據(jù)獲取單元,進(jìn)一步適于依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào);
[0028]相應(yīng)地,所述ID生成單元,進(jìn)一步適于根據(jù)當(dāng)前時(shí)間、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID。
[0029]可選地,所述ID生成單元,進(jìn)一步適于計(jì)算當(dāng)前時(shí)間和基準(zhǔn)時(shí)間之間的時(shí)間差,根據(jù)所述時(shí)間差、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)并按照預(yù)設(shè)規(guī)則生成新ID。
[0030]可選地,所述ID生成單元,進(jìn)一步適于將所述時(shí)間差、計(jì)數(shù)器的數(shù)值和本地預(yù)存的序號(hào)分別轉(zhuǎn)換為二進(jìn)制,并按照預(yù)設(shè)順序?qū)⑥D(zhuǎn)換的二進(jìn)制進(jìn)行排列,以生成新ID。
[0031]可選地,所述新ID為64位數(shù)字。
[0032]可選地,所述時(shí)間差轉(zhuǎn)換的二進(jìn)制為42位,所述計(jì)數(shù)器轉(zhuǎn)換的二進(jìn)制為12位,所述本地預(yù)存的序號(hào)轉(zhuǎn)換的二進(jìn)制為10位。
[0033]可選地,所述裝置還包括:
[0034]ID返回單元,適于將所述新ID返回給所述ID生成請(qǐng)求的請(qǐng)求方。
[0035]可選地,所述裝置還包括:
[0036]數(shù)值更新單元,適于對(duì)所述計(jì)數(shù)器的數(shù)值進(jìn)行更新。
[0037]本發(fā)明依據(jù)接收到的ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值,通過當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID,從而使得數(shù)據(jù)庫能夠快速生成不重復(fù)的新ID,保證了用戶信息的安全性和穩(wěn)定性。
【附圖說明】
[0038]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0039]圖1是本發(fā)明一種實(shí)施方式的ID生成方法的流程圖;
[0040]圖2是本發(fā)明一種實(shí)施方式的ID生成方法的流程圖;
[0041 ]圖3是本發(fā)明一種實(shí)施方式的ID生成方法的流程圖;
[0042]圖4是本發(fā)明一種實(shí)施方式的ID生成方法的流程圖;
[0043]圖5是本發(fā)明一種實(shí)施方式的ID生成裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0044]下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
[0045]圖1是本發(fā)明一種實(shí)施方式的ID生成方法的流程圖;參照?qǐng)D1,所述方法包括:
[0046]SlOl:接收ID生成請(qǐng)求;
[0047]需要說明的是,本實(shí)施方式的方法的執(zhí)行主體可以為數(shù)據(jù)庫,所述數(shù)據(jù)庫通常是設(shè)置于服務(wù)器上的,也可以為用于生成ID的前端機(jī),當(dāng)然,還可為其他具有類似功能的設(shè)備,本實(shí)施方式對(duì)此不加以限制。
[0048]可理解的是,所述ID生成請(qǐng)求通常是基于用戶在終端上輸入的操作指令所生成,例如:用戶在終端上輸入購物的操作指令,當(dāng)然,所述ID生成請(qǐng)求可由數(shù)據(jù)庫所在服務(wù)器生成,也可由其他服務(wù)器生成,本實(shí)施方式對(duì)此不加以限制。
[0049]在具體實(shí)現(xiàn)中,所述數(shù)據(jù)庫可為MySQL數(shù)據(jù)庫,也就是關(guān)系型數(shù)據(jù)庫,在獲得新ID后,需要將所述新ID分配給所述數(shù)據(jù)項(xiàng),還需要根據(jù)所述ID將所述數(shù)據(jù)項(xiàng)與其他數(shù)據(jù)(如用戶賬號(hào)等數(shù)據(jù))進(jìn)行關(guān)聯(lián),故而,生成ID的唯一性直接影響到用戶信息的正確性和穩(wěn)定性。
[0050]S102:依據(jù)所述ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值;
[0051]需要說明的是,所述當(dāng)前時(shí)間可理解為本地時(shí)鐘的當(dāng)前時(shí)間,當(dāng)所述方法的執(zhí)行主體為數(shù)據(jù)庫時(shí),可理解為所述數(shù)據(jù)庫所在服務(wù)器上時(shí)鐘的當(dāng)前時(shí)間,當(dāng)所述方法的執(zhí)行主體為前端機(jī)時(shí),可理解為所述前端機(jī)上時(shí)鐘的當(dāng)前時(shí)間。
[0052]S103:根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID。
[0053]可理解的是,所述計(jì)數(shù)器的數(shù)值即為用于區(qū)分不同ID生成請(qǐng)求的參數(shù),也就是說,在每接收到一個(gè)ID生成請(qǐng)求時(shí),可先獲取計(jì)數(shù)器的數(shù)值,當(dāng)根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID之后,即可對(duì)所述計(jì)數(shù)器的數(shù)值進(jìn)行更新。
[0054]當(dāng)然,對(duì)所述計(jì)數(shù)器的數(shù)值進(jìn)行更新通常是在所述計(jì)數(shù)器的數(shù)值的基礎(chǔ)上進(jìn)行自加,例如:所述計(jì)數(shù)器的數(shù)值為20,假設(shè)自加的增量為1,當(dāng)根據(jù)當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID之后,即可將所述計(jì)數(shù)器的數(shù)值更新為21,以便于后續(xù)新ID的生成。
[0055]本實(shí)施方式依據(jù)接收到的ID生成請(qǐng)求獲取當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值,通過當(dāng)前時(shí)間和計(jì)數(shù)器的數(shù)值并按照預(yù)設(shè)規(guī)則生成新ID,從而使得數(shù)據(jù)庫能夠快速生成不重復(fù)的新ID,保證了用戶信息的安全性和穩(wěn)定性。