專(zhuān)利名稱(chēng)::一種序列號(hào)的處理方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本申請(qǐng)涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,尤其涉及一種序列號(hào)的處理方法及設(shè)備。
背景技術(shù):
:序列表是用于創(chuàng)建唯一連續(xù)整數(shù)值的數(shù)據(jù)庫(kù)對(duì)象,其典型的用途是創(chuàng)建全局唯一的序列號(hào),以標(biāo)識(shí)數(shù)據(jù)表中的一條數(shù)據(jù)記錄。在數(shù)據(jù)表中的數(shù)據(jù)記錄條數(shù)較少時(shí),可直接在存放該數(shù)據(jù)表的數(shù)據(jù)庫(kù)中創(chuàng)建一張序列表,在新增數(shù)據(jù)記錄時(shí),服務(wù)器從該序列表中獲取序列號(hào),并利用該序列號(hào)標(biāo)識(shí)新增的數(shù)據(jù)記錄。若數(shù)據(jù)庫(kù)中需要記錄的數(shù)據(jù)記錄數(shù)量達(dá)到或超過(guò)一定規(guī)模后(如1000萬(wàn)),隨著數(shù)據(jù)記錄條數(shù)的繼續(xù)增加,如果所有的數(shù)據(jù)記錄都記錄在同一數(shù)據(jù)表中,則對(duì)該數(shù)據(jù)表中的數(shù)據(jù)記錄進(jìn)行讀、寫(xiě)操作的性能將會(huì)明顯下降。因此,可將數(shù)據(jù)記錄記載在多個(gè)數(shù)據(jù)表中,并將多個(gè)數(shù)據(jù)表存放于一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中,且為每個(gè)數(shù)據(jù)記錄分配一個(gè)序列號(hào)。具體地,當(dāng)有一個(gè)新增的數(shù)據(jù)記錄需要寫(xiě)入數(shù)據(jù)庫(kù)時(shí),從序列表中獲取一個(gè)序列號(hào)分配給當(dāng)前新增的數(shù)據(jù)記錄,完成數(shù)據(jù)記錄的寫(xiě)入操作。具體地,從序列表中獲取分配給數(shù)據(jù)記錄的序列號(hào)的方式包括以下兩種:第一種方式:在存儲(chǔ)數(shù)據(jù)表的多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),用于建立并存儲(chǔ)序列表,所述序列表中有一個(gè)設(shè)定字段。當(dāng)服務(wù)器需要獲取序列號(hào)向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),從所述序列表中獲取一個(gè)可用的序列號(hào)。在第一種序列號(hào)的獲取方式下,存在單點(diǎn)風(fēng)險(xiǎn),即當(dāng)負(fù)責(zé)建立并存儲(chǔ)序列表的數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),序列號(hào)的獲取操作將無(wú)從進(jìn)行,導(dǎo)致數(shù)據(jù)記錄的寫(xiě)入操作也將無(wú)法進(jìn)行。第二種方式:分別在每個(gè)數(shù)據(jù)庫(kù)中建立一張序列表,并為該序列表分配一段序列號(hào)區(qū)間,在系統(tǒng)運(yùn)行時(shí),當(dāng)服務(wù)器需要向某一數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),則從該數(shù)據(jù)庫(kù)中的序列表中獲取序列號(hào),也就是說(shuō),一個(gè)數(shù)據(jù)庫(kù)中序列表內(nèi)的序列號(hào)分配給同一數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄。在第二種序列號(hào)的獲取方式下,可以避免單點(diǎn)風(fēng)險(xiǎn),但由于為每個(gè)數(shù)據(jù)庫(kù)分配了固定的序列號(hào)區(qū)間,這些序列號(hào)只能分配給同一數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄,因此,可能會(huì)出現(xiàn)部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡,但部分?jǐn)?shù)據(jù)庫(kù)中序列號(hào)使用率較低的情況。另外,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行擴(kuò)展時(shí),可能需要將一個(gè)數(shù)據(jù)庫(kù)拆分為多個(gè)數(shù)據(jù)庫(kù),同時(shí)也要將拆分前數(shù)據(jù)庫(kù)的序列表拆分為多個(gè),此時(shí),若在拆分前序列表中的部分序列號(hào)已被使用過(guò),則可能導(dǎo)致拆分后的序列表無(wú)法合理分配給各拆分后的數(shù)據(jù)庫(kù)。例如:數(shù)據(jù)庫(kù)I的序列表I中的序列號(hào)為O999,其中,O300的序列號(hào)已被使用過(guò),則數(shù)據(jù)庫(kù)I被拆分為數(shù)據(jù)庫(kù)11和數(shù)據(jù)庫(kù)12時(shí),若序列表I也拆分為序列表11和序列表12,且序列表11中的序列號(hào)為O499,序列表12中的序列號(hào)為500999,則由于序列表11中的部分序列號(hào)已被使用過(guò),導(dǎo)致數(shù)據(jù)庫(kù)的擴(kuò)展效果較差。
發(fā)明內(nèi)容本申請(qǐng)實(shí)施例提供一種序列號(hào)的處理方法及設(shè)備,用以解決現(xiàn)有技術(shù)中由于部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡后,就無(wú)法向該數(shù)據(jù)庫(kù)繼續(xù)寫(xiě)入數(shù)據(jù)記錄的問(wèn)題?!N序列號(hào)的處理方法,包括:服務(wù)器在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表;服務(wù)器從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù);服務(wù)器根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。一種序列號(hào)的處理設(shè)備,包括:選擇模塊,用于在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表;獲取模塊,用于從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù);寫(xiě)入模塊,用于根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。本申請(qǐng)有益效果如下:在本申請(qǐng)實(shí)施例提供的方案中,當(dāng)服務(wù)器需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),由于服務(wù)器可以按查詢(xún)順序從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的序列表來(lái)獲取序列號(hào),并不局限于某一個(gè)數(shù)據(jù)庫(kù)中序列表來(lái)獲取序列號(hào),有效的弱化了序列表和數(shù)據(jù)庫(kù)之間的依賴(lài)關(guān)系,實(shí)現(xiàn)了序列號(hào)的共享,即使出現(xiàn)某一數(shù)據(jù)庫(kù)中的序列號(hào)耗盡或數(shù)據(jù)庫(kù)故障的情況,服務(wù)器仍然可以從其他數(shù)據(jù)庫(kù)中獲取序列號(hào),克服了由于部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡后,就無(wú)法向該數(shù)據(jù)庫(kù)繼續(xù)寫(xiě)入數(shù)據(jù)記錄的問(wèn)題。圖1為本申請(qǐng)實(shí)施例一序列號(hào)的處理方法步驟示意圖;圖2為本申請(qǐng)實(shí)施例二序列號(hào)的處理方法步驟示意圖;圖3為本申請(qǐng)實(shí)施例三序列號(hào)的處理設(shè)備結(jié)構(gòu)示意圖。具體實(shí)施例方式為實(shí)現(xiàn)本申請(qǐng)目的,本申請(qǐng)實(shí)施例提出一種序列號(hào)的處理方案,當(dāng)服務(wù)器需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),讀取選擇的數(shù)據(jù)庫(kù)中的序列表,以及從讀取的序列表中獲取N(N為正整數(shù))個(gè)可用序列號(hào),并使用可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。由于服務(wù)器可以按查詢(xún)順序從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的序列表來(lái)獲取序列號(hào),并不局限于某一個(gè)數(shù)據(jù)庫(kù)中序列表來(lái)獲取序列號(hào),有效的弱化了序列表和數(shù)據(jù)庫(kù)之間的依賴(lài)關(guān)系,實(shí)現(xiàn)了序列號(hào)的共享,即使出現(xiàn)某一數(shù)據(jù)庫(kù)中的序列號(hào)耗盡或數(shù)據(jù)庫(kù)故障的情況,服務(wù)器仍然可以從其他數(shù)據(jù)庫(kù)中獲取序列號(hào),克服了由于部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡后,就無(wú)法向該數(shù)據(jù)庫(kù)繼續(xù)寫(xiě)入數(shù)據(jù)記錄的問(wèn)題。下面結(jié)合說(shuō)明書(shū)附圖對(duì)本申請(qǐng)實(shí)施例的方案進(jìn)行詳細(xì)描述。實(shí)施例一如圖1所示,其為本申請(qǐng)實(shí)施例一中序列號(hào)的處理方法步驟示意圖,所述方法包括以下步驟:步驟101:服務(wù)器在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表。通常情況下,一個(gè)數(shù)據(jù)庫(kù)架構(gòu)中可以包含多個(gè)服務(wù)器和多個(gè)數(shù)據(jù)庫(kù),任一一個(gè)服務(wù)器可以對(duì)屬于同一數(shù)據(jù)庫(kù)架構(gòu)中的各數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)記錄的查詢(xún)、寫(xiě)入、刪除等操作;較優(yōu)的,考慮到在實(shí)際過(guò)程中,當(dāng)業(yè)務(wù)系統(tǒng)啟動(dòng)時(shí),可能會(huì)出現(xiàn)多個(gè)服務(wù)器同時(shí)從某一數(shù)據(jù)庫(kù)的序列表中獲取序列號(hào)的情況,會(huì)造成序列號(hào)搶占沖突,為了降低出現(xiàn)序列號(hào)搶占沖突的概率,服務(wù)器按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的方式具體可以為:若服務(wù)器首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則從所述多個(gè)數(shù)據(jù)庫(kù)中隨機(jī)選擇一個(gè)數(shù)據(jù)庫(kù);若服務(wù)器不是首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則確定上一次選擇的數(shù)據(jù)庫(kù),并根據(jù)所述數(shù)據(jù)庫(kù)查詢(xún)順序,確定當(dāng)前選擇的數(shù)據(jù)庫(kù),例如:將數(shù)據(jù)庫(kù)按照命名或其他方式進(jìn)行排列,在確定上一次選擇的數(shù)據(jù)庫(kù)后,將與上一次選擇的數(shù)據(jù)庫(kù)相鄰的下一數(shù)據(jù)庫(kù)作為當(dāng)前選擇的數(shù)據(jù)庫(kù),若上一次選擇的是排列在最后的一個(gè)數(shù)據(jù)庫(kù),則可將排列在第一位的數(shù)據(jù)庫(kù)作為當(dāng)前選擇的數(shù)據(jù)庫(kù)。所述首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄是指,業(yè)務(wù)系統(tǒng)啟動(dòng)后,服務(wù)器上電后第一次執(zhí)行數(shù)據(jù)記錄寫(xiě)入操作。在本步驟101的方案中,服務(wù)器在需要向任一數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),都可以按照本步驟101的方案執(zhí)行。本實(shí)施例中的序列表是在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),利用諸如數(shù)據(jù)庫(kù)結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)等計(jì)算機(jī)語(yǔ)言創(chuàng)建的。序列表可以用來(lái)存放序列號(hào)以及序列號(hào)的生成信息,在服務(wù)器對(duì)數(shù)據(jù)庫(kù)進(jìn)行一條數(shù)據(jù)記錄的寫(xiě)入操作時(shí),需要從序列表中獲取一個(gè)序列號(hào),以標(biāo)識(shí)該條數(shù)據(jù)記錄。在本實(shí)施例的方案中,包括但不限于以下三種方式在序列表中生成序列號(hào):第一種方式:根據(jù)為每個(gè)數(shù)據(jù)庫(kù)中設(shè)置的標(biāo)號(hào)來(lái)確定數(shù)據(jù)庫(kù)中序列表的初始序列號(hào),進(jìn)而按照一定的增長(zhǎng)步長(zhǎng)增長(zhǎng)同一序列表中的其他序列號(hào),具體可以為:第一步,按照標(biāo)號(hào)從小到大的順序,依次為各數(shù)據(jù)庫(kù)設(shè)置標(biāo)號(hào)。第二步,將數(shù)據(jù)庫(kù)的標(biāo)號(hào)作為該數(shù)據(jù)庫(kù)中序列表的初始序列號(hào),并判斷所述多個(gè)數(shù)據(jù)庫(kù)的數(shù)量D是否為2的指數(shù)倍,所述D為大于I的正整數(shù),若是,則執(zhí)行第三步,若否,則執(zhí)行第四步。第三步,針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以D為增長(zhǎng)步長(zhǎng),得到的序列號(hào)與該初始序列號(hào)一起作為該序列表中的序列號(hào),此時(shí),完成序列號(hào)的生成操作。第四步,確定小于D且距離D最近的2的指數(shù)倍數(shù)值X。第五步,針對(duì)標(biāo)號(hào)不小于D-X且小于X的數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以X為增長(zhǎng)步長(zhǎng),得到的序列號(hào)作為該序列表中的序列號(hào);針對(duì)剩余數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以2X為增長(zhǎng)步長(zhǎng),得到的序列號(hào)作為該序列表中的序列號(hào)。例如,假設(shè)數(shù)據(jù)庫(kù)數(shù)目D為4,也就是數(shù)據(jù)庫(kù)的數(shù)量D是2的指數(shù)倍的情況,此時(shí),可設(shè)定各數(shù)據(jù)庫(kù)標(biāo)號(hào)為0、1、2、3,各數(shù)據(jù)庫(kù)中序列表的初始序列號(hào)分別為0、1、2、3。針對(duì)標(biāo)號(hào)為O的數(shù)據(jù)庫(kù),其中序列表的初始序列號(hào)為0,并以4為增長(zhǎng)步長(zhǎng),得到的序列號(hào)4、8、12、16,...與O—起作為標(biāo)號(hào)為O的數(shù)據(jù)庫(kù)中序列表的序列號(hào)。針對(duì)其他數(shù)據(jù)庫(kù)中序列表的序列號(hào)生成過(guò)程類(lèi)似。再例如,假設(shè)數(shù)據(jù)庫(kù)數(shù)目D為5,也就是數(shù)據(jù)庫(kù)的數(shù)量D不是2的指數(shù)倍的情況,此時(shí),仍可設(shè)定各數(shù)據(jù)庫(kù)標(biāo)號(hào)為0、1、2、3、4,各數(shù)據(jù)庫(kù)中序列表的初始序列號(hào)分別為0、1、2、3、4。與5最接近的2的指數(shù)倍數(shù)值X為4。標(biāo)號(hào)不小于D-X且小于X的數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)1、數(shù)據(jù)庫(kù)2和數(shù)據(jù)庫(kù)3,以數(shù)據(jù)庫(kù)I為例,該數(shù)據(jù)庫(kù)I中初始序列號(hào)為1,并以4為增長(zhǎng)步長(zhǎng),得到的序列號(hào)5、9、13、17、...與I一起作為標(biāo)號(hào)為I的數(shù)據(jù)庫(kù)中序列表的序列號(hào);針對(duì)數(shù)據(jù)庫(kù)2和數(shù)據(jù)庫(kù)3,其做法與針對(duì)數(shù)據(jù)庫(kù)I的做法相同。剩余的標(biāo)號(hào)為O和4的數(shù)據(jù)庫(kù),以標(biāo)號(hào)為O的數(shù)據(jù)庫(kù)為例,該數(shù)據(jù)庫(kù)O中初始序列號(hào)為0,并以8為增長(zhǎng)步長(zhǎng),得到的序列號(hào)8、16、24、32、...與O—起作為標(biāo)號(hào)為O的數(shù)據(jù)庫(kù)中序列表的序列號(hào);針對(duì)數(shù)據(jù)庫(kù)4,其做法與針對(duì)數(shù)據(jù)庫(kù)O的做法相同。需要說(shuō)明的是,在第一種方式下,數(shù)據(jù)庫(kù)的標(biāo)號(hào)是默認(rèn)從O開(kāi)始依次增加I的數(shù)字命名方式來(lái)設(shè)定的,本實(shí)施例也不限于其他利用數(shù)字命名方式(如從I開(kāi)始)來(lái)為數(shù)據(jù)庫(kù)設(shè)定標(biāo)號(hào)。通過(guò)上述第一種方式,由于是針對(duì)2的指數(shù)倍數(shù)值來(lái)確定增長(zhǎng)步長(zhǎng),因此,可簡(jiǎn)便地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中序列表的拆分。例如,當(dāng)某一數(shù)據(jù)庫(kù)需要拆分為K個(gè)子數(shù)據(jù)庫(kù)時(shí),所述數(shù)據(jù)庫(kù)中的序列表也可拆分為K個(gè)子序列表,其中:所述K個(gè)子序列表中的任一子序列表的初始序列號(hào)為:拆分前序列表中可用的最小K個(gè)序列號(hào)中的一個(gè)序列號(hào),且任意兩個(gè)子序列表的初始序列號(hào)不相同,同時(shí),任一子序列表中序列號(hào)間的增長(zhǎng)步長(zhǎng)為拆分前序列表中序列號(hào)間步長(zhǎng)的K倍。例如,假設(shè)拆分前數(shù)據(jù)庫(kù)I中序列表I的序列號(hào)分別為0、4、8、12、16、20、....,其初始序列號(hào)為0,增長(zhǎng)步長(zhǎng)為4。當(dāng)該數(shù)據(jù)庫(kù)I拆分為數(shù)據(jù)庫(kù)11和數(shù)據(jù)庫(kù)12時(shí),針對(duì)數(shù)據(jù)庫(kù)11的序列表11中序列號(hào)為:0、8、16、24、...,其初始序列號(hào)為0,步長(zhǎng)為8;針對(duì)數(shù)據(jù)庫(kù)12的序列表12中序列號(hào)為:4、12、20、28...,其初始序列號(hào)為4,步長(zhǎng)為8。第二種方式:第一步,按照標(biāo)號(hào)從小到大的順序,依次為各數(shù)據(jù)庫(kù)設(shè)置標(biāo)號(hào)。第二步,將數(shù)據(jù)庫(kù)的標(biāo)號(hào)作為該數(shù)據(jù)庫(kù)中序列表的初始序列號(hào)。第三步,針對(duì)任一序列表,將該序列表中的初始序列號(hào)依次以D為增長(zhǎng)步長(zhǎng),得到的序列號(hào)作為該序列表中的序列號(hào)。例如,假設(shè)數(shù)據(jù)庫(kù)的數(shù)目D為5,設(shè)定各數(shù)據(jù)庫(kù)標(biāo)號(hào)為0、1、2、3、4,各數(shù)據(jù)庫(kù)中序列表的初始序列號(hào)分別為0、1、2、3、4。針對(duì)標(biāo)號(hào)為O的數(shù)據(jù)庫(kù),其中序列表的初始序列號(hào)為0,并以5為增長(zhǎng)步長(zhǎng),得到的序列號(hào)5、10、15、20、...與O—起作為標(biāo)號(hào)為O的數(shù)據(jù)庫(kù)中序列表的序列號(hào)。針對(duì)其他數(shù)據(jù)庫(kù)中序列表的序列號(hào)生成過(guò)程類(lèi)似。第三種方式:為各數(shù)據(jù)庫(kù)中的序列表設(shè)定序列號(hào)區(qū)間。步驟102:服務(wù)器從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù)。本步驟102的具體實(shí)現(xiàn)方式包括但不限于以下兩種方式:第一種方式:服務(wù)器從數(shù)據(jù)庫(kù)的序列表中查找還沒(méi)有使用過(guò)的序列號(hào),并從還沒(méi)有使用過(guò)的序列號(hào)中選擇N個(gè)序列號(hào)作為本步驟102中的N個(gè)可用序列號(hào)。第二種方式:為了避免多個(gè)服務(wù)器從同一數(shù)據(jù)庫(kù)中同時(shí)獲取序列號(hào)導(dǎo)致?lián)屨紱_突的問(wèn)題,第二種方式對(duì)第一種方式進(jìn)行優(yōu)化,具體如下:第一步,服務(wù)器讀取選擇的數(shù)據(jù)庫(kù)中序列表的下一可用序列號(hào)Current_next_Value0在本實(shí)施例的方案,服務(wù)器每當(dāng)從序列表中獲取N個(gè)序列號(hào)后,可將該序列表中與本次獲取的N個(gè)序列號(hào)中最后一個(gè)序列號(hào)相鄰的下一個(gè)沒(méi)有使用過(guò)的序列號(hào)作為Current—next_value。例如,某一序列表中序列號(hào)為:0、4、8、12、16、20、...,服務(wù)器某次獲取的4個(gè)序列號(hào)為0、4、8、12,則將16作為Current_next_value回寫(xiě)至該序列表中。第二步,服務(wù)器根據(jù)公式(I)更新讀取的Current_next_value:Current_next_value_new=Current_next_value+increase_stepXN(I)其中,Current_next_value_new為更新后的下一可用序列號(hào),increase_step為增長(zhǎng)步長(zhǎng),N為序列表中從Current_next_value起連續(xù)獲取的序列號(hào)的個(gè)數(shù)。第三步,服務(wù)器判斷Current_next_value_new是否能夠回寫(xiě)至序列表中,若是,則執(zhí)行第四步;若否,則執(zhí)行第五步。由于可能出現(xiàn)多個(gè)服務(wù)器同時(shí)從同一數(shù)據(jù)庫(kù)獲取序列號(hào)的情況,因此,當(dāng)服務(wù)器I將Current_next_value_new回寫(xiě)至序列表時(shí),若已有其他服務(wù)器2搶先從該數(shù)據(jù)庫(kù)獲取了序列表,也就是說(shuō),服務(wù)器2已先于服務(wù)器I按照上述公式(I)計(jì)算出Current_neXt_value_new并回寫(xiě)至序列表中,因此,服務(wù)器I將無(wú)法再次寫(xiě)入相同內(nèi)容或是數(shù)值較小的Current_next_value_new;若此時(shí)沒(méi)有其他服務(wù)器2搶先獲取序列表,則服務(wù)器I根據(jù)公式(I)計(jì)算出的Current_next_value_new大于序列表中當(dāng)前已存儲(chǔ)的Current_next_value,因此,服務(wù)器I可從該序列表中獲取可用的序列號(hào)。第四步,服務(wù)器將所述Current_next_value_new回寫(xiě)至序列表,此時(shí),序列表中的Current_next_value的內(nèi)容更新為Current_next_value_new的內(nèi)容,并將從序列表中讀取的從Current_next_value起連續(xù)的N個(gè)序列號(hào)作為獲取的N個(gè)可用的序列號(hào)。例如,某一序列表中序列號(hào)增長(zhǎng)步長(zhǎng)為4,內(nèi)容分別為:0、4、8、12、16、20、24、28、32,...,服務(wù)器每次獲取的序列號(hào)數(shù)量N為4。若在第一步獲取的某次獲取的Current_next_value為16,則通過(guò)公式(I)計(jì)算出的Current_next_value_new為32,此時(shí),該Current_next_value_new為32的值能夠回寫(xiě)至序列表,服務(wù)器可將16、20、24、28作為獲取的4個(gè)可用的序列號(hào)。第五步,服務(wù)器按照數(shù)據(jù)庫(kù)查詢(xún)順序讀取下一個(gè)數(shù)據(jù)庫(kù),并針對(duì)所述下一個(gè)數(shù)據(jù)庫(kù)跳轉(zhuǎn)重新開(kāi)始執(zhí)行第一步,直至獲取N個(gè)可用的序列號(hào)。步驟103:服務(wù)器根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。步驟104:服務(wù)器再次需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),判斷已獲取的N個(gè)可用序列號(hào)是否都已使用過(guò),若是,則執(zhí)行步驟105;若否,則執(zhí)行步驟106。步驟105:重新執(zhí)行按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,跳轉(zhuǎn)至步驟101。步驟106:從所述已獲取的N個(gè)可用序列號(hào)中選擇還沒(méi)有使用過(guò)的可用序列號(hào),并根據(jù)選擇的所述可用序列號(hào)將數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。本實(shí)施例方案應(yīng)用在SQL數(shù)據(jù)庫(kù)系統(tǒng)、Oracel數(shù)據(jù)庫(kù)系統(tǒng)或其他數(shù)據(jù)庫(kù)系統(tǒng)中,可以但不局限于利用SQL語(yǔ)言來(lái)實(shí)現(xiàn)。實(shí)施例二考慮到服務(wù)器在獲取序列號(hào)時(shí)的避免搶占沖突及確保各服務(wù)器獲取的序列號(hào)的唯一性,確保數(shù)據(jù)庫(kù)的一致性和完整性,本實(shí)施例二結(jié)合鎖技術(shù)來(lái)詳細(xì)描述本實(shí)施例一的優(yōu)選實(shí)現(xiàn)方案。如圖2所示,其為本申請(qǐng)實(shí)施例二中序列號(hào)的處理方法步驟示意圖,所述方法包括以下步驟:步驟201:服務(wù)器獲取同步鎖。所述同步鎖鎖定的粒度為數(shù)據(jù)組表。所述數(shù)據(jù)組表為所述多個(gè)數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)庫(kù)中記錄同一業(yè)務(wù)的數(shù)據(jù)表的總稱(chēng),組成數(shù)據(jù)組表的數(shù)據(jù)表中的每條數(shù)據(jù)記錄均需獲得全局唯一的可用序列號(hào)。在本步驟201中獲取同步鎖可避免多個(gè)服務(wù)器發(fā)起的請(qǐng)求并發(fā)問(wèn)題,在一個(gè)時(shí)間點(diǎn)只允許一個(gè)線(xiàn)程嘗試獲取一個(gè)數(shù)據(jù)庫(kù)中的序列號(hào)。較優(yōu)的,本方案若用編程來(lái)實(shí)現(xiàn),則其核心數(shù)據(jù)結(jié)構(gòu)可以為下述形式:tabIe_group_name//需要使用全局唯一序列號(hào)的數(shù)據(jù)組表的名稱(chēng),每個(gè)分//組之間相互獨(dú)立,相同table_group_name的序列表記Il錄負(fù)責(zé)維護(hù)同一組數(shù)據(jù)表的序列號(hào),該序列號(hào)字段在//序列表中需要確保唯一性current_next_value//當(dāng)前下一個(gè)有效的值,每次程序申領(lǐng)序列號(hào)時(shí),都會(huì)Il將本批有效序列號(hào)的最大值的下一個(gè)有效值更新到//current_next_value中increase_step//每個(gè)序列號(hào)增長(zhǎng)的步長(zhǎng),在本申請(qǐng)的實(shí)施例中其值為//X或2Xtake_patch//系統(tǒng)每次批量獲取的有效序列號(hào)的個(gè)數(shù),在本申請(qǐng)的//實(shí)施例中其值為N步驟202:服務(wù)器判斷本地是否有可用序列號(hào),若是,則利用該可用序列號(hào)進(jìn)行數(shù)據(jù)記錄的寫(xiě)入操作,否則,執(zhí)行步驟203。若本步驟202是服務(wù)器上首次發(fā)出的獲取可用序列號(hào)的請(qǐng)求,則可按照實(shí)施例一中步驟102的方式從隨機(jī)選擇的數(shù)據(jù)庫(kù)中獲取N個(gè)可用序列號(hào);否則,服務(wù)器判斷上一次從數(shù)據(jù)庫(kù)中獲取的N個(gè)可用序列號(hào)是否已用盡,若是,則執(zhí)行步驟203,繼續(xù)從數(shù)據(jù)庫(kù)中獲取N個(gè)可用序列號(hào),否則,直接使用本地已存儲(chǔ)的還沒(méi)有使用過(guò)的可用序列號(hào)。步驟203:服務(wù)器等待發(fā)出獲取可用序列號(hào)的請(qǐng)求。步驟204:服務(wù)器向數(shù)據(jù)庫(kù)發(fā)出獲取可用序列號(hào)的請(qǐng)求,從該數(shù)據(jù)庫(kù)中獲取序列表中的Current_next_value步驟205:服務(wù)器可采用寬松的加鎖方式(樂(lè)觀鎖方式),避免發(fā)生更新沖突,以及根據(jù)所述Current_next_value計(jì)算出Current_next_value_new,并判斷Current_next_value_new能否回寫(xiě)至序列表,若能,則執(zhí)行步驟206;否則,執(zhí)行步驟207。步驟206:服務(wù)器將所述Current_next_value_new回寫(xiě)至序列表,并將從序列表中讀取的從Current_next_value起連續(xù)的N個(gè)序列號(hào)作為獲取的N個(gè)可用的序列號(hào),寫(xiě)入本地緩存,并利用該可用序列號(hào)進(jìn)行數(shù)據(jù)記錄的寫(xiě)入操作,并釋放同步鎖和樂(lè)觀鎖。在本實(shí)施例的方案中,服務(wù)器當(dāng)前處理的序列表可稱(chēng)之為當(dāng)前序列表,因此,在本步驟206中,服務(wù)器可預(yù)先設(shè)定下一數(shù)據(jù)庫(kù)中的序列表作為當(dāng)前序列表,以便于下一次獲取N個(gè)可用序列號(hào)使用。步驟207:服務(wù)器按照數(shù)據(jù)庫(kù)查詢(xún)順序讀取下一個(gè)數(shù)據(jù)庫(kù),并跳轉(zhuǎn)至步驟204。在本實(shí)施例的方案中,服務(wù)器當(dāng)前處理的序列表可稱(chēng)之為當(dāng)前序列表,因此,在本步驟207中,服務(wù)器將下一數(shù)據(jù)庫(kù)中的序列表作為當(dāng)前序列表,重新從中獲取N個(gè)可用序列號(hào)。通過(guò)本實(shí)施例二的方式不論是否能夠獲取可用的N個(gè)序列號(hào),只要退出條件滿(mǎn)足(如退出時(shí)間到達(dá)或無(wú)可用序列號(hào)),就退出本實(shí)施例的方案,結(jié)束針對(duì)序列號(hào)的獲取操作。實(shí)施例三本申請(qǐng)實(shí)施例三提出一種與實(shí)施例一相同構(gòu)思下的序列號(hào)處理設(shè)備,如圖3所示,包括:選擇模塊11、獲取模塊12和寫(xiě)入模塊13,其中:選擇模塊11,用于在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表;獲取模塊12,用于從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù);寫(xiě)入模塊13,用于根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。具體的,所述選擇模塊11,包括:第一選擇單元21,用于若首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則從所述多個(gè)數(shù)據(jù)庫(kù)中隨機(jī)選擇一個(gè)數(shù)據(jù)庫(kù)。第二選擇單元22,用于若不是首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則確定上一次選擇的數(shù)據(jù)庫(kù),并根據(jù)所述數(shù)據(jù)庫(kù)查詢(xún)順序,確定當(dāng)前選擇的數(shù)據(jù)庫(kù)。較優(yōu)的,所述設(shè)備還包括:標(biāo)號(hào)設(shè)置模塊14,用于為所述多個(gè)數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)庫(kù)按照標(biāo)號(hào)從小到大的順序依次設(shè)置標(biāo)號(hào)。序列號(hào)生成模塊15,用于針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,通過(guò)以下方式生成序列表中的序列號(hào):將數(shù)據(jù)庫(kù)的標(biāo)號(hào)作為該數(shù)據(jù)庫(kù)中序列表的初始序列號(hào),并判斷所述多個(gè)數(shù)據(jù)庫(kù)的數(shù)量D是否為2的指數(shù)倍,所述D為大于I的正整數(shù);若是,針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以D為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);若否,確定小于D且距離D最近的2的指數(shù)倍數(shù)值X;針對(duì)標(biāo)號(hào)不小于D-X且小于X的數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);針對(duì)剩余數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以2X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào)。較優(yōu)的,所述設(shè)備還包括:拆分模塊16,用于當(dāng)任一數(shù)據(jù)庫(kù)需要拆分為K個(gè)子數(shù)據(jù)庫(kù)時(shí),所述數(shù)據(jù)庫(kù)中的序列表也拆分為K個(gè)子序列表,所述K為大于I的正整數(shù);其中:所述K個(gè)子序列表中的任一子序列表的初始序列號(hào)為:拆分前序列表中可用的最小K個(gè)序列號(hào)中的一個(gè)序列號(hào),且任意兩個(gè)子序列表的初始序列號(hào)不相同,任一子序列表中序列號(hào)間的增長(zhǎng)步長(zhǎng)為拆分前序列表中序列號(hào)間步長(zhǎng)的K倍。較優(yōu)的,所述獲取模塊12具體包括:讀取單元31,用于讀取選擇的數(shù)據(jù)庫(kù)中序列表的下一可用序列號(hào)Current_next_Value0更新單元32,用于根據(jù)以下公式更新讀取的Current_next_value:Current_next_value_new=Current_next_value+increase_stepXN其中,Current_next_value_new為更新后的下一可用序列號(hào),increase_step為增長(zhǎng)步長(zhǎng),N為序列表中從Current_next_value起連續(xù)獲取的序列號(hào)的個(gè)數(shù)。判斷單元33,用于判斷Current_next_value_new是否能夠回寫(xiě)至序列表中。獲取單元34,用于當(dāng)判斷單元判斷結(jié)果為是時(shí),將所述Current_next_value_new回寫(xiě)至序列表,并將從序列表中讀取的從Current_next_value起連續(xù)的N個(gè)序列號(hào)為獲取的N個(gè)可用的序列號(hào)。跳轉(zhuǎn)單元35,用于當(dāng)判斷單元判斷結(jié)果為否時(shí),按照數(shù)據(jù)庫(kù)查詢(xún)順序讀取下一個(gè)數(shù)據(jù)庫(kù)中序列表的Current_next_value,并跳轉(zhuǎn)至更新單元32。較優(yōu)的,所述設(shè)備還包括:判斷模塊17,用于再次需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),判斷從所述獲取模塊12獲取的N個(gè)可用序列號(hào)是否都已使用過(guò)。第一跳轉(zhuǎn)模塊18,用于當(dāng)判斷模塊的結(jié)果為是時(shí),跳轉(zhuǎn)至選擇模塊11。第二跳轉(zhuǎn)模塊19,用于當(dāng)判斷模塊的結(jié)果為否時(shí),跳轉(zhuǎn)至寫(xiě)入模塊13。通過(guò)本申請(qǐng)實(shí)施例一、實(shí)施例二及實(shí)施例三提供的序列號(hào)處理的方法及設(shè)備,由于服務(wù)器可以按查詢(xún)順序從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的序列表來(lái)獲取序列號(hào),并不局限于某一個(gè)數(shù)據(jù)庫(kù)中序列表來(lái)獲取序列號(hào),有效的弱化了序列表和數(shù)據(jù)庫(kù)之間的依賴(lài)關(guān)系,實(shí)現(xiàn)了序列號(hào)的共享,即使出現(xiàn)某一數(shù)據(jù)庫(kù)中的序列號(hào)耗盡或數(shù)據(jù)庫(kù)故障的情況,服務(wù)器仍然可以從其他數(shù)據(jù)庫(kù)中獲取序列號(hào),克服了由于部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡后,就無(wú)法向該數(shù)據(jù)庫(kù)繼續(xù)寫(xiě)入數(shù)據(jù)記錄的問(wèn)題;優(yōu)選地,在為各個(gè)數(shù)據(jù)庫(kù)中的序列表生成序列號(hào)時(shí),以2的指數(shù)倍為基礎(chǔ),使數(shù)據(jù)庫(kù)的拆分以及數(shù)據(jù)庫(kù)中序列表的拆分更加便利;再優(yōu)選地,本實(shí)施例的方案在獲取N個(gè)可用序列號(hào)的過(guò)程中,使用了同步鎖和樂(lè)觀鎖,避免了因多個(gè)服務(wù)器同時(shí)從某一數(shù)據(jù)庫(kù)的序列表中獲取可用序列號(hào)引起的序列號(hào)搶占沖突及在序列號(hào)更新過(guò)程中的搶占沖突,確保了數(shù)據(jù)庫(kù)的一致性和完整性。本領(lǐng)域內(nèi)的技術(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ì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1.一種序列號(hào)的處理方法,其特征在于,包括:服務(wù)器在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表;服務(wù)器從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù);服務(wù)器根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。2.如權(quán)利要求1所述的序列號(hào)的處理方法,其特征在于,按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),具體包括:若服務(wù)器首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則從所述多個(gè)數(shù)據(jù)庫(kù)中隨機(jī)選擇一個(gè)數(shù)據(jù)庫(kù);若服務(wù)器不是首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則確定上一次選擇的數(shù)據(jù)庫(kù),并根據(jù)所述數(shù)據(jù)庫(kù)查詢(xún)順序,確定當(dāng)前選擇的數(shù)據(jù)庫(kù)。3.如權(quán)利要求1所述的序列號(hào)的處理方法,其特征在于,在服務(wù)器需向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄之前,所述方法還包括:為所述多個(gè)數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)庫(kù)按照標(biāo)號(hào)從小到大的順序依次設(shè)置標(biāo)號(hào);針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,通過(guò)以下方式生成序列表中的序列號(hào):將數(shù)據(jù)庫(kù)的標(biāo)號(hào)作為該數(shù)據(jù)庫(kù)中序列表的初始序列號(hào),并判斷所述多個(gè)數(shù)據(jù)庫(kù)的數(shù)量D是否為2的指數(shù)倍,所述D為大于I的正整數(shù);若是,針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以D為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);若否,確定小于D且距離D最近的2的指數(shù)倍數(shù)值X;針對(duì)標(biāo)號(hào)不小于D-X且小于X的數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);針對(duì)剩余數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以2X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào)。4.如權(quán)利要求3所述的序列號(hào)的處理方法,其特征在于,所述方法還包括:當(dāng)任一數(shù)據(jù)庫(kù)需要拆分為K個(gè)子數(shù)據(jù)庫(kù)時(shí),所述數(shù)據(jù)庫(kù)中的序列表也拆分為K個(gè)子序列表,所述K為大于I的正整數(shù);其中:所述K個(gè)子序列表中的任一子序列表的初始序列號(hào)為:拆分前序列表中可用的最小K個(gè)序列號(hào)中的一個(gè)序列號(hào),且任意兩個(gè)子序列表的初始序列號(hào)不相同,任一子序列表中序列號(hào)間的增長(zhǎng)步長(zhǎng)為拆分前序列表中序列號(hào)間步長(zhǎng)的K倍。5.如權(quán)利要求3所述的序列號(hào)的處理方法,其特征在于,服務(wù)器通過(guò)以下方式獲取N個(gè)可用序列號(hào):服務(wù)器讀取選擇的數(shù)據(jù)庫(kù)中序列表的下一可用序列號(hào)Current_next_value;服務(wù)器根據(jù)以下公式更新讀取的Current_next_value:Current_next_value_new=Current_next_value+increase_stepXN其中,Current_next_value_new為更新后的下一可用序列號(hào),increase_step為增長(zhǎng)步長(zhǎng),N為序列表中從Current_next_value起連續(xù)獲取的序列號(hào)的個(gè)數(shù);服務(wù)器判斷Current_next_value_new是否能夠回寫(xiě)至序列表中;若是,則將所述Current_next_value_new回寫(xiě)至序列表,并將從序列表中讀取的從Current_next_value起連續(xù)的N個(gè)序列號(hào)為獲取的N個(gè)可用的序列號(hào);若否,服務(wù)器按照數(shù)據(jù)庫(kù)查詢(xún)順序讀取下一個(gè)數(shù)據(jù)庫(kù)中序列表的Current_neXt_value,并重復(fù)執(zhí)行根據(jù)所述公式得到Current_next_value_new,以及判斷Current_next_value_new是否能夠回寫(xiě)至序列表的操作。6.如權(quán)利要求1所述的序列號(hào)的處理方法,其特征在于,所述方法還包括:服務(wù)器再次需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),判斷已獲取的N個(gè)可用序列號(hào)是否都已使用過(guò);若是,則重新執(zhí)行按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的操作;若否,從所述已獲取的N個(gè)可用序列號(hào)中選擇還沒(méi)有使用過(guò)的可用序列號(hào),并根據(jù)選擇的所述可用序列號(hào)將數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。7.—種序列號(hào)的處理設(shè)備,其特征在于,包括:選擇模塊,用于在需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),并讀取選擇的數(shù)據(jù)庫(kù)中的序列表;獲取模塊,用于從讀取的序列表中獲取N個(gè)可用序列號(hào),所述N為正整數(shù);寫(xiě)入模塊,用于根據(jù)獲取的可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。8.如權(quán)利要求7所述的序列號(hào)的處理設(shè)備,其特征在于,所述選擇模塊,具體包括:第一選擇單元,用于若首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則從所述多個(gè)數(shù)據(jù)庫(kù)中隨機(jī)選擇一個(gè)數(shù)據(jù)庫(kù);第二選擇單元,用于若不是首次向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄,則確定上一次選擇的數(shù)據(jù)庫(kù),并根據(jù)所述數(shù)據(jù)庫(kù)查詢(xún)順序,確定當(dāng)前選擇的數(shù)據(jù)庫(kù)。9.如權(quán)利要求7所述的序列號(hào)的處理設(shè)備,其特征在于,所述設(shè)備還包括:標(biāo)號(hào)設(shè)置模塊,用于為所述多個(gè)數(shù)據(jù)庫(kù)中的每個(gè)數(shù)據(jù)庫(kù)按照標(biāo)號(hào)從小到大的順序依次設(shè)置標(biāo)號(hào);序列號(hào)生成模塊,用于針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,通過(guò)以下方式生成序列表中的序列號(hào):將數(shù)據(jù)庫(kù)的標(biāo)號(hào)作為該數(shù)據(jù)庫(kù)中序列表的初始序列號(hào),并判斷所述多個(gè)數(shù)據(jù)庫(kù)的數(shù)量D是否為2的指數(shù)倍,所述D為大于I的正整數(shù);若是,針對(duì)任一數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以D為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);若否,確定小于D且距離D最近的2的指數(shù)倍數(shù)值X;針對(duì)標(biāo)號(hào)不小于D-X且小于X的數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào);針對(duì)剩余數(shù)據(jù)庫(kù)中的序列表,將該序列表中的初始序列號(hào)依次以2X為增長(zhǎng)步長(zhǎng)得到的序列號(hào)作為該序列表中的序列號(hào)。10.如權(quán)利要求9所述的序列號(hào)的處理設(shè)備,其特征在于,所述設(shè)備還包括:拆分模塊,用于當(dāng)任一數(shù)據(jù)庫(kù)需要拆分為K個(gè)子數(shù)據(jù)庫(kù)時(shí),所述數(shù)據(jù)庫(kù)中的序列表也拆分為K個(gè)子序列表,所述K為大于I的正整數(shù);其中:所述K個(gè)子序列表中的任一子序列表的初始序列號(hào)為:拆分前序列表中可用的最小K個(gè)序列號(hào)中的一個(gè)序列號(hào),且任意兩個(gè)子序列表的初始序列號(hào)不相同,任一子序列表中序列號(hào)間的增長(zhǎng)步長(zhǎng)為拆分前序列表中序列號(hào)間步長(zhǎng)的K倍。全文摘要本申請(qǐng)?zhí)岢鲆环N序列號(hào)的處理方法及設(shè)備,當(dāng)服務(wù)器需要向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)記錄時(shí),按照設(shè)定的數(shù)據(jù)庫(kù)查詢(xún)順序,從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù),讀取選擇的數(shù)據(jù)庫(kù)中的序列表,以及從讀取的序列表中獲取N個(gè)可用序列號(hào),并使用可用序列號(hào)將所述數(shù)據(jù)記錄寫(xiě)入數(shù)據(jù)庫(kù)中。由于服務(wù)器可以按查詢(xún)順序從多個(gè)數(shù)據(jù)庫(kù)中選擇一個(gè)數(shù)據(jù)庫(kù)的序列表來(lái)獲取序列號(hào),并不局限于某一個(gè)數(shù)據(jù)庫(kù)中序列表來(lái)獲取序列號(hào),有效的弱化了序列表和數(shù)據(jù)庫(kù)之間的依賴(lài)關(guān)系,實(shí)現(xiàn)了序列號(hào)的共享,即使出現(xiàn)某一數(shù)據(jù)庫(kù)中的序列號(hào)耗盡或數(shù)據(jù)庫(kù)故障的情況,服務(wù)器仍然可以從其他數(shù)據(jù)庫(kù)中獲取序列號(hào),克服了由于部分?jǐn)?shù)據(jù)庫(kù)中的序列號(hào)耗盡后,就無(wú)法向該數(shù)據(jù)庫(kù)繼續(xù)寫(xiě)入數(shù)據(jù)記錄的問(wèn)題。文檔編號(hào)G06F17/30GK103164418SQ201110412749公開(kāi)日2013年6月19日申請(qǐng)日期2011年12月12日優(yōu)先權(quán)日2011年12月12日發(fā)明者謝智永申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司