亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

最小索引標(biāo)識(shí)id查找方法及裝置的制作方法

文檔序號(hào):6332714閱讀:179來(lái)源:國(guó)知局
專利名稱:最小索引標(biāo)識(shí)id查找方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種最小索引ID查找方法及裝置。
背景技術(shù)
在網(wǎng)管系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)中,為了避免出現(xiàn)重復(fù)數(shù)據(jù),同時(shí)為了檢索和編輯方便, 需要為每一條記錄指定一個(gè)唯一的索引ID(Identity,標(biāo)識(shí)),原則是在當(dāng)前數(shù)據(jù)庫(kù)中查找 一條最小的沒有被使用的整數(shù)作為索引ID。隨著業(yè)務(wù)量的增加,每個(gè)表的記錄可能達(dá)到數(shù) 萬(wàn)甚至數(shù)十萬(wàn)條,這時(shí)查找一條可用的索引ID就成了非常耗時(shí)的操作,造成嚴(yán)重的性能瓶頸。目前的網(wǎng)管應(yīng)用中,查找最小索引ID的方法是,建立一個(gè)存放所有索引ID的輔助 表,利用關(guān)系數(shù)據(jù)庫(kù)的多表聯(lián)合查詢技術(shù),在數(shù)據(jù)表中查找沒有被使用的所有的索引ID,然 后取其中的最小值。雖然目前的數(shù)據(jù)庫(kù)都對(duì)SQL (Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)查詢 語(yǔ)句的效率進(jìn)行了優(yōu)化,但這種技術(shù)仍然是低效的,在進(jìn)行大數(shù)據(jù)量操作時(shí),每查詢一次索 引ID需要1秒以上,時(shí)耗較大,會(huì)造成后續(xù)其他操作時(shí)間的延誤。針對(duì)相關(guān)技術(shù)中時(shí)耗較大的問題,目前尚未提出有效的解決方案。

