[发明专利]IP区间查找方法和装置有效
申请号: | 201410134781.3 | 申请日: | 2014-04-03 |
公开(公告)号: | CN103902715B | 公开(公告)日: | 2017-12-22 |
发明(设计)人: | 洪超 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京康信知识产权代理有限责任公司11240 | 代理人: | 李志刚,吴贵明 |
地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | ip 区间 查找 方法 装置 | ||
技术领域
本发明涉及数据库领域,具体而言,涉及一种IP区间查找方法和装置。
背景技术
在数据库使用过程中,经常会存在一些区间匹配的情况,如根据IP(Internet Protocol,互联网之间互联的协议,简称IP)在IP数据库里查找出其所属的IP网段,进而得知该IP对应的地理信息等。以IP的区间匹配做举例说明,从IPLocationV3数据库的IPLocation表里通过e_session(会话数据表)里的IP进行区间查找匹配,返回匹配成功的行计数:
select count(*)from E_Session s
inner join IPLocationV3.dbo.IpLocation l on s.ip between l.BeginIp and l.EndIp
where s.updatetime>'2013-3-5'
通过上述方式执行IP区间匹配会非常慢,原因如下:从上述代码中可以看出,在查询区间值(ip between beginIp and EndIp)时,首先从IP数据库的IPLocation表中为driver表里的每一行查找出IP>=BeginIp的所有行(SeekPredicates),再从查找出来的所有行进行筛选比较IP<=EndIP(Predicate),这样会导致筛选查询的数据量特别大。假设driver表里的每一行都是最大IP,那么IP>=BeginIP所得出的行将是driver表条目数与Inner表条目数乘积的个数,得出的行的数量非常庞大,导致对IP区间匹配的速度慢。
针对现有技术中对IP区间匹配的速度慢的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种IP区间查找方法和装置,以解决对IP区间匹配的速度慢的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种IP区间查找方法。根据本发明的IP区间查找方法包括:获取用于进行IP区间查找的多个IP地址;获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量;以及基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,其中,多个匹配条件为用于对多个IP地址执行IP区间查找的条件。
进一步地,基于数量采用多个匹配条件同时对多个IP地址执行IP区间查找包括:从统计信息确定多个IP地址中IP地址的数量;如果多个IP地址中IP地址的数量大于1,则建立所有IP区间对应的值的临时表;以及通过临时表对多个IP地址执行IP区间查找。
进一步地,获取的多个IP地址为IP列表,在获取多个IP地址的统计信息之前,IP区间查找方法还包括:获取IP列表的过滤条件,过滤条件用于对IP列表进行过滤;判断IP列表是否具有索引;如果判断出IP列表不具有索引,则建立过滤条件对应的索引,过滤条件对应的索引用于过滤掉IP列表中不满足过滤条件的IP地址;以及将过滤条件对应的索引作为统计信息。
进一步地,基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找包括:利用过滤条件对应的索引从多个IP地址选取满足过滤条件的IP地址;以及对满足过滤条件的IP地址执行IP区间查找。
进一步地,在获取用于IP进行区间查找的多个IP地址之后,IP区间查找方法还包括:对获取的多个IP地址进行去重,其中,基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找包括:基于IP地址的数量采用多个匹配条件同时对去重后的多个IP地址执行IP区间查找。
为了实现上述目的,根据本发明的另一方面,提供了一种IP区间查找装置。根据本发明的IP区间查找装置包括:第一获取单元,用于获取用于进行IP区间查找的多个IP地址;第二获取单元,用于获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量;以及查找单元,用于基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,其中,多个匹配条件为用于对多个IP地址执行IP区间查找的条件。
进一步地,查找单元包括:确定模块,用于从统计信息确定多个IP地址中IP地址的数量;建立模块,用于当多个IP地址中IP地址的数量大于1时,建立所有IP区间对应的值的临时表;以及第一查找模块,用于通过临时表对多个IP地址执行IP区间查找。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410134781.3/2.html,转载请声明来源钻瓜专利网。