专利名称:基于二维散列的海量数据的快速操作方法
技术领域:
本发明涉及一种电信运营支撑系统的方法,尤其是海量数据的快速操作方法。
二背景技术:
随着电信行业用户和业务量的巨增,对千万级话单数据的快速处理成为电信运营系统 的难点和重点。目前的系统应用需要对存在于计算机系统物理内存中的海量数据频繁进行 査询、更新、删除操作,这些数据上的索引算法的效率,显然已经成为影响系统运行速度 的关键。
而现有的单向散列函数指的是根据输入消息(任何字节串,如文本字符串、Word文档、 JPG文件等)输出固定长度数值的算法,输出数值也称为"散列值"或"消息摘要",其 长度取决于所采用的算法,通常在128 256位之间。单向散列函数旨在创建用于验证消息 完整性的简短摘要。在诸如TPC/工P等通信协议中,常采用检验和或CRC (循环冗余校验) 来验证消息的完整性。
三
发明内容
本发明目的是,针对电信运营系统有数据量大,要求系统响应快速、稳定并具有自维 护性等特点,提出一种面向电信运营系统的方法,即基于二维散列的海量数据的快速操作 方法;本发明目的还在于解决下列问题
*极高效的数据査找——当其管理的数据按照査找关键字得到足够的均匀散列时,甚 至可以直接定址,返回查找关键字所对应的记录集;数据记录变更无须重构索引; 可无限制动态扩充所管理的数据记录量。采用此发明算法组织的数据索引结构,可 以使得对百万数据记录集合的内存数据表的査找效率达到微秒级别,在技术上极大 的满足了电信运营系统的要求。 本发明的技术方案是,基于二维散列的海量数据的快速操作方法,首先是利用散列算 法,将具体的数据记录集序列,在索引关键字和索弓i序列地址之间形成特定的映射关系, 构造一维散列队列存储数据;当索引关键字和索引序列地址之间形成特定的映射关系不能 唯一定位一条数据记录时,则根据索弓1关键字是否相同构造一个二维的散列链表,挂在第 一层散列队列的各个节点下,作为之前构造的一维散列队列各节点的扩充,区分索引字段 值相同与不同;
当需要按照索引关键字对数据集进行操作时,通过相同的散列算法,从一维散列队列, 反向映射获取数据集中索引关键字所对应的数据记录地址,实现快速定位的目的;如果发 现一维散列队列节点下还有二维散列链表,则根据查询关键字的取值纵向遍历此二维散列 链表,査找符合条件的数据记录地址;
创建索引接口根据索引关键字计算出散列队列下标值,实现索引关键字和索引序列 地址之间形成特定的映射关系转换;当不能够保证每条数据记录的索引关键字与通过散列 算法后得到的散列队列下标值是一一对应时,延伸出一个二维的散列链表,挂在第一层散 列队列的各个节点下,区分索引字段值相同与不同,而横向、纵向扩展,来解决冲突;通 过上述映射关系,既能得到数据集上的一个快速索弓1结构;查询接口当需要按照索引关键字对数据集进行操作时,系统首先找到已经创建好的 数据集索引入口,通过相同的散列算法,计算出下标值,从一维散列队列,反向映射获取 数据集中索引关键字所对应的数据记录地址,实现快速定位的目的;如果发现一维散列队 列节点下还有二维散列链表,则根据查询关键字的取值纵向遍历此二维散列链表,查找符 合条件的数据记录地址;最后,将符合条件的结果集返回。
此发明主要分成散列算法、二维散列算法两个部分
*散列算法
根据索引关键字计算出散列队列下标值,实现索引关键字和索引序列地址之间形成 特定的映射关系转换。 * 二维散列算法
不能够保证每条数据记录的索引关键字与通过散列算法后得到的散列队列下标值 是一一对应的,因此极有可能出现对于不同的元素,通过散列算法后得到却计算出 了相同的散列队列下标值即索引字段值;又或者有非唯一索引存在,这样就产生了 "冲突"。因而设计出一个二维的散列链表,挂在第一层散列队列的各个节点下, 区分索引字段值相同与不同,而横向、纵向扩展,来解决冲突。即具有两个索引散 列链表的计算;
本发明的有益效果该发明已经在内存数据管理产品中得到成功应用,并作为我国核心 电信运营系统产品关键业务数据管理中心的主要构成技术方案,部署在计费账务后台业务 处理系统中,综合处理速度得到了 50% 80%的提升。
四
图l.二维散列索引逻辑结构图
五具体实施方式
.
本发明目前内嵌于内存数据管理的索引管理模块中,也可独立封装,做为第三方插 件提供于其他模块适配。其在索引管理模块中应用的标准的软件模型如图l所示。
*创建索引接口
使用本发明技术,根据索引关键字计算出散列队列下标值,实现索引关键字和 索引序列地址之间形成特定的映射关系转换;当不能够保证每条数据记录的索引关 键字与通过散列算法后得到的散列队列下标值是一一对应时,延伸出一个二维的散 列链表,挂在第一层散列队列的各个节点下,区分索引字段值相同与不同,而横向、 纵向扩展,来解决冲突。
系统维护上述映射关系,既能得到数据集上的一个快速索引结构。 *查询接口
当需要按照索引关键字对数据集进行操作时,系统首先找到已经创建好的数据 集索引入口,通过相同的散列算法,计算出下标值,从一维散列队列,反向映射 获取数据集中索引关键字所对应的数据记录地址,实现快速定位的目的;如果发 现一维散列队列节点下还有二维散列链表,则根据査询关键字的取值纵向遍历此 二维散列链表,查找符合条件的数据记录地址。最后,将符合条件的结果集返回。
权利要求
1、基于二维散列的海量数据的快速操作方法,首先是利用散列算法,将具体的数据记录集序列,在索引关键字和索引序列地址之间形成特定的映射关系,构造一维散列队列存储数据;当索引关键字和索引序列地址之间形成特定的映射关系不能唯一定位一条数据记录时,则根据索引关键字是否相同构造一个二维的散列链表,挂在第一层散列队列的各个节点下,作为之前构造的一维散列队列各节点的扩充,区分索引字段值相同与不同;其特征是当需要按照索引关键字对数据集进行操作时,通过相同的散列算法,从一维散列队列,反向映射获取数据集中索引关键字所对应的数据记录地址,实现快速定位的目的;如果发现一维散列队列节点下还有二维散列链表,则根据查询关键字的取值纵向遍历此二维散列链表,查找符合条件的数据记录地址;创建索引接口根据索引关键字计算出散列队列下标值,实现索引关键字和索引序列地址之间形成特定的映射关系转换;当不能够保证每条数据记录的索引关键字与通过散列算法后得到的散列队列下标值是一一对应时,延伸出一个二维的散列链表,挂在第一层散列队列的各个节点下,区分索引字段值相同与不同,而横向、纵向扩展,来解决冲突;通过上述映射关系,既能得到数据集上的一个快速索引结构;查询接口当需要按照索引关键字对数据集进行操作时,系统首先找到已经创建好的数据集索引入口,通过相同的散列算法,计算出下标值,从一维散列队列,反向映射获取数据集中索引关键字所对应的数据记录地址,实现快速定位的目的;如果发现一维散列队列节点下还有二维散列链表,则根据查询关键字的取值纵向遍历此二维散列链表,查找符合条件的数据记录地址;最后,将符合条件的结果集返回。
全文摘要
基于二维散列的海量数据的快速操作方法,首先是利用散列算法,将具体的数据记录集序列,在索引关键字和索引序列地址之间形成特定的映射关系,构造一维散列队列存储数据;当索引关键字和索引序列地址之间形成特定的映射关系不能唯一定位一条数据记录时,则根据索引关键字是否相同构造一个二维的散列链表,挂在第一层散列队列的各个节点下,作为之前构造的一维散列队列各节点的扩充;当需要按照索引关键字对数据集进行操作时,通过相同的散列算法,从一维散列队列,反向映射获取数据集中索引关键字所对应的数据记录地址;如果发现一维散列队列节点下还有二维散列链表,则根据查询关键字的取值纵向遍历此二维散列链表,查找符合条件的数据记录地址。
文档编号H04M3/22GK101478608SQ20091002810
公开日2009年7月8日 申请日期2009年1月9日 优先权日2009年1月9日
发明者刘国祥, 孙力斌, 张家荣, 斌 梁, 旻 陈 申请人:南京联创科技股份有限公司