發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種最小索引標(biāo)識(shí)ID查找方法及裝置,以至少解決 上述時(shí)耗過(guò)大的問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種最小索引標(biāo)識(shí)ID查找方法方法,包括在指 定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù);當(dāng)所述記錄數(shù)小于所述指定的查找區(qū)間的區(qū)間容量時(shí),縮小所述指定的查找區(qū)間 的上限,其中,縮小后的上限大于所述記錄數(shù)與所述指定區(qū)間的下限之和;重復(fù)上述操作,直到所述縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇所述當(dāng)前查 找區(qū)間的下限作為最小索引ID;或者,直到當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū) 間的區(qū)間容量已縮小到2時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID。較優(yōu)的,在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù)之前,還 包括利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左半?yún)^(qū)間Wl [wl,Α)和 右半?yún)^(qū)間W2[A,w2],其中,0彡e彡1,e取決于所述已有的查找區(qū)間W[wl,w2]中已用于指 定索引的索引ID的分布特征,分割點(diǎn)A為wl+(w2-wl)*e后向下取余得到的整數(shù);查詢所述左半?yún)^(qū)間Wl [wl,A)中已用于指定索引的索引ID的記錄數(shù);若所述左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù)小于所述左半?yún)^(qū) 間Wl[wl,A)的區(qū)間容量,選擇所述左半?yún)^(qū)間Wl[wl,A)作為所述指定的查找區(qū)間;若所述左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù)等于所述左半?yún)^(qū)
4間Wl[wl,A)的區(qū)間容量,選擇所述右半?yún)^(qū)間W2[A,w2]作為所述指定的查找區(qū)間。較優(yōu)的,當(dāng)所述記錄數(shù)小于所述查找區(qū)間的區(qū)間容量時(shí),縮小所述查找區(qū)間的上 限,包括當(dāng)所述指定的查找區(qū)間為所述左半?yún)^(qū)間Wl [wl,A)時(shí),在所述Wl [wl,Α)中查詢已 用于指定索引的索引ID的記錄數(shù)Cl,若所述Cl小于A-wl,所述A減小為wl+Cl+Ι ;以及當(dāng)所述指定的查找區(qū)間為所述右半?yún)^(qū)間W2[A,w2]時(shí),在所述W2[A,w2]中查詢已 用于指定索引的索引ID的記錄數(shù)C2,若所述C2小于W2-A+1,所述w2減小為A+C2+1。較優(yōu)的,當(dāng)所述記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若所述指定的查 找區(qū)間是所述左半?yún)^(qū)間Wl [wl,A),將其更換為所述右半?yún)^(qū)間W2 [A,W2];若所述指定的查找 區(qū)間是所述右半?yún)^(qū)間W2[A,w2],則確定已有的查找區(qū)間W[wl,w2]中不存在未被使用的索 引ID。較優(yōu)的,選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID時(shí),還包括檢驗(yàn)所述當(dāng)前查找區(qū)間的上限是否已被使用,若否,確定所述當(dāng)前查找區(qū)間的上 限作為最小索引ID ;若是,表明本次查找失敗。較優(yōu)的,還包括利用確定的最小索引ID標(biāo)識(shí)當(dāng)前記錄。根據(jù)本發(fā)明的另一方面,提供了一種最小索引標(biāo)識(shí)ID查找裝置裝置,包括查詢模 塊、縮小模塊、觸發(fā)模塊和選擇模塊所述查詢模塊,用于在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄 數(shù);所述縮小模塊,用于當(dāng)所述記錄數(shù)小于所述指定的查找區(qū)間的區(qū)間容量時(shí),縮小 所述指定的查找區(qū)間的上限,其中,縮小后的上限大于所述記錄數(shù)與所述指定區(qū)間的下限 之和;所述觸發(fā)模塊,用于重復(fù)觸發(fā)所述查詢模塊和所述縮小模塊,直到所述縮小后的 查找區(qū)間內(nèi)的記錄數(shù)為0或者當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間容量 已縮小到2 ;第一選擇模塊,用于當(dāng)所述縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇所述當(dāng)前 查找區(qū)間的下限作為最小索引ID ;或者,當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間 的區(qū)間容量已縮小到2時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID。較優(yōu)的,還包括分割模塊,用于利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左半?yún)^(qū) 間Wl[wl,A)和右半?yún)^(qū)間W2[A,w2],其中,0彡e彡1,e取決于所述已有的查找區(qū)間W[wl, w2]中已用于指定索引的索引ID的分布特征,分割點(diǎn)A為wl+(w2-wl)*e后向下取余得到 的整數(shù);第二選擇模塊,用于查詢所述左半?yún)^(qū)間Wl[wl,Α)中已用于指定索引的索引ID的 記錄數(shù);若所述左半?yún)^(qū)間Wl [wl,A)中已用于指定索引的索引ID的記錄數(shù)小于所述左半?yún)^(qū) 間Wl[wl,Α)的區(qū)間容量,選擇所述左半?yún)^(qū)間Wl[wl,Α)作為所述指定的查找區(qū)間;若所述 左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù)等于所述左半?yún)^(qū)間W l[wl,A)的 區(qū)間容量,選擇所述右半?yún)^(qū)間W2[A,w2]作為所述指定的查找區(qū)間。較優(yōu)的,所述縮小模塊包括
5
第一減小子模塊,用于當(dāng)所述指定的查找區(qū)間為所述左半?yún)^(qū)間Wl[wl,Α)時(shí),在所 述Wl[wl,A)中查詢已用于指定索引的索引ID的記錄數(shù)Cl,若所述Cl小于A-wl,所述A減 小為wl+Cl+Ι ;以及第二減小子模塊,用于當(dāng)所述指定的查找區(qū)間為所述右半?yún)^(qū)間W2[A,w2]時(shí),在所 述W2[A,w2]中查詢已用于指定索引的索引ID的記錄數(shù)C2,若所述C2小于W2-A+1,所述w2 減小為A+C2+1。較優(yōu)的,所述第二選擇模塊包括 更換子模塊,用于當(dāng)所述記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若所述 指定的查找區(qū)間是所述左半?yún)^(qū)間Wl [wl, A),將其更換為所述右半?yún)^(qū)間W2[A,w2];確定子模塊,用于當(dāng)所述記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若所述 指定的查找區(qū)間是所述右半?yún)^(qū)間W2[A,w2],則確定已有的查找區(qū)間W[wl,w2]中不存在未 被使用的索引ID。較優(yōu)的,所述第一選擇模塊進(jìn)一步用于檢驗(yàn)所述當(dāng)前查找區(qū)間的上限是否已被使 用,若否,確定所述當(dāng)前查找區(qū)間的上限作為最小索引ID ;若是,表明本次查找失敗。較優(yōu)的,所述第一選擇模塊進(jìn)一步用于利用確定的最小索引ID標(biāo)識(shí)當(dāng)前記錄。在本發(fā)明實(shí)施例中,利用查詢已用于指定索引的索引ID的記錄的個(gè)數(shù),而不是記 錄的內(nèi)容或記錄的值來(lái)尋找最小索引ID,將記錄數(shù)與區(qū)間容量相比較,如果記錄數(shù)小于區(qū) 間容量,則縮小區(qū)間繼續(xù)查找,提高了查找的速率。并且,由于不需要比較記錄的值,僅僅是 比較記錄的個(gè)數(shù),有較強(qiáng)的通用性。


