專利名稱:基于二維散列的海量數(shù)據(jù)的快速操作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種電信運營支撐系統(tǒng)的方法,尤其是海量數(shù)據(jù)的快速操作方法。
二背景技術(shù):
隨著電信行業(yè)用戶和業(yè)務量的巨增,對千萬級話單數(shù)據(jù)的快速處理成為電信運營系統(tǒng) 的難點和重點。目前的系統(tǒng)應用需要對存在于計算機系統(tǒng)物理內(nèi)存中的海量數(shù)據(jù)頻繁進行 査詢、更新、刪除操作,這些數(shù)據(jù)上的索引算法的效率,顯然已經(jīng)成為影響系統(tǒng)運行速度 的關(guān)鍵。
而現(xiàn)有的單向散列函數(shù)指的是根據(jù)輸入消息(任何字節(jié)串,如文本字符串、Word文檔、 JPG文件等)輸出固定長度數(shù)值的算法,輸出數(shù)值也稱為"散列值"或"消息摘要",其 長度取決于所采用的算法,通常在128 256位之間。單向散列函數(shù)旨在創(chuàng)建用于驗證消息 完整性的簡短摘要。在諸如TPC/工P等通信協(xié)議中,常采用檢驗和或CRC (循環(huán)冗余校驗) 來驗證消息的完整性。
三
發(fā)明內(nèi)容
本發(fā)明目的是,針對電信運營系統(tǒng)有數(shù)據(jù)量大,要求系統(tǒng)響應快速、穩(wěn)定并具有自維 護性等特點,提出一種面向電信運營系統(tǒng)的方法,即基于二維散列的海量數(shù)據(jù)的快速操作 方法;本發(fā)明目的還在于解決下列問題
*極高效的數(shù)據(jù)査找——當其管理的數(shù)據(jù)按照査找關(guān)鍵字得到足夠的均勻散列時,甚 至可以直接定址,返回查找關(guān)鍵字所對應的記錄集;數(shù)據(jù)記錄變更無須重構(gòu)索引; 可無限制動態(tài)擴充所管理的數(shù)據(jù)記錄量。采用此發(fā)明算法組織的數(shù)據(jù)索引結(jié)構(gòu),可 以使得對百萬數(shù)據(jù)記錄集合的內(nèi)存數(shù)據(jù)表的査找效率達到微秒級別,在技術(shù)上極大 的滿足了電信運營系統(tǒng)的要求。 本發(fā)明的技術(shù)方案是,基于二維散列的海量數(shù)據(jù)的快速操作方法,首先是利用散列算 法,將具體的數(shù)據(jù)記錄集序列,在索引關(guān)鍵字和索弓i序列地址之間形成特定的映射關(guān)系, 構(gòu)造一維散列隊列存儲數(shù)據(jù);當索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系不能 唯一定位一條數(shù)據(jù)記錄時,則根據(jù)索弓1關(guān)鍵字是否相同構(gòu)造一個二維的散列鏈表,掛在第 一層散列隊列的各個節(jié)點下,作為之前構(gòu)造的一維散列隊列各節(jié)點的擴充,區(qū)分索引字段 值相同與不同;
當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,通過相同的散列算法,從一維散列隊列, 反向映射獲取數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址,實現(xiàn)快速定位的目的;如果發(fā) 現(xiàn)一維散列隊列節(jié)點下還有二維散列鏈表,則根據(jù)查詢關(guān)鍵字的取值縱向遍歷此二維散列 鏈表,査找符合條件的數(shù)據(jù)記錄地址;
創(chuàng)建索引接口根據(jù)索引關(guān)鍵字計算出散列隊列下標值,實現(xiàn)索引關(guān)鍵字和索引序列 地址之間形成特定的映射關(guān)系轉(zhuǎn)換;當不能夠保證每條數(shù)據(jù)記錄的索引關(guān)鍵字與通過散列 算法后得到的散列隊列下標值是一一對應時,延伸出一個二維的散列鏈表,掛在第一層散 列隊列的各個節(jié)點下,區(qū)分索引字段值相同與不同,而橫向、縱向擴展,來解決沖突;通 過上述映射關(guān)系,既能得到數(shù)據(jù)集上的一個快速索弓1結(jié)構(gòu);查詢接口當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,系統(tǒng)首先找到已經(jīng)創(chuàng)建好的 數(shù)據(jù)集索引入口,通過相同的散列算法,計算出下標值,從一維散列隊列,反向映射獲取 數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址,實現(xiàn)快速定位的目的;如果發(fā)現(xiàn)一維散列隊 列節(jié)點下還有二維散列鏈表,則根據(jù)查詢關(guān)鍵字的取值縱向遍歷此二維散列鏈表,查找符 合條件的數(shù)據(jù)記錄地址;最后,將符合條件的結(jié)果集返回。
此發(fā)明主要分成散列算法、二維散列算法兩個部分
*散列算法
根據(jù)索引關(guān)鍵字計算出散列隊列下標值,實現(xiàn)索引關(guān)鍵字和索引序列地址之間形成 特定的映射關(guān)系轉(zhuǎn)換。 * 二維散列算法
不能夠保證每條數(shù)據(jù)記錄的索引關(guān)鍵字與通過散列算法后得到的散列隊列下標值 是一一對應的,因此極有可能出現(xiàn)對于不同的元素,通過散列算法后得到卻計算出 了相同的散列隊列下標值即索引字段值;又或者有非唯一索引存在,這樣就產(chǎn)生了 "沖突"。因而設計出一個二維的散列鏈表,掛在第一層散列隊列的各個節(jié)點下, 區(qū)分索引字段值相同與不同,而橫向、縱向擴展,來解決沖突。即具有兩個索引散 列鏈表的計算;
本發(fā)明的有益效果該發(fā)明已經(jīng)在內(nèi)存數(shù)據(jù)管理產(chǎn)品中得到成功應用,并作為我國核心 電信運營系統(tǒng)產(chǎn)品關(guān)鍵業(yè)務數(shù)據(jù)管理中心的主要構(gòu)成技術(shù)方案,部署在計費賬務后臺業(yè)務 處理系統(tǒng)中,綜合處理速度得到了 50% 80%的提升。
四
圖l.二維散列索引邏輯結(jié)構(gòu)圖
五具體實施方式
.
本發(fā)明目前內(nèi)嵌于內(nèi)存數(shù)據(jù)管理的索引管理模塊中,也可獨立封裝,做為第三方插 件提供于其他模塊適配。其在索引管理模塊中應用的標準的軟件模型如圖l所示。
*創(chuàng)建索引接口
使用本發(fā)明技術(shù),根據(jù)索引關(guān)鍵字計算出散列隊列下標值,實現(xiàn)索引關(guān)鍵字和 索引序列地址之間形成特定的映射關(guān)系轉(zhuǎn)換;當不能夠保證每條數(shù)據(jù)記錄的索引關(guān) 鍵字與通過散列算法后得到的散列隊列下標值是一一對應時,延伸出一個二維的散 列鏈表,掛在第一層散列隊列的各個節(jié)點下,區(qū)分索引字段值相同與不同,而橫向、 縱向擴展,來解決沖突。
系統(tǒng)維護上述映射關(guān)系,既能得到數(shù)據(jù)集上的一個快速索引結(jié)構(gòu)。 *查詢接口
當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,系統(tǒng)首先找到已經(jīng)創(chuàng)建好的數(shù)據(jù) 集索引入口,通過相同的散列算法,計算出下標值,從一維散列隊列,反向映射 獲取數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址,實現(xiàn)快速定位的目的;如果發(fā) 現(xiàn)一維散列隊列節(jié)點下還有二維散列鏈表,則根據(jù)査詢關(guān)鍵字的取值縱向遍歷此 二維散列鏈表,查找符合條件的數(shù)據(jù)記錄地址。最后,將符合條件的結(jié)果集返回。
權(quán)利要求
1、基于二維散列的海量數(shù)據(jù)的快速操作方法,首先是利用散列算法,將具體的數(shù)據(jù)記錄集序列,在索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系,構(gòu)造一維散列隊列存儲數(shù)據(jù);當索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系不能唯一定位一條數(shù)據(jù)記錄時,則根據(jù)索引關(guān)鍵字是否相同構(gòu)造一個二維的散列鏈表,掛在第一層散列隊列的各個節(jié)點下,作為之前構(gòu)造的一維散列隊列各節(jié)點的擴充,區(qū)分索引字段值相同與不同;其特征是當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,通過相同的散列算法,從一維散列隊列,反向映射獲取數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址,實現(xiàn)快速定位的目的;如果發(fā)現(xiàn)一維散列隊列節(jié)點下還有二維散列鏈表,則根據(jù)查詢關(guān)鍵字的取值縱向遍歷此二維散列鏈表,查找符合條件的數(shù)據(jù)記錄地址;創(chuàng)建索引接口根據(jù)索引關(guān)鍵字計算出散列隊列下標值,實現(xiàn)索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系轉(zhuǎn)換;當不能夠保證每條數(shù)據(jù)記錄的索引關(guān)鍵字與通過散列算法后得到的散列隊列下標值是一一對應時,延伸出一個二維的散列鏈表,掛在第一層散列隊列的各個節(jié)點下,區(qū)分索引字段值相同與不同,而橫向、縱向擴展,來解決沖突;通過上述映射關(guān)系,既能得到數(shù)據(jù)集上的一個快速索引結(jié)構(gòu);查詢接口當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,系統(tǒng)首先找到已經(jīng)創(chuàng)建好的數(shù)據(jù)集索引入口,通過相同的散列算法,計算出下標值,從一維散列隊列,反向映射獲取數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址,實現(xiàn)快速定位的目的;如果發(fā)現(xiàn)一維散列隊列節(jié)點下還有二維散列鏈表,則根據(jù)查詢關(guān)鍵字的取值縱向遍歷此二維散列鏈表,查找符合條件的數(shù)據(jù)記錄地址;最后,將符合條件的結(jié)果集返回。
全文摘要
基于二維散列的海量數(shù)據(jù)的快速操作方法,首先是利用散列算法,將具體的數(shù)據(jù)記錄集序列,在索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系,構(gòu)造一維散列隊列存儲數(shù)據(jù);當索引關(guān)鍵字和索引序列地址之間形成特定的映射關(guān)系不能唯一定位一條數(shù)據(jù)記錄時,則根據(jù)索引關(guān)鍵字是否相同構(gòu)造一個二維的散列鏈表,掛在第一層散列隊列的各個節(jié)點下,作為之前構(gòu)造的一維散列隊列各節(jié)點的擴充;當需要按照索引關(guān)鍵字對數(shù)據(jù)集進行操作時,通過相同的散列算法,從一維散列隊列,反向映射獲取數(shù)據(jù)集中索引關(guān)鍵字所對應的數(shù)據(jù)記錄地址;如果發(fā)現(xiàn)一維散列隊列節(jié)點下還有二維散列鏈表,則根據(jù)查詢關(guān)鍵字的取值縱向遍歷此二維散列鏈表,查找符合條件的數(shù)據(jù)記錄地址。
文檔編號H04M3/22GK101478608SQ20091002810
公開日2009年7月8日 申請日期2009年1月9日 優(yōu)先權(quán)日2009年1月9日
發(fā)明者劉國祥, 孫力斌, 張家榮, 斌 梁, 旻 陳 申請人:南京聯(lián)創(chuàng)科技股份有限公司