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