此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1是本發(fā)明實(shí)施例提供的最小索引ID查找方法的處理流程;圖2是本發(fā)明實(shí)施例提供的最小索引ID查找方法的具體應(yīng)用實(shí)例的處理流程;圖3是本發(fā)明實(shí)施例提供的最小索引ID查找裝置的第一種結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例提供的最小索引ID查找裝置的第二種結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例提供的縮小模塊的結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例提供的第二選擇模塊的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的 情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。在相關(guān)技術(shù)中提到,在進(jìn)行大數(shù)據(jù)量操作時(shí),每查詢一次索引ID需要1秒以上,時(shí) 耗較大,會(huì)造成后續(xù)其他操作時(shí)間的延誤,為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種 最小索引ID查找方法,具體處理流程如圖1所示,包括步驟102、在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù);步驟104、當(dāng)記錄數(shù)小于指定的查找區(qū)間的區(qū)間容量時(shí),縮小指定的查找區(qū)間的上 限,其中,縮小后的上限大于記錄數(shù)與指定區(qū)間的下限之和;
6
步驟106、重復(fù)上述操作,直到縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇當(dāng)前查 找區(qū)間的下限作為最小索引ID ;或者,直到當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū) 間的區(qū)間容量已縮小到2時(shí),選擇當(dāng)前查找區(qū)間的上限作為最小索引ID。在本發(fā)明實(shí)施例中,利用查詢已用于指定索引的索引ID的記錄的個(gè)數(shù),而不是記 錄的內(nèi)容或記錄的值來(lái)尋找最小索引ID,將記錄數(shù)與區(qū)間容量相比較,如果記錄數(shù)小于區(qū) 間容量,則縮小區(qū)間繼續(xù)查找,提高了查找的速率。并且,由于不需要比較記錄的值,僅僅是 比較記錄的個(gè)數(shù),有較強(qiáng)的通用性。實(shí)施時(shí),如圖1所示流程,步驟102在實(shí)施之前,還可以對(duì)已有的查找區(qū)間進(jìn)行分 割,以提高查找索引ID的速率,例如,可以采用一個(gè)分割因子將已有的查找區(qū)間分成兩部 分,也可以采用兩個(gè)分割因子將已有的查找區(qū)間分成三部分,還可以采用多個(gè)分割因子將 已有的查找區(qū)間分為更多部分,具體將已有的查找區(qū)間分割為多少部分取決于實(shí)際情況。 其中,以一個(gè)分割因子以例,采用一個(gè)分割因子將已有的查找區(qū)間分成兩部分的具體實(shí)施 例如下利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左半?yún)^(qū)間Wl [wl,Α)和 右半?yún)^(qū)間W2[A,w2],其中,0彡e彡1,e取決于所述已有的查找區(qū)間W[wl,w2]中已用于指 定索引的索引ID的分布特征,分割點(diǎn)A為wl+(w2-wl)*e后向下取余得到的整數(shù);查詢左半?yún)^(qū)間Wl [wl,A)中已用于指定索引的索引ID的記錄數(shù);若左半?yún)^(qū)間Wl [wl,A)中已用于指定索引的索引ID的記錄數(shù)小于左半?yún)^(qū)間Wl [wl, Α)的區(qū)間容量,選擇左半?yún)^(qū)間Wl[wl,A)作為指定的查找區(qū)間;若左半?yún)^(qū)間Wl [wl,A)中已用于指定索引的索引ID的記錄數(shù)等于左半?yún)^(qū)間Wl [wl, Α)的區(qū)間容量,選擇右半?yún)^(qū)間W2[A,w2]作為指定的查找區(qū)間。在實(shí)施時(shí),一種較優(yōu)的實(shí)施方式,將e在
之間取值,與數(shù)據(jù)的規(guī)范性相對(duì) 應(yīng),在網(wǎng)管系統(tǒng)中,配置數(shù)據(jù)新增的概率大于刪除的概率,較優(yōu)的,e可以取0. 75。在一個(gè)實(shí)施例中,當(dāng)記錄數(shù)小于查找區(qū)間的區(qū)間容量時(shí),縮小查找區(qū)間的上限,其 中,縮小后的上限大于記錄數(shù)與指定區(qū)間的下限之和即可,在實(shí)施時(shí),縮小后的上限可以比 兩者之和大1,也可以比兩者之和大2,或者比兩者之和大任意自然數(shù),但是,在查找中,較 優(yōu)的,是令縮小后的上限比兩者之和大1,盡量縮小查找空間,以提高下次查找的速率,具體 實(shí)施方式如下當(dāng)指定的查找區(qū)間為所述左半?yún)^(qū)間Wl [wl,A)時(shí),在Wl [wl,Α)中查詢已用于指定 索引的索引ID的記錄數(shù)Cl,若Cl小于A-wl,A減小為wl+Cl+Ι ;以及當(dāng)指定的查找區(qū)間為右半?yún)^(qū)間W2[A,w2]時(shí),在W2[A,w2]中查詢已用于指定索引 的索引ID的記錄數(shù)C2,若C2小于w2-A+l, w2減小為A+C2+1。在一個(gè)實(shí)施例中,當(dāng)記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若指定的查 找區(qū)間是左半?yún)^(qū)間Wl[wl,A),將其更換為右半?yún)^(qū)間W2[A,w2];若指定的查找區(qū)間是右半?yún)^(qū) 間W2[A,w2],則確定已有的查找區(qū)間W[wl,w2]中不存在未被使用的索引ID??s小區(qū)間上限的理論依據(jù)是如果某區(qū)間W[wl,w2]內(nèi)存在N(N<w2_wl)條記錄, 那么在區(qū)間Wl[wl,wl+Ν+Ι]內(nèi)一定存在至少1個(gè)未使用的記錄。這樣可以把查找區(qū)間由 W[wl, w2]縮小為Wl[wl,wl+N+1],顯然在縮小的查找區(qū)間中查找最小索引ID的效率更高, 極端情況下,如果N = 0,那么區(qū)間縮小為Wl [wl,wl+l],可以立即定位到所需的記錄。
7
如圖1所示流程,步驟106在實(shí)施時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引 ID時(shí),還可以對(duì)選擇的最小索引ID進(jìn)行判斷驗(yàn)證,例如,可以檢驗(yàn)當(dāng)前查找區(qū)間的上限是 否已被使用,若否,確定當(dāng)前查找區(qū)間的上限作為最小索引ID ;若是,表明本次查找失敗。在查找失敗時(shí),一種較優(yōu)的實(shí)施方式是,返回標(biāo)識(shí)作為標(biāo)記,以便在下次查找時(shí)避 免重復(fù)選定,例如,可以返回-1作為標(biāo)記,當(dāng)然,也可以選擇返回-2作為標(biāo)記,還可以選擇 返回F作為標(biāo)記,或其他不在已有的區(qū)間內(nèi)的數(shù)字或字母或其他標(biāo)識(shí),均可以作為標(biāo)記。本 例中,較優(yōu)的,可以選擇-1作為標(biāo)記。實(shí)施時(shí),根據(jù)上述處理方法確定最小索引ID后,利用確定的最小索引ID標(biāo)識(shí)當(dāng)前記錄?,F(xiàn)以一個(gè)具體的實(shí)施例進(jìn)行說(shuō)明,本例中,已有的查找區(qū)間為W[wl,w2],分割因子 e預(yù)先設(shè)定,具體處理流程如圖2所示步驟202、確定已有的查找區(qū)間W[wl,w2]及分割因子e ;步驟204、根據(jù)分割因子e確定分割點(diǎn)A = wl+(w2-wl)*e ;步驟206、在左半?yún)^(qū)間Wl [wl, Α)查詢記錄數(shù)C ;步驟208、判斷查詢到的記錄數(shù)C是否等于0,如果是,轉(zhuǎn)到步驟218,否則執(zhí)行步驟 210 ;步驟210、判斷左半?yún)^(qū)間Wl [wl,A)是否已縮小到2 (即A_wl = 1),如果是,轉(zhuǎn)到步 驟220,否則執(zhí)行步驟212 ;步驟212、判斷左半?yún)^(qū)間Wl [wl,Α)是否記錄數(shù)已滿,即查詢的記錄數(shù)C是否小于 A-wl,如果C < A-wl,說(shuō)明記錄未滿,執(zhí)行步驟214,否則轉(zhuǎn)到步驟216 ;步驟214、調(diào)整左半?yún)^(qū)間的上限A = wl+C+1,然后轉(zhuǎn)到步驟202循環(huán)執(zhí)行;步驟216、更換到右半?yún)^(qū)間W2[A,w2]進(jìn)行查找,S卩,將查找的區(qū)間下限設(shè)置為Wl = A,然后轉(zhuǎn)到步驟202循環(huán)執(zhí)行;步驟218、輸出區(qū)間下限wl,流程結(jié)束;步驟220、驗(yàn)證w2是否可用,如果是,執(zhí)行步驟222,否則轉(zhuǎn)到步驟224 ;步驟222、輸出區(qū)間上限w2,流程結(jié)束。步驟224、本次查詢失敗,輸出-1作為標(biāo)記?;谕话l(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種最小索引標(biāo)識(shí)ID查找裝置,具體 結(jié)構(gòu)如圖3所示,包括查詢模塊301、縮小模塊302、觸發(fā)模塊303和選擇模塊304 查詢模塊301,用于在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄 數(shù);縮小模塊302,用于當(dāng)記錄數(shù)小于指定的查找區(qū)間的區(qū)間容量時(shí),縮小指定的查找 區(qū)間的上限,其中,縮小后的上限大于記錄數(shù)與指定區(qū)間的下限之和;觸發(fā)模塊303,用于重復(fù)觸發(fā)查詢模塊301和縮小模塊302,直到縮小后的查找區(qū) 間內(nèi)的記錄數(shù)為0或者當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間容量已縮小 到2;第一選擇模塊304,用于當(dāng)縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇當(dāng)前查找區(qū) 間的下限作為最小索引ID ;或者,當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間 容量已縮小到2時(shí),選擇當(dāng)前查找區(qū)間的上限作為最小索引ID。
8
在一個(gè)實(shí)施例中,如圖4所示,最小索引ID查找裝置還可以包括分割模塊401,用于利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左 半?yún)^(qū)間Wl[wl,A)和右半?yún)^(qū)間W2[A,w2],其中,0彡e彡1,分割點(diǎn)A為wl+(w2_wl)*e后向 下取余得到的整數(shù);第二選擇模塊402,用于查詢左半?yún)^(qū)間Wl[wl,Α)中已用于指定索引的索引ID的 記錄數(shù);若左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù)小于左半?yún)^(qū)間Wl [wl, Α)的區(qū)間容量,選擇左半?yún)^(qū)間Wl[wl,Α)作為指定的查找區(qū)間;若左半?yún)^(qū)間Wl [wl,Α)中已 用于指定索引的索引ID的記錄數(shù)等于左半?yún)^(qū)間Wl[wl,A)的區(qū)間容量,選擇右半?yún)^(qū)間W2[A, w2]作為指定的查找區(qū)間。在一個(gè)實(shí)施例中,如圖5所示,縮小模塊302可以包括第一減小子模塊501,用于當(dāng)指定的查找區(qū)間為左半?yún)^(qū)間Wl [wl,A)時(shí),在Wl[wl, Α)中查詢已用于指定索引的索引ID的記錄數(shù)Cl,若Cl小于A-wl,A減小為wl+Cl+Ι ;以及第二減小子模塊502,用于當(dāng)指定的查找區(qū)間為右半?yún)^(qū)間W2[A,w2]時(shí),在W2[A, w2]中查詢已用于指定索引的索引ID的記錄數(shù)C2,若C2小于w2-A+l,w2減小為A+C2+1。在一個(gè)實(shí)施例中,如圖6所示,第二選擇模塊402可以包括更換子模塊601,用于當(dāng)記錄數(shù)等于指定的查找區(qū)間的區(qū)間容量時(shí),若指定的查找 區(qū)間是左半?yún)^(qū)間Wl [wl, A),將其更換為右半?yún)^(qū)間W2[A,w2];確定子模塊602,用于當(dāng)記錄數(shù)等于指定的查找區(qū)間的區(qū)間容量時(shí),若指定的查找 區(qū)間是右半?yún)^(qū)間W2 [A,w2],則確定已有的查找區(qū)間W[wl,w2]中不存在未被使用的索引ID。在一個(gè)實(shí)施例中,第一選擇模塊304可以進(jìn)一步用于檢驗(yàn)當(dāng)前查找區(qū)間的上限是 否已被使用,若否,確定當(dāng)前查找區(qū)間的上限作為最小索引ID ;若是,表明本次查找失敗。在一個(gè)實(shí)施例中,第一選擇模塊304可以進(jìn)一步用于利用確定的最小索引ID標(biāo)識(shí) 當(dāng)前記錄。與相關(guān)技術(shù)提到的最小索引ID查找方法相比,本發(fā)明實(shí)施例有眾多不同點(diǎn),例 如從數(shù)量統(tǒng)計(jì)技術(shù)角度來(lái)說(shuō),傳統(tǒng)最小索引ID查找方法采用的是數(shù)值統(tǒng)計(jì),要在一 個(gè)序列內(nèi)查找一個(gè)特定記錄,必須把該記錄的具體值與序列內(nèi)的其他值進(jìn)行多次比較,本 發(fā)明實(shí)施例提供的最小索引ID查找方法將數(shù)值統(tǒng)計(jì)改進(jìn)為數(shù)量統(tǒng)計(jì),只需要比較區(qū)間內(nèi) 的記錄數(shù)即可,提升了效率。另外由于不比較數(shù)值,區(qū)間內(nèi)的記錄不要求有序,提高了通用 性。從區(qū)間動(dòng)態(tài)調(diào)整技術(shù)角度來(lái)說(shuō),采用本發(fā)明實(shí)施例提供的最小索引ID查找方法, 根據(jù)查找到的某區(qū)間內(nèi)的記錄數(shù),動(dòng)態(tài)縮小下次查找的區(qū)間。具體的,如果某區(qū)間W[wl,w2] 內(nèi)存在N(N< w2-wl)條記錄,那么在區(qū)間Wl[wl,wl+N+1]內(nèi)一定存在至少1個(gè)未使用的記 錄。這樣可以把查找區(qū)間由W[wl,w2]縮小為Wl[wl,wl+N+1],顯然在縮小的查找區(qū)間中查 找最小索引ID的效率更高,極端情況下,如果N = 0,那么區(qū)間縮小為Wl [wl,wl+l],可以立 即定位到所需的記錄。從分割點(diǎn)右移技術(shù)角度來(lái)說(shuō),本發(fā)明實(shí)施例提供的最小索引ID查找方法的本質(zhì) 就是把查找的區(qū)間不斷分割,縮小范圍來(lái)定位所需的記錄,此處引入一個(gè)“分割因子”的概 念,在網(wǎng)管系統(tǒng)中,配置數(shù)據(jù)新增的概率大于刪除的概率,實(shí)踐中取e = 0. 75比較合適。
從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果在本發(fā)明實(shí)施例中,利用查詢已用于指定索引的索引ID的記錄的個(gè)數(shù),而不是記 錄的內(nèi)容或記錄的值來(lái)尋找最小索引ID,將記錄數(shù)與區(qū)間容量相比較,如果記錄數(shù)小于區(qū) 間容量,則縮小區(qū)間繼續(xù)查找,提高了查找的速率。并且,由于不需要比較記錄的值,僅僅是 比較記錄的個(gè)數(shù),有較強(qiáng)的通用性。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ) 在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示 出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或 步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種最小索引標(biāo)識(shí)ID查找方法,其特征在于,包括在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù);當(dāng)所述記錄數(shù)小于所述指定的查找區(qū)間的區(qū)間容量時(shí),縮小所述指定的查找區(qū)間的上限,其中,縮小后的上限大于所述記錄數(shù)與所述指定區(qū)間的下限之和;重復(fù)上述操作,直到所述縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇所述當(dāng)前查找區(qū)間的下限作為最小索引ID;或者,直到當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間容量已縮小到2時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在指定的查找區(qū)間中,查詢已用于指定索 引的索引ID的記錄數(shù)之前,還包括利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左半?yún)^(qū)間Wl [wl,Α)和右半 區(qū)間W2[A,w2],其中,0 ( e ( 1,e取決于所述已有的查找區(qū)間W[wl,w2]中已用于指定索 引的索引ID的分布特征,分割點(diǎn)A為W1+(W2-Wl)*e后向下取余得到的整數(shù); 查詢所述左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù); 若所述左半?yún)^(qū)間Wl [wl,Α)中已用于指定索引的索引ID的記錄數(shù)小于所述左半?yún)^(qū)間 Wl[wl,A)的區(qū)間容量,選擇所述左半?yún)^(qū)間Wl[wl,A)作為所述指定的查找區(qū)間;若所述左半?yún)^(qū)間Wl [wl,Α)中已用于指定索引的索引ID的記錄數(shù)等于所述左半?yún)^(qū)間 Wl[wl,A)的區(qū)間容量,選擇所述右半?yún)^(qū)間W2[A,w2]作為所述指定的查找區(qū)間。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述記錄數(shù)小于所述查找區(qū)間的區(qū)間 容量時(shí),縮小所述查找區(qū)間的上限,包括當(dāng)所述指定的查找區(qū)間為所述左半?yún)^(qū)間Wl [wl,A)時(shí),在所述Wl [wl,Α)中查詢已用于 指定索引的索引ID的記錄數(shù)Cl,若所述Cl小于A-wl,所述A減小為wl+Cl+Ι ;以及當(dāng)所述指定的查找區(qū)間為所述右半?yún)^(qū)間W2[A,w2]時(shí),在所述W2[A,w2]中查詢已用于 指定索引的索引ID的記錄數(shù)C2,若所述C2小于W2-A+1,所述w2減小為A+C2+1。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,當(dāng)所述記錄數(shù)等于所述指定的查找區(qū) 間的區(qū)間容量時(shí),若所述指定的查找區(qū)間是所述左半?yún)^(qū)間Wl [wl,A),將其更換為所述右半 區(qū)間W2[A,w2];若所述指定的查找區(qū)間是所述右半?yún)^(qū)間W2[A,w2],則確定已有的查找區(qū)間 W[wl,w2]中不存在未被使用的索引ID。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,選擇所述當(dāng)前查找區(qū)間的上限作為最小 索引ID時(shí),還包括檢驗(yàn)所述當(dāng)前查找區(qū)間的上限是否已被使用,若否,確定所述當(dāng)前查找區(qū)間的上限作 為最小索引ID ;若是,表明本次查找失敗。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括利用確定的最小索引ID標(biāo)識(shí)當(dāng) 前記錄。
7.一種最小索引標(biāo)識(shí)ID查找裝置,其特征在于,包括查詢模塊、縮小模塊、觸發(fā)模塊和 選擇模塊所述查詢模塊,用于在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù); 所述縮小模塊,用于當(dāng)所述記錄數(shù)小于所述指定的查找區(qū)間的區(qū)間容量時(shí),縮小所 述指定的查找區(qū)間的上限,其中,縮小后的上限大于所述記錄數(shù)與所述指定區(qū)間的下限之 和;所述觸發(fā)模塊,用于重復(fù)觸發(fā)所述查詢模塊和所述縮小模塊,直到所述縮小后的查找 區(qū)間內(nèi)的記錄數(shù)為0或者當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間容量已縮 小到2 ;第一選擇模塊,用于當(dāng)所述縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇所述當(dāng)前查找 區(qū)間的下限作為最小索引ID ;或者,當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū) 間容量已縮小到2時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括分割模塊,用于利用預(yù)設(shè)的分割因子e將已有的查找區(qū)間W[wl,w2]分割為左半?yún)^(qū)間 Wl[wl,A)和右半?yún)^(qū)間W2[A,w2],其中,0彡e彡1,e取決于所述已有的查找區(qū)間W[wl,w2] 中已用于指定索引的索引ID的分布特征,分割點(diǎn)A為wl+(w2-wl)*e后向下取余得到的整 數(shù);第二選擇模塊,用于查詢所述左半?yún)^(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄 數(shù);若所述左半?yún)^(qū)間Wl [wl,Α)中已用于指定索引的索引ID的記錄數(shù)小于所述左半?yún)^(qū)間 Wl[wl,A)的區(qū)間容量,選擇所述左半?yún)^(qū)間Wl[wl,A)作為所述指定的查找區(qū)間;若所述左半 區(qū)間Wl[wl,A)中已用于指定索引的索引ID的記錄數(shù)等于所述左半?yún)^(qū)間Wl [wl,A)的區(qū)間 容量,選擇所述右半?yún)^(qū)間W2[A,w2]作為所述指定的查找區(qū)間。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述縮小模塊包括第一減小子模塊,用 于當(dāng)所述指定的查找區(qū)間為所述左半?yún)^(qū)間Wl [wl,A)時(shí),在所述Wl[wl,A)中查詢已用于指 定索引的索引ID的記錄數(shù)Cl,若所述Cl小于Ail,所述A減小為wl+Cl+Ι ;以及第二減小子模塊,用于當(dāng)所述指定的查找區(qū)間為所述右半?yún)^(qū)間W2[A,w2]時(shí),在所述 W2[A,w2]中查詢已用于指定索引的索引ID的記錄數(shù)C2,若所述C2小于W2-A+1,所述w2減 小為 A+C2+1。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述第二選擇模塊包括更換子模塊,用于當(dāng)所述記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若所述指定 的查找區(qū)間是所述左半?yún)^(qū)間Wl [wl, A),將其更換為所述右半?yún)^(qū)間W2[A,w2];確定子模塊,用于當(dāng)所述記錄數(shù)等于所述指定的查找區(qū)間的區(qū)間容量時(shí),若所述指定 的查找區(qū)間是所述右半?yún)^(qū)間W2[A,w2],則確定已有的查找區(qū)間W[wl,w2]中不存在未被使 用的索引ID。
11.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一選擇模塊進(jìn)一步用于檢驗(yàn)所述 當(dāng)前查找區(qū)間的上限是否已被使用,若否,確定所述當(dāng)前查找區(qū)間的上限作為最小索引ID ; 若是,表明本次查找失敗。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第一選擇模塊進(jìn)一步用于利用確 定的最小索引ID標(biāo)識(shí)當(dāng)前記錄。
全文摘要
本發(fā)明公開了一種最小索引標(biāo)識(shí)ID查找方法和裝置,該方法包括在指定的查找區(qū)間中,查詢已用于指定索引的索引ID的記錄數(shù);當(dāng)所述記錄數(shù)小于所述指定的查找區(qū)間的區(qū)間容量時(shí),縮小所述指定的查找區(qū)間的上限,其中,縮小后的上限大于所述記錄數(shù)與所述指定區(qū)間的下限之和;重復(fù)上述操作,直到所述縮小后的查找區(qū)間內(nèi)的記錄數(shù)為0時(shí),選擇所述當(dāng)前查找區(qū)間的下限作為最小索引ID;或者,直到當(dāng)前查找區(qū)間內(nèi)的記錄數(shù)不為0且當(dāng)前查找區(qū)間的區(qū)間容量已縮小到2時(shí),選擇所述當(dāng)前查找區(qū)間的上限作為最小索引ID。采用本發(fā)明提供的方法及裝置能夠減小時(shí)耗。
文檔編號(hào)G06F17/30GK101957853SQ20101029270
公開日2011年1月26日 申請(qǐng)日期2010年9月20日 優(yōu)先權(quán)日2010年9月20日
發(fā)明者郭躍山 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1