麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

數(shù)據(jù)庫(kù)主鍵生成裝置和數(shù)據(jù)庫(kù)主鍵生成方法

文檔序號(hào):6377965閱讀:291來(lái)源:國(guó)知局
專利名稱:數(shù)據(jù)庫(kù)主鍵生成裝置和數(shù)據(jù)庫(kù)主鍵生成方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)庫(kù)主鍵生成裝置和一種數(shù)據(jù)庫(kù)主鍵生成方法。
背景技術(shù)
在軟件系統(tǒng)開(kāi)發(fā)中,如果需要利用數(shù)據(jù)庫(kù)系統(tǒng)來(lái)存儲(chǔ)和管理數(shù)據(jù),就無(wú)法回避數(shù)據(jù)庫(kù)主鍵的設(shè)計(jì)問(wèn)題。好的數(shù)據(jù)庫(kù)主鍵設(shè)計(jì),具有高效、易用和可靠的特點(diǎn)。目前,數(shù)據(jù)庫(kù)主鍵的主流生成方法包括數(shù)據(jù)庫(kù)自增字段方法和⑶ID (全局統(tǒng)一標(biāo)識(shí)符)方法。自增字段方法由數(shù)據(jù)庫(kù)自增類型字段來(lái)實(shí)現(xiàn),由數(shù)據(jù)庫(kù)自動(dòng)生成和維護(hù),并確保唯一性。GUID方法是利用機(jī)器硬件的唯一性特征(例如網(wǎng)卡MAC地址的唯一性)并結(jié)合生成時(shí)間,來(lái)確保在全球 范圍內(nèi)不會(huì)出現(xiàn)重復(fù)的數(shù)值。自增字段通常數(shù)據(jù)類型為Int或Biglnt,存儲(chǔ)空間小且索引效率高。但使用時(shí)必須先插入數(shù)據(jù)庫(kù),才能確定ID值,這會(huì)造成編程時(shí)的很多不便。另外,自增字段的形式就是一個(gè)1、2、3、4這樣的序列,沒(méi)有任何實(shí)際意義,很不直觀易用。而⑶ID方式生成的ID,如果按字符串方式存儲(chǔ),需要占用36個(gè)字節(jié)。如果按數(shù)據(jù)庫(kù)特定類型存儲(chǔ),例如SqlServer的uniqueidentifier類型,需要占用16個(gè)字節(jié),不僅占用空間大,而且索引的效率遠(yuǎn)較Int類型差。索引效率差一方面是因?yàn)樗饕I較長(zhǎng),另一方面是因?yàn)镚UID本身是無(wú)序的,無(wú)法保證順序生成的記錄自然排序。COMB主鍵設(shè)計(jì)方案是對(duì)GUID無(wú)序問(wèn)題的改進(jìn),方法是保留⑶ID的前10個(gè)字節(jié),而用后6個(gè)字節(jié)表示⑶ID生成的時(shí)間,盡管做了這樣的改進(jìn),COMB主鍵方案的性能仍然遠(yuǎn)較Int類型低。另一方面,一些傳統(tǒng)的應(yīng)用往往選擇業(yè)務(wù)含義唯一的字段作為主鍵,例如賬單編號(hào)Bill200808080001 (編號(hào)方式為前綴+YYYYMMDD+流水號(hào))。這種形式的ID,遠(yuǎn)比毫無(wú)業(yè)務(wù)含義的自增整數(shù)和隨機(jī)的GUID更為直觀易用。ID如果做不到直觀易用,會(huì)增大使用難度及維護(hù)成本。不過(guò)在今天,用業(yè)務(wù)字段做主鍵的方案已不被推薦,因?yàn)闃I(yè)務(wù)字段可能發(fā)生修改,而一旦修改主鍵將會(huì)帶來(lái)一系列麻煩的問(wèn)題。最后,隨著云計(jì)算環(huán)境的普及,即便在企業(yè)的私有云環(huán)境中也需要考慮多數(shù)據(jù)中心分布的問(wèn)題。主鍵設(shè)計(jì)是否支持分布式部署?是否支持?jǐn)?shù)據(jù)遷移?也是需要解決的問(wèn)題。顯然,GUID方案可以保證分布式環(huán)境下主鍵依然唯一,但自增字段方案就無(wú)法滿足要求。因此,需要一種數(shù)據(jù)庫(kù)主鍵生成技術(shù),使得數(shù)據(jù)庫(kù)主鍵具有像業(yè)務(wù)編號(hào)那樣直觀易用的特點(diǎn),并可支持分布式數(shù)據(jù)部署環(huán)境。

