CN103902715A - Ip区间查找方法和装置 - Google Patents

Ip区间查找方法和装置 Download PDF

Info

Publication number
CN103902715A
CN103902715A CN201410134781.3A CN201410134781A CN103902715A CN 103902715 A CN103902715 A CN 103902715A CN 201410134781 A CN201410134781 A CN 201410134781A CN 103902715 A CN103902715 A CN 103902715A
Authority
CN
China
Prior art keywords
address
range lookup
index
filtercondition
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410134781.3A
Other languages
English (en)
Other versions
CN103902715B (zh
Inventor
洪超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201410134781.3A priority Critical patent/CN103902715B/zh
Publication of CN103902715A publication Critical patent/CN103902715A/zh
Application granted granted Critical
Publication of CN103902715B publication Critical patent/CN103902715B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Abstract

本发明公开了一种IP区间查找方法和装置。其中,IP区间查找方法包括:获取用于进行IP区间查找的多个IP地址;获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量;以及基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,其中,多个匹配条件为用于对多个IP地址执行IP区间查找的条件。通过本发明,达到了提高IP地址区间查找的速度的效果。

Description

IP区间查找方法和装置
技术领域
本发明涉及数据库领域,具体而言,涉及一种IP区间查找方法和装置。
背景技术
在数据库使用过程中,经常会存在一些区间匹配的情况,如根据IP(InternetProtocol,互联网之间互联的协议,简称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区间查找。
进一步地,获取的多个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区间查找装置的示意图;
图2是根据本发明实施例优选的IP区间查找装置的示意图;
图3是根据本发明实施例的IP区间查找方法的流程图;以及
图4是根据本发明实施例优选的IP区间查找方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种IP区间查找装置,该装置可以通过计算机设备实现其功能。
图1是根据本发明实施例的IP区间查找装置的示意图。如图1所示,该IP区间查找装置包括第一获取单元10、第二获取单元30和查找单元50。
第一获取单元10用于获取用于进行IP区间查找的多个IP地址。
IP区间查找可以是用于查找IP地址所在的区间,由于IP地址的总个数为固定值,通常一段IP区间对应一段地理信息。例如,北京的IP地址分布在IP区间A中,上海的IP地址分布在IP区间B中,当对IP地址进行区间查找时,如果确定IP地址在IP区间A中时,则可以确定该IP地址对应的用户在北京市。对IP地址进行区间查找是通过IP数据库对IP地址进行查找,将IP地址与IP数据库中的IP区间进行匹配。当有多个IP地址进行IP区间查找时,获取该多个IP地址,以便于对该多个IP地址进行IP区间查找。
第二获取单元30用于获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量。
在获取到多个IP地址之后,获取该多个IP地址的统计信息,其中,该统计信息可以是预先建立的统计信息。该统计信息包括多个IP地址的IP地址的数量。从该统计信息中可以得到IP地址的数量。例如,将获取到的多个IP地址放置于IP列表中,在执行IP区间查找时,可以先获取该IP列表需要进行查询的IP语句相关列的统计信息,以得到需要进行IP区间查找的IP地址的个数。
查找单元50用于基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,其中,多个匹配条件为用于对多个IP地址执行IP区间查找的条件。
在获取到多个IP地址的统计信息之后,IP数据库可以基于该统计信息中的IP地址的数量通过优化引擎生成快速查找计划,即,采用多个匹配条件同时对IP地址进行查找匹配,减少匹配的次数。其中,匹配条件可以是IP区间对应的值,例如,IP区间为0.0.0.1~1.0.0.0,则0.0.0.1和1.0.0.0对应的值可以作为匹配条件,用于判断IP地址是否处于该区间内。由于在现有技术中,IP数据库不知道IP地址的数量,在执行区间查找时,会将IP地址与IP区间的每一个界限值进行匹配判断,例如,在查询区间值(ip between beginIp and EndIp)时,首先从IP数据库的IPLocation表中为driver表里的每一行查找出IP>=BeginIp的所有行(SeekPredicates),再从查找出来的所有行进行筛选比较IP<=EndIP(Predicate),这样会导致筛选查询的数据量特别大。
本发明实施例中,通过将IP地址的统计信息传输给优化引擎,使得优化引擎得知IP地址为多个,则将IP地址与多个匹配条件进行匹配,在查找时的Seek条件为IP>=BeginIP and IP<=EndIP,从而减少查找匹配的次数,提高了IP地址区间查找的速度。
根据本发明实施例,通过获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量,基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,解决了对IP区间匹配的速度慢的问题,达到了提高IP地址区间查找的速度的效果。
需要说明的是,本发明实施例中,用于进行IP地址区间查找的数据库可以采用SqlServer数据库,也可以采用其他数据库。本发明实施例的IP区间查找也可以用于对值的区间查找。
图2是根据本发明实施例优选的IP区间查找装置的示意图。该实施例的IP区间查找装置可以作为上述实施例的IP区间查找装置的一种优选实施方式。如图2所示,该IP区间查找装置包括第一获取单元10、第二获取单元30和查找单元50。其中,查找单元50包括确定模块501、建立模块503和第一查找模块505。
确定模块501用于从统计信息确定多个IP地址中IP地址的数量。
建立模块503用于当多个IP地址中IP地址的数量大于1时,建立所有IP区间对应的值的临时表。
第一查找模块505用于通过临时表对多个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列表的过滤条件对应的索引,即过滤索引。具体地,可以是根据需要执行的SQl选择所有表e_session里用到的列:包含所有匹配列,以及选择列。采取以匹配列为键值,并包含所有选择列的方式建立索引。
根据本发明实施例,通过建立IP列表的过滤条件对应的索引,并将该索引作为统计信息,进行IP区间查找,进一步提高了IP区间查找的速度。
进一步地,如果判断出IP列表具有索引,可以进一步判断该索引是否为聚簇索引或者索引覆盖,如果是,则可以利用该索引进行IP区间查找;反之,则建立索引覆盖的索引,利用建立后的索引进行IP区间查找。
具体地,若筛选列不为IP列表的聚簇索引,或不是索引覆盖(索引包含了所需要筛选的条件和选择的所有列)的情况,也会生成比较糟糕的全表扫描,对于数据仓库等增量按周期进行处理的系统来说,是个严重的负担。
优选地,查找单元50包括:选取模块,用于利用过滤条件对应的索引从多个IP地址选取满足过滤条件的IP地址;以及第二查找模块,用于对满足过滤条件的IP地址执行IP区间查找。
由于IP列表中并不是所有的IP地址均需要进行区间查找,对不满足条件IP(例如已经进行过区间查找的IP地址)进行过滤,只对满足条件的IP地址进行查找,从而减少查找的次数,提高查找效率。
建立索引覆盖的过滤索引(过滤掉表里面不满足条件的记录行,只保留满足条件的行)。如上例中,假如Updatetime列不是聚簇,也无相关的索引,表e_session的聚簇列为id自增长列,则可建立过滤索引,仅包含条件updatetime>’2013-03-05’的所有记录行,选取Select和条件里的所有列,保证索引覆盖,相应Sql为:CREATENONCLUSTERED INDEX FIX_UpdateTime ON E_session(updatetime)WHEREupdatetime>'2013-05-03'。
在上例中,注意过滤索引的使用,仅在SqlServer2008SP2以后的版本才可直接使用,使用时,也需要对相关的Sql加上option recompile的字样,保证此行Sql的执行计划重新编绎,否则不会走新建的过滤索引,若是2008SP2以前的版本,可以考虑使用动态Sql的方式进行,保证执行时动态的编绎执行计划。
在有了上面两步的操作后,SQLServer在分析执行计划里,便能通过建立的过滤索引,对匹配源(IP列表)做快速的选取操作,SqlServer能使用其建立索引附带建立的统计信息,分析相关列的组合值及其出现的可能性,便能正确预估出需要查询的IP地址的行数。当分析出预估行数比较多时,SQLServer的分析引擎便会认为可能会多次查找,而区间值的查找都是在IPLocation的区间索引上进行,所以肯定会有重绕的可能性,便会产生Index Spool(Eager Spool)的算子,在内存中建立所有区间值的临时表,用于对区间进行快速匹配的优化。
优选地,IP区间查找装置还包括:去重单元,用于在获取用于IP进行区间查找的多个IP地址之后,对获取的多个IP地址进行去重,其中,查找单元还用于基于IP地址的数量采用多个匹配条件同时对去重后的多个IP地址执行IP区间查找。
由于获取的多个IP地址中,会存在重复的IP地址,对重复的IP地址进行去重,并利用多个匹配条件对去重后的IP地址进行IP区间查找。可以进一步减少查找的次数,进一步提高IP区间查找的速度。
本发明实施例还提供了一种IP区间查找方法。该方法可以运行在计算机设备上。需要说明的是,本发明实施例的IP区间查找方法可以通过本发明实施例所提供的IP区间查找装置来执行,本发明实施例的IP区间查找装置也可以用于执行本发明实施例所提供的IP区间查找方法。
图3是根据本发明实施例的IP区间查找方法的流程图。如图3所示,该IP区间查找方法包括步骤如下:
步骤S302,获取用于进行IP区间查找的多个IP地址。
IP区间查找可以是用于查找IP地址所在的区间,由于IP地址的总个数为固定值,通常一段IP区间对应一段地理信息。例如,北京的IP地址分布在IP区间A中,上海的IP地址分布在IP区间B中,当对IP地址进行区间查找时,如果确定IP地址在IP区间A中时,则可以确定该IP地址对应的用户在北京市。对IP地址进行区间查找是通过IP数据库对IP地址进行查找,将IP地址与IP数据库中的IP区间进行匹配。当有多个IP地址进行IP区间查找时,获取该多个IP地址,以便于对该多个IP地址进行IP区间查找。
步骤S304,获取多个IP地址的统计信息。统计信息包括多个IP地址中IP地址的数量。
在获取到多个IP地址之后,获取该多个IP地址的统计信息,其中,该统计信息可以是预先建立的统计信息。该统计信息包括多个IP地址的IP地址的数量。从该统计信息中可以得到IP地址的数量。例如,将获取到的多个IP地址放置于IP列表中,在执行IP区间查找时,可以先获取该IP列表需要进行查询的IP语句相关列的统计信息,以得到需要进行IP区间查找的IP地址的个数。
步骤S306,基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找。其中,多个匹配条件为用于对多个IP地址执行IP区间查找的条件。
在获取到多个IP地址的统计信息之后,IP数据库可以基于该统计信息中的IP地址的数量通过优化引擎生成快速查找计划,即,采用多个匹配条件同时对IP地址进行查找匹配,减少匹配的次数。其中,匹配条件可以是IP区间对应的值,例如,IP区间为0.0.0.1~1.0.0.0,则0.0.0.1和1.0.0.0对应的值可以作为匹配条件,用于判断IP地址是否处于该区间内。由于在现有技术中,IP数据库不知道IP地址的数量,在执行区间查找时,会将IP地址与IP区间的每一个界限值进行匹配判断,例如,在查询区间值(ip between beginIp and EndIp)时,首先从IP数据库的IPLocation表中为driver表里的每一行查找出IP>=BeginIp的所有行(SeekPredicates),再从查找出来的所有行进行筛选比较IP<=EndIP(Predicate),这样会导致筛选查询的数据量特别大。
本发明实施例中,通过将IP地址的统计信息传输给优化引擎,使得优化引擎得知IP地址为多个,则将IP地址与多个匹配条件进行匹配,在查找时的Seek条件为IP>=BeginIP and IP<=EndIP,从而减少查找匹配的次数,提高了IP地址区间查找的速度。
根据本发明实施例,通过获取多个IP地址的统计信息,统计信息包括多个IP地址中IP地址的数量,基于IP地址的数量采用多个匹配条件同时对多个IP地址执行IP区间查找,解决了对IP区间匹配的速度慢的问题,达到了提高IP地址区间查找的速度的效果。
需要说明的是,本发明实施例中,用于进行IP地址区间查找的数据库可以采用SqlServer数据库,也可以采用其他数据库。本发明实施例的IP区间查找也可以用于对值的区间查找。
图4是根据本发明实施例优选的IP区间查找方法的流程图。该实施例的IP区间查找方法可以是上述实施例的IP区间查找方法的一种优选实施方式。如图4所示,该IP区间查找方法包括步骤如下:
步骤S402、步骤S404分别与图3所示的步骤S302、步骤S304相同,这里不做赘述。
步骤S406,从统计信息确定多个IP地址中IP地址的数量。
步骤S408,如果多个IP地址中IP地址的数量大于1,则建立所有IP区间对应的值的临时表。
步骤S410,通过临时表对多个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列表的过滤条件对应的索引,即过滤索引。具体地,可以是根据需要执行的SQl选择所有表e_session里用到的列:包含所有匹配列,以及选择列。采取以匹配列为键值,并包含所有选择列的方式建立索引。
根据本发明实施例,通过建立IP列表的过滤条件对应的索引,并将该索引作为统计信息,进行IP区间查找,进一步提高了IP区间查找的速度。
进一步地,如果判断出IP列表具有索引,可以进一步判断该索引是否为聚簇索引或者索引覆盖,如果是,则可以利用该索引进行IP区间查找;反之,则建立索引覆盖的索引,利用建立后的索引进行IP区间查找。
具体地,若筛选列不为IP列表的聚簇索引,或不是索引覆盖(索引包含了所需要筛选的条件和选择的所有列)的情况,也会生成比较糟糕的全表扫描,对于数据仓库等增量按周期进行处理的系统来说,是个严重的负担。
优选地,基于数量采用多个匹配条件同时对多个IP地址执行IP区间查找包括:利用过滤条件对应的索引从多个IP地址选取满足过滤条件的IP地址;以及对满足过滤条件的IP地址执行IP区间查找。由于IP列表中并不是所有的IP地址均需要进行区间查找,对不满足条件IP(例如已经进行过区间查找的IP地址)进行过滤,只对满足条件的IP地址进行查找,从而减少查找的次数,提高查找效率。
建立索引覆盖的过滤索引(过滤掉表里面不满足条件的记录行,只保留满足条件的行)。如上例中,假如Updatetime列不是聚簇,也无相关的索引,表e_session的聚簇列为id自增长列,则可建立过滤索引,仅包含条件updatetime>’2013-03-05’的所有记录行,选取Select和条件里的所有列,保证索引覆盖,相应Sql为:CREATENONCLUSTERED INDEX FIX_UpdateTime ON E_session(updatetime)WHEREupdatetime>'2013-05-03'。
在上例中,注意过滤索引的使用,仅在SqlServer2008SP2以后的版本才可直接使用,使用时,也需要对相关的Sql加上option recompile的字样,保证此行Sql的执行计划重新编绎,否则不会走新建的过滤索引,若是2008SP2以前的版本,可以考虑使用动态Sql的方式进行,保证执行时动态的编绎执行计划。
在有了上面两步的操作后,SQLServer在分析执行计划里,便能通过建立的过滤索引,对匹配源(IP列表)做快速的选取操作,SqlServer能使用其建立索引附带建立的统计信息,分析相关列的组合值及其出现的可能性,便能正确预估出需要查询的IP地址的行数。当分析出预估行数比较多时,SQLServer的分析引擎便会认为可能会多次查找,而区间值的查找都是在IPLocation的区间索引上进行,所以肯定会有重绕的可能性,便会产生Index Spool(Eager Spool)的算子,在内存中建立所有区间值的临时表,用于对区间进行快速匹配的优化。
优选地,在获取用于IP进行区间查找的多个IP地址之后,IP区间查找方法还包括:对获取的多个IP地址进行去重,其中,基于统计信息对多个IP地址执行IP区间查找包括:基于统计信息对去重后的多个IP地址执行IP区间查找。
由于获取的多个IP地址中,会存在重复的IP地址,对重复的IP地址进行去重,并利用多个匹配条件对去重后的IP地址进行IP区间查找。可以进一步减少查找的次数,进一步提高IP区间查找的速度。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种IP区间查找方法,其特征在于,包括:
获取用于进行IP区间查找的多个IP地址;
获取所述多个IP地址的统计信息,所述统计信息包括所述多个IP地址中IP地址的数量;以及
基于所述IP地址的数量采用多个匹配条件同时对所述多个IP地址执行IP区间查找,其中,所述多个匹配条件为用于对所述多个IP地址执行IP区间查找的条件。
2.根据权利要求1所述的IP区间查找方法,其特征在于,基于所述数量采用多个匹配条件同时对所述多个IP地址执行IP区间查找包括:
从所述统计信息确定所述多个IP地址中IP地址的数量;
如果所述多个IP地址中IP地址的数量大于1,则建立所有IP区间对应的值的临时表;以及
通过所述临时表对所述多个IP地址执行IP区间查找。
3.根据权利要求1所述的IP区间查找方法,其特征在于,获取的多个IP地址为IP列表,在获取所述多个IP地址的统计信息之前,所述IP区间查找方法还包括:
获取所述IP列表的过滤条件,所述过滤条件用于对所述IP列表进行过滤;
判断所述IP列表是否具有索引;
如果判断出所述IP列表不具有索引,则建立所述过滤条件对应的索引,所述过滤条件对应的索引用于过滤掉所述IP列表中不满足所述过滤条件的IP地址;以及
将所述过滤条件对应的索引作为所述统计信息。
4.根据权利要求3所述的IP区间查找方法,其特征在于,基于所述IP地址的数量采用多个匹配条件同时对所述多个IP地址执行IP区间查找包括:
利用所述过滤条件对应的索引从所述多个IP地址选取满足所述过滤条件的IP地址;以及
对满足所述过滤条件的IP地址执行IP区间查找。
5.根据权利要求1所述的IP区间查找方法,其特征在于,在获取用于IP进行区间查找的多个IP地址之后,所述IP区间查找方法还包括:
对获取的多个IP地址进行去重,
其中,基于所述IP地址的数量采用多个匹配条件同时对所述多个IP地址执行IP区间查找包括:基于所述IP地址的数量采用多个匹配条件同时对去重后的多个IP地址执行IP区间查找。
6.一种IP区间查找装置,其特征在于,包括:
第一获取单元,用于获取用于进行IP区间查找的多个IP地址;
第二获取单元,用于获取所述多个IP地址的统计信息,所述统计信息包括所述多个IP地址中IP地址的数量;以及
查找单元,用于基于所述IP地址的数量采用多个匹配条件同时对所述多个IP地址执行IP区间查找,其中,所述多个匹配条件为用于对所述多个IP地址执行IP区间查找的条件。
7.根据权利要求6所述的IP区间查找装置,其特征在于,所述查找单元包括:
确定模块,用于从所述统计信息确定所述多个IP地址中IP地址的数量;
建立模块,用于当所述多个IP地址中IP地址的数量大于1时,建立所有IP区间对应的值的临时表;以及
第一查找模块,用于通过所述临时表对所述多个IP地址执行IP区间查找。
8.根据权利要求6所述的IP区间查找装置,其特征在于,获取的多个IP地址为IP列表,所述IP区间查找装置还包括:
第三获取单元,用于在获取所述多个IP地址的统计信息之前,获取所述IP列表的过滤条件,所述过滤条件用于对所述IP列表进行过滤;
判断单元,用于判断所述IP列表是否具有索引;
建立单元,用于当判断出所述IP列表不具有索引时,建立所述过滤条件对应的索引,所述过滤条件对应的索引用于过滤掉所述IP列表中不满足所述过滤条件的IP地址;以及
确定单元,用于将所述过滤条件对应的索引作为所述统计信息。
9.根据权利要求8所述的IP区间查找装置,其特征在于,所述查找单元包括:
选取模块,用于利用所述过滤条件对应的索引从所述多个IP地址选取满足所述过滤条件的IP地址;以及
第二查找模块,用于对满足所述过滤条件的IP地址执行IP区间查找。
10.根据权利要求6所述的IP区间查找装置,其特征在于,所述IP区间查找装置还包括:
去重单元,用于在获取用于IP进行区间查找的多个IP地址之后,对获取的多个IP地址进行去重,
其中,所述查找单元还用于基于所述IP地址的数量采用多个匹配条件同时对去重后的多个IP地址执行IP区间查找。
CN201410134781.3A 2014-04-03 2014-04-03 Ip区间查找方法和装置 Active CN103902715B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410134781.3A CN103902715B (zh) 2014-04-03 2014-04-03 Ip区间查找方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410134781.3A CN103902715B (zh) 2014-04-03 2014-04-03 Ip区间查找方法和装置

Publications (2)

Publication Number Publication Date
CN103902715A true CN103902715A (zh) 2014-07-02
CN103902715B CN103902715B (zh) 2017-12-22

Family

ID=50994037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410134781.3A Active CN103902715B (zh) 2014-04-03 2014-04-03 Ip区间查找方法和装置

Country Status (1)

Country Link
CN (1) CN103902715B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357334A (zh) * 2015-11-21 2016-02-24 广州咨元信息科技有限公司 一种基于ipv6地址划分的ipv6地址存储及快速查询方法
CN105893525A (zh) * 2016-03-30 2016-08-24 努比亚技术有限公司 数据统计装置及方法
CN106657443A (zh) * 2017-02-13 2017-05-10 杭州迪普科技股份有限公司 Ip地址去重方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020143918A1 (en) * 2001-03-27 2002-10-03 Soles L. Roger Internet protocol (IP) address proximity detection and application to peer provider location
CN103561133A (zh) * 2013-11-19 2014-02-05 中国科学院计算机网络信息中心 一种ip地址归属信息索引方法及快速查询方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020143918A1 (en) * 2001-03-27 2002-10-03 Soles L. Roger Internet protocol (IP) address proximity detection and application to peer provider location
CN103561133A (zh) * 2013-11-19 2014-02-05 中国科学院计算机网络信息中心 一种ip地址归属信息索引方法及快速查询方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JEX: "IP地址比较方法", 《博客园HTTP://WWW.CNBLOGS.COM/CSHARPBLOGS/ARTICLES/2160062.HTML》 *
THUNDER54007: "批量IP归属地查询", 《HTTP://BLOG.CHINAUNIX.NET/UID-293474-ID-2134170.HTML》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105357334A (zh) * 2015-11-21 2016-02-24 广州咨元信息科技有限公司 一种基于ipv6地址划分的ipv6地址存储及快速查询方法
CN105357334B (zh) * 2015-11-21 2019-03-01 广州咨元信息科技有限公司 一种基于ipv6地址划分的ipv6地址存储及快速查询方法
CN105893525A (zh) * 2016-03-30 2016-08-24 努比亚技术有限公司 数据统计装置及方法
CN106657443A (zh) * 2017-02-13 2017-05-10 杭州迪普科技股份有限公司 Ip地址去重方法和装置
CN106657443B (zh) * 2017-02-13 2020-01-03 杭州迪普科技股份有限公司 Ip地址去重方法和装置

Also Published As

Publication number Publication date
CN103902715B (zh) 2017-12-22

Similar Documents

Publication Publication Date Title
US10198500B2 (en) Systems and methods for document analytics
US20180060389A1 (en) Query optimization over distributed heterogeneous execution engines
CN105279276A (zh) 一种数据库索引优化系统
US20170300573A1 (en) Webpage data analysis method and device
CN105843875A (zh) 一种面向智能机器人的问答数据处理方法及装置
CN106301825B (zh) Dpi规则的生成方法及装置
CN104408169A (zh) 基于多维表达式语言的维度查询方法及装置
CN103324701A (zh) 数据搜索装置和数据搜索方法
CN108536739B (zh) 元数据敏感信息字段识别方法、装置、设备及存储介质
CN113836163A (zh) 数据的关联查询方法、装置、设备及存储介质
CN106294499A (zh) 一种数据库数据查询方法和设备
CN103902715A (zh) Ip区间查找方法和装置
CN108874950B (zh) 一种基于er关系的数据分布存储方法及装置
CN108073641B (zh) 查询数据表的方法和装置
CN105378724B (zh) 一种数据查询方法、装置及系统
CN106021386A (zh) 面向海量分布式数据的非等值连接方法
CN110941757A (zh) 一种基于大数据的政策信息查询推送系统及方法
CN104484413A (zh) 一种获得搜索结果的方法和装置
Zhong et al. Towards Agile Cyber Analysis: Leveraging Visualization as Functions in Collaborative Visual Analytics
CN112131288B (zh) 数据源接入处理方法和装置
CN105740365A (zh) 一种数据仓库快速查询方法和装置
CN108616385B (zh) 简单网管协议代理的查询方法、mib树的遍历方法及系统
CN110555034A (zh) 一种数据查询分页方法、装置、服务器及介质
CN107423041A (zh) 用于实现应用程序编程接口配置和调用的方法和设备
CN110019911A (zh) 支持知识演化的知识图谱的查询方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: IP interval search method and device

Effective date of registration: 20190531

Granted publication date: 20171222

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: Beijing Guoshuang Technology Co.,Ltd.