發(fā)明內(nèi)容
本發(fā)明正是基于上述問(wèn)題,提出了一種數(shù)據(jù)庫(kù)主鍵生成技術(shù),可生成高性能數(shù)據(jù)庫(kù)主鍵,使得數(shù)據(jù)庫(kù)主鍵具有像業(yè)務(wù)編號(hào)那樣直觀易用的特點(diǎn),并可支持分布式數(shù)據(jù)部署環(huán)境。
有鑒于此,根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫(kù)主鍵生成裝置,包括讀取單元,讀取預(yù)設(shè)的主鍵配置表,從所述主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào);主鍵生成單元,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取所述主鍵分配表中記錄的主鍵的最大值,根據(jù)所述主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,所述主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。由于主鍵包含數(shù)據(jù)中心的站點(diǎn)編號(hào)信息,因此,該數(shù)據(jù)庫(kù)主鍵可支持分布式數(shù)據(jù)部署環(huán)境,另外該主鍵包括站點(diǎn)編號(hào)、生成日期和流水號(hào),且流水號(hào)按順序分配,因此,主鍵具有直觀易用的特點(diǎn)。在上述技術(shù)方案中,優(yōu)選的,所述讀取單元還用于從所述主鍵配置表中讀取默認(rèn)分配數(shù)量;所述數(shù)據(jù)庫(kù)主鍵生成裝置還包括預(yù) 分配單元,從數(shù)據(jù)庫(kù)中預(yù)先獲取所述默認(rèn)分配數(shù)量的主鍵,并將所述默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中;所述主鍵生成單元還用于將所述主鍵分配表中所述主鍵的最大值與所述內(nèi)存中的主鍵的最小值同步,在分配所述主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將所述內(nèi)存中的主鍵的最小值遞增,以得到所述當(dāng)前可分配的主鍵的值。為了避免每次分配主鍵時(shí)都需要與數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)交互,在該技術(shù)方案中,預(yù)先從數(shù)據(jù)庫(kù)中申請(qǐng)一定數(shù)量的主鍵值并緩存在內(nèi)存中,只有當(dāng)內(nèi)存中的主鍵值完全被分配時(shí),才與數(shù)據(jù)庫(kù)進(jìn)行下一次的交互。這樣,如果內(nèi)存中有可用主鍵值,則分配一個(gè)主鍵值的過(guò)程可瞬時(shí)完成,這極大地減少了網(wǎng)絡(luò)及數(shù)據(jù)庫(kù)的開(kāi)銷。在上述技術(shù)方案中,優(yōu)選的,所述主鍵生成單元包括分解子單元,從所述主鍵的最大值中分解出日期信息;分配子單元,在判斷出所述日期信息為當(dāng)前日期及當(dāng)前日期以前的日期時(shí),將包含當(dāng)前日期信息(今天)的主鍵的值作為所述當(dāng)前可分配的主鍵的值。主鍵包含日期信息并且限定了每天可分配的主鍵值的數(shù)量,因此,主鍵分配表中主鍵的最大值,是指當(dāng)前第一個(gè)可用的主鍵值(每次分配時(shí)可能是幾千個(gè)主鍵值,但第一個(gè)可分配的主鍵值就是該最大值,然后依次分配),如果該最大值的日期是昨天的,說(shuō)明包含今天日期的主鍵值還沒(méi)有開(kāi)始分配,那么就可將今天日期對(duì)應(yīng)的主鍵值進(jìn)行分配,如果今天對(duì)應(yīng)的主鍵值還不夠分配,就分配與明天對(duì)應(yīng)的主鍵值。在上述技術(shù)方案中,優(yōu)選的,所述分配子單元還用于在判斷出所述日期信息等于所述當(dāng)前日期,且包含所述當(dāng)前日期的主鍵的值已全被分配時(shí),將包含當(dāng)前日期以后的日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。即通過(guò)提前透支使用未來(lái)可用的主鍵值,以應(yīng)對(duì)當(dāng)天分配主鍵數(shù)量巨大的情況。如果該最大值是今天可分配的主鍵值中的最后一個(gè),但不夠分配,那么可分配與明天甚至是后天對(duì)應(yīng)的主鍵值。在上述任一技術(shù)方案中,優(yōu)選的,所述主鍵的類型包括整數(shù)類型。利用整數(shù)型,可以使主鍵存儲(chǔ)空間小且索引效率高,可進(jìn)一步提高主鍵的性能。根據(jù)本發(fā)明的另一方面,還提供了一種數(shù)據(jù)庫(kù)主鍵生成方法,包括步驟202,讀取預(yù)設(shè)的主鍵配置表,從所述主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào);步驟204,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取所述主鍵分配表中記錄的主鍵的最大值,根據(jù)所述主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,所述主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。
由于主鍵包含數(shù)據(jù)中心的站點(diǎn)編號(hào)信息,因此,該數(shù)據(jù)庫(kù)主鍵可支持分布式數(shù)據(jù)部署環(huán)境,另外該主鍵包括站點(diǎn)編號(hào)、生成日期和流水號(hào),且流水號(hào)按順序分配,因此,主鍵具有直觀易用的特點(diǎn)。在上述技術(shù)方案中,優(yōu)選的,所述步驟202還包括從所述主鍵配置表中還讀取默認(rèn)分配數(shù)量,從數(shù)據(jù)庫(kù)中預(yù)先獲取所述默認(rèn)分配數(shù)量的主鍵,并將所述默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中;所述步驟204還包括將所述主鍵分配表中所述主鍵的最大值與所述內(nèi)存中的主鍵的最小值同步,在分配所述主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將所述內(nèi)存中的主鍵的最小值遞增,以得到所述當(dāng)前可分配的主鍵的值。為了避免每次分配主鍵時(shí)都需要與數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)交互,在該技術(shù)方案中,預(yù)先從數(shù)據(jù)庫(kù)中申請(qǐng)一定數(shù)量的主鍵值并緩存在內(nèi)存中,只有當(dāng)內(nèi)存中的主鍵值完全被分配時(shí),才與數(shù)據(jù)庫(kù)進(jìn)行下一次的交互。這樣,如果內(nèi)存中有可用主鍵值,則分配一個(gè)主鍵值的過(guò)程可瞬時(shí)完成,這極大地減少了網(wǎng)絡(luò)及數(shù)據(jù)庫(kù)的開(kāi)銷。在上述技術(shù)方案中,優(yōu)選的,所述步驟204還包括從所述主鍵的最大值中分解出 日期信息;若判斷出所述日期信息為當(dāng)前日期及當(dāng)前日期以前的日期,則將包含當(dāng)前日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。主鍵包含日期信息并且限定了每天可分配的主鍵值的數(shù)量,因此,主鍵分配表中主鍵的最大值,是指當(dāng)前第一個(gè)可用的主鍵值(每次分配時(shí)可能是幾千個(gè)主鍵值,但第一個(gè)可分配的主鍵值就是該最大值,然后依次分配),如果該最大值的日期是昨天的,說(shuō)明包含今天日期的主鍵值還沒(méi)有開(kāi)始分配,那么就可將今天日期對(duì)應(yīng)的主鍵值進(jìn)行分配,如果今天對(duì)應(yīng)的主鍵值還不夠分配,就分配與明天對(duì)應(yīng)的主鍵值。在上述技術(shù)方案中,優(yōu)選的,若判斷出所述日期信息等于所述當(dāng)前日期,且包含所述當(dāng)前日期的主鍵的值已全被分配,則將包含當(dāng)前日期以后的主鍵的值作為所述當(dāng)前可分配的主鍵的值。即通過(guò)提前透支使用未來(lái)可用的主鍵值,以應(yīng)對(duì)當(dāng)天分配主鍵數(shù)量巨大的情況。如果該最大值是今天可分配的主鍵值中的最后一個(gè),但不夠分配,那么可分配與明天甚至是后天對(duì)應(yīng)的主鍵值。在上述任一技術(shù)方案中,優(yōu)選的,所述主鍵的類型包括整數(shù)類型。利用整數(shù)型,可以使主鍵存儲(chǔ)空間小且索引效率高,可進(jìn)一步提高主鍵的性能。根據(jù)本發(fā)明的技術(shù)方案,可獲得高性能的數(shù)據(jù)庫(kù)主鍵,使得主鍵既具有像業(yè)務(wù)編號(hào)一樣直觀易用的特點(diǎn),又可支持分布式數(shù)據(jù)部署環(huán)境。


圖I示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成裝置的框圖;圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成方法的流程圖;圖3示出了根據(jù)本發(fā)明的又一實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成方法的流程圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的中間層的Low-High算法的流程圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明并不限于下面公開(kāi)的具體實(shí)施例的限制。圖I示出了根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成裝置的框圖。如圖I所示,根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成裝置100包括讀取單元102,讀取預(yù)設(shè)的主鍵配置表,從主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào);主鍵生成單元104,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取主鍵分配表中記錄的主鍵的最大值,根據(jù)主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主 鍵的日期和流水號(hào)。由于主鍵包含數(shù)據(jù)中心的站點(diǎn)編號(hào)信息,因此,該數(shù)據(jù)庫(kù)主鍵可支持分布式數(shù)據(jù)部署環(huán)境,另外該主鍵包括站點(diǎn)編號(hào)、生成日期和流水號(hào),且流水號(hào)按順序分配,因此,主鍵具有直觀易用的特點(diǎn)。在上述技術(shù)方案中,優(yōu)選的,讀取單元102還用于從主鍵配置表中讀取默認(rèn)分配數(shù)量;數(shù)據(jù)庫(kù)主鍵生成裝置100還包括預(yù)分配單元106,從數(shù)據(jù)庫(kù)中預(yù)先獲取默認(rèn)分配數(shù)量的主鍵,并將默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中;主鍵生成單元104還用于將主鍵分配表中主鍵的最大值與內(nèi)存中的主鍵的最小值同步,在分配主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將內(nèi)存中的主鍵的最小值遞增,以得到當(dāng)前可分配的主鍵的值。為了避免每次分配主鍵時(shí)都需要與數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)交互,在該技術(shù)方案中,預(yù)先從數(shù)據(jù)庫(kù)中申請(qǐng)一定數(shù)量的主鍵值并緩存在內(nèi)存中,只有當(dāng)內(nèi)存中的主鍵值完全被分配時(shí),才與數(shù)據(jù)庫(kù)進(jìn)行下一次的交互。這樣,如果內(nèi)存中有可用主鍵值,則分配一個(gè)主鍵值的過(guò)程可瞬時(shí)完成,這極大地減少了網(wǎng)絡(luò)及數(shù)據(jù)庫(kù)的開(kāi)銷。在上述技術(shù)方案中,優(yōu)選的,主鍵生成單元104包括分解子單元1042,從主鍵的最大值中分解出日期信息;分配子單元1044,在判斷出日期信息為當(dāng)前日期及當(dāng)前日期以前的日期時(shí),將包含當(dāng)前日期信息(今天)的主鍵的值作為當(dāng)前可分配的主鍵的值。主鍵包含日期信息并且限定了每天可分配的主鍵值的數(shù)量,因此,主鍵分配表中主鍵的最大值,是指當(dāng)前第一個(gè)可用的主鍵值(每次分配時(shí)可能是幾千個(gè)主鍵值,但第一個(gè)可分配的主鍵值就是該最大值,然后依次分配),如果該最大值的日期是昨天的,說(shuō)明包含今天日期的主鍵值還沒(méi)有開(kāi)始分配,那么就可將今天日期對(duì)應(yīng)的主鍵值進(jìn)行分配,如果今天對(duì)應(yīng)的主鍵值還不夠分配,就分配與明天對(duì)應(yīng)的主鍵值。在上述技術(shù)方案中,優(yōu)選的,分配子單元1044還用于在判斷出日期信息等于當(dāng)前日期,且包含當(dāng)前日期的主鍵的值已全被分配時(shí),將包含當(dāng)前日期以后的日期信息的主鍵的值作為當(dāng)前可分配的主鍵的值。即通過(guò)提前透支使用未來(lái)可用的主鍵值,以應(yīng)對(duì)當(dāng)天分配主鍵數(shù)量巨大的情況。如果該最大值是今天可分配的主鍵值中的最后一個(gè),但不夠分配,那么可分配與明天甚至是后天對(duì)應(yīng)的主鍵值。在上述任一技術(shù)方案中,優(yōu)選的,主鍵的類型包括高效的整數(shù)類型。利用整數(shù)型,可以使主鍵存儲(chǔ)空間小且索引效率高,可進(jìn)一步提高主鍵的性能。圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成方法的流程圖。
如圖2所示,根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)庫(kù)主鍵生成方法,包括步驟202,讀取預(yù)設(shè)的主鍵配置表,從主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào);步驟204,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取主鍵分配表中記錄的主鍵的最大值,根據(jù)主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。由于主鍵包含數(shù)據(jù)中心的站點(diǎn)編號(hào)信息,因此,該數(shù)據(jù)庫(kù)主鍵可支持分布式數(shù)據(jù)部署環(huán)境,另外該主鍵包括站點(diǎn)編號(hào)、生成日期和流水號(hào),且流水號(hào)按順序分配,因此,主鍵具有直觀易用的特點(diǎn)。在上述技術(shù)方案中,優(yōu)選的,步驟202還可以包括從主鍵配置表中還讀取默認(rèn)分配數(shù)量,從數(shù)據(jù)庫(kù)中預(yù)先獲取默認(rèn)分配數(shù)量的主鍵,并將默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中;步驟204還可以包括將主鍵分配表中主鍵的最大值與內(nèi)存中的主鍵的最小值同步,在分配主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將內(nèi)存中的主鍵的最小值遞增,以得到當(dāng)前可分配的主鍵的值。為了避免每次分配主鍵時(shí)都需要與數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)交互,在該技術(shù)方案中,預(yù)先從數(shù)據(jù)庫(kù)中申請(qǐng)一定數(shù)量的主鍵值并緩存在內(nèi)存中,只有當(dāng)內(nèi)存中的主鍵值完全被分配時(shí),··才與數(shù)據(jù)庫(kù)進(jìn)行下一次的交互。這樣,如果內(nèi)存中有可用主鍵值,則分配一個(gè)主鍵值的過(guò)程可瞬時(shí)完成,這極大地減少了網(wǎng)絡(luò)及數(shù)據(jù)庫(kù)的開(kāi)銷。在上述技術(shù)方案中,優(yōu)選的,步驟204還可以包括從主鍵的最大值中分解出日期信息;若判斷出日期信息為當(dāng)前日期及當(dāng)前日期以前的日期,則將包含當(dāng)前日期信息的主鍵的值作為當(dāng)前可分配的主鍵的值。主鍵包含日期信息并且限定了每天可分配的主鍵值的數(shù)量,因此,主鍵分配表中主鍵的最大值,是指當(dāng)前第一個(gè)可用的主鍵值(每次分配時(shí)可能是幾千個(gè)主鍵值,但第一個(gè)可分配的主鍵值就是該最大值,然后依次分配),如果該最大值的日期是昨天的,說(shuō)明包含今天日期的主鍵值還沒(méi)有開(kāi)始分配,那么就可將今天日期對(duì)應(yīng)的主鍵值進(jìn)行分配,如果今天對(duì)應(yīng)的主鍵值還不夠分配,就分配與明天對(duì)應(yīng)的主鍵值。在上述技術(shù)方案中,優(yōu)選的,若判斷出日期信息等于當(dāng)前日期,且包含當(dāng)前日期的主鍵的值已全被分配,則將包含當(dāng)前日期以后的主鍵的值作為當(dāng)前可分配的主鍵的值。即通過(guò)提前透支使用未來(lái)可用的主鍵值,以應(yīng)對(duì)當(dāng)天分配主鍵數(shù)量巨大的情況。如果該最大值是今天可分配的主鍵值中的最后一個(gè),但不夠分配,那么可分配與明天甚至是后天對(duì)應(yīng)的主鍵值。在上述任一技術(shù)方案中,優(yōu)選的,主鍵的類型包括高效的整數(shù)類型。利用整數(shù)型,可以使主鍵存儲(chǔ)空間小且索引效率高,可進(jìn)一步提高主鍵的性能。接下來(lái)結(jié)合圖3和圖4來(lái)詳細(xì)說(shuō)明根據(jù)本發(fā)明的實(shí)施例。一 . ID編碼方案(本實(shí)施例中的ID即主鍵值)高性能的數(shù)據(jù)庫(kù)主鍵方案要求ID使用整數(shù)類型,本專利的創(chuàng)新之處在于將三類不同的信息,通過(guò)位移的方式包含在一個(gè)整型ID中。依據(jù)使用64位長(zhǎng)整數(shù)還是32位整數(shù),對(duì)ID的編碼方案如下I.使用BigInt整數(shù)類型的編碼方案,如下表所示
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)主鍵生成裝置,其特征在于,包括 讀取單元,讀取預(yù)設(shè)的主鍵配置表,從所述主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào); 主鍵生成單元,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取所述主鍵分配表中記錄的主鍵的最大值,根據(jù)所述主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,所述主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。
2.根據(jù)權(quán)利要求I所述的數(shù)據(jù)庫(kù)主鍵生成裝置,其特征在于,所述讀取單元還用于從所述主鍵配置表中讀取默認(rèn)分配數(shù)量; 所述數(shù)據(jù)庫(kù)主鍵生成裝置還包括預(yù)分配單元,從數(shù)據(jù)庫(kù)中預(yù)先獲取所述默認(rèn)分配數(shù)量的主鍵,并將所述默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中; 所述主鍵生成單元還用于將所述主鍵分配表中所述主鍵的最大值與所述內(nèi)存中的主鍵的最小值同步,在分配所述主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將所述內(nèi)存中的主鍵的最小值遞增,以得到所述當(dāng)前可分配的主鍵的值。
3.根據(jù)權(quán)利要求I所述的數(shù)據(jù)庫(kù)主鍵生成裝置,其特征在于,所述主鍵生成單元包括分解子單元,從所述主鍵的最大值中分解出日期信息; 分配子單元,在判斷出所述日期信息為當(dāng)前日期及當(dāng)前日期以前的日期時(shí),將包含當(dāng)前日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)庫(kù)主鍵生成裝置,其特征在于,所述分配子單元還用于在判斷出所述日期信息等于所述當(dāng)前日期,且包含所述當(dāng)前日期的主鍵的值已全被分配時(shí),將包含當(dāng)前日期以后的日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)所述的數(shù)據(jù)庫(kù)主鍵生成裝置,其特征在于,所述主鍵的類型包括整數(shù)類型。
6.一種數(shù)據(jù)庫(kù)主鍵生成方法,其特征在于,包括 步驟202,讀取預(yù)設(shè)的主鍵配置表,從所述主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào); 步驟204,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取所述主鍵分配表中記錄的主鍵的最大值,根據(jù)所述主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,所述主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫(kù)主鍵生成方法,其特征在于,所述步驟202還包括從所述主鍵配置表中讀取默認(rèn)分配數(shù)量,從數(shù)據(jù)庫(kù)中預(yù)先獲取所述默認(rèn)分配數(shù)量的主鍵,并將所述默認(rèn)分配數(shù)量的主鍵放入內(nèi)存中; 所述步驟204還包括將所述主鍵分配表中所述主鍵的最大值與所述內(nèi)存中的主鍵的最小值同步,在分配所述主鍵時(shí),調(diào)用存儲(chǔ)過(guò)程,將所述內(nèi)存中的主鍵的最小值遞增,以得到所述當(dāng)前可分配的主鍵的值。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫(kù)主鍵生成方法,其特征在于,所述步驟204還包括從所述主鍵的最大值中分解出日期信息; 若判斷出所述日期信息為當(dāng)前日期及當(dāng)前日期以前的日期,則將包含當(dāng)前日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫(kù)主鍵生成方法,其特征在于,若判斷出所述日期信息等于所述當(dāng)前日期,且包含所述當(dāng)前日期的主鍵的值已全被分配,則將包含當(dāng)前日期以后的日期信息的主鍵的值作為所述當(dāng)前可分配的主鍵的值。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的數(shù)據(jù)庫(kù)主鍵生成方法,其特征在于,所述主鍵的類型包括整數(shù)類型。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)庫(kù)主鍵生成裝置,包括讀取單元,讀取預(yù)設(shè)的主鍵配置表,從主鍵配置表中獲取數(shù)據(jù)中心的站點(diǎn)編號(hào);主鍵生成單元,根據(jù)獲取的站點(diǎn)編號(hào)讀取主鍵分配表,獲取主鍵分配表中記錄的主鍵的最大值,根據(jù)主鍵的最大值得到當(dāng)前可分配的主鍵的值,其中,主鍵包括數(shù)據(jù)中心的站點(diǎn)編號(hào)、生成主鍵的日期和流水號(hào)。根據(jù)本發(fā)明的技術(shù)方案,可獲得高性能的數(shù)據(jù)庫(kù)主鍵,使得主鍵既具有像業(yè)務(wù)編號(hào)一樣直觀易用的特點(diǎn),又可支持分布式數(shù)據(jù)部署環(huán)境。本發(fā)明還提供一種數(shù)據(jù)庫(kù)主鍵生成方法。
文檔編號(hào)G06F17/30GK102880705SQ20121036796
公開(kāi)日2013年1月16日 申請(qǐng)日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者張紅斌, 黃衛(wèi) 申請(qǐng)人:用友軟件股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 丰顺县| 格尔木市| 偃师市| 秦皇岛市| 临漳县| 大兴区| 天台县| 绥德县| 收藏| 惠州市| 铜陵市| 晋州市| 称多县| 惠来县| 长海县| 佛教| 从化市| 定远县| 班戈县| 晋江市| 安新县| 衡阳市| 武清区| 永春县| 黄梅县| 霍州市| 龙井市| 桃园县| 隆回县| 色达县| 藁城市| 安平县| 东平县| 盈江县| 乌拉特中旗| 库尔勒市| 洮南市| 正蓝旗| 涞水县| 旌德县| 黔江区|