CN111859033A - Ip库查询方法、装置及ip库压缩方法、装置 - Google Patents
Ip库查询方法、装置及ip库压缩方法、装置 Download PDFInfo
- Publication number
- CN111859033A CN111859033A CN202010713728.4A CN202010713728A CN111859033A CN 111859033 A CN111859033 A CN 111859033A CN 202010713728 A CN202010713728 A CN 202010713728A CN 111859033 A CN111859033 A CN 111859033A
- Authority
- CN
- China
- Prior art keywords
- area
- retrieval
- information
- index
- target
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000006835 compression Effects 0.000 title claims abstract description 17
- 238000007906 compression Methods 0.000 title claims abstract description 17
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/909—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using geographical or spatial information, e.g. location
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种IP库查询方法、装置及IP库压缩方法、装置,涉及云计算领域,基于索引查询IP库,缓解了目前查询IP库的资源消耗较高的问题。IP库中的数据按字典序排列,将待查询IP地址转换为第一整型数字;基于二分法,根据第一整型数字在索引区查询得到两个相邻的目标索引数据块,两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;基于二分法,根据第一整型数字在检索区的第一检索区指针位置和第二检索区指针位置对应的范围内查询得到目标检索数据块,目标检索数据块对应目标信息区指针位置和信息长度;根据目标信息区指针位置和信息长度在信息区查询得到待查询IP地址对应的位置信息。
Description
技术领域
本申请涉及云计算技术领域,尤其是涉及一种IP库查询方法、装置及IP库压缩方法、装置。
背景技术
在互联网日益发达的现今,IP(Internet Protocol,网际互连协议)地址的数目呈爆炸式增长,原有的ipv4号段已经不够满足如今的IP地址需求,因此推出了ipv6。然而,随着ipv6的推出,之前主流的二分查找法获取IP库(IP地址数据库)数据详情的查询过程越来越复杂,并且在业务查询中,对于IP地址对应位置信息的查询越来越频繁。
因此,目前的IP库查询存在以下问题:由于IP地址数量较大,并且IP地址的查询频率越来越高,导致使用二分法查询整个IP库的资源消耗较高。
发明内容
本申请的目的在于提供IP库查询方法、装置及IP库压缩方法、装置,以缓解目前查询IP库的资源消耗较高的技术问题。
第一方面,本申请实施例提供了一种IP库查询方法,所述IP库中的M个IP地址的整型数字按字典序排列,所述IP库包括索引区、检索区和信息区;所述索引区包括N个索引数据块,每个所述索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置,所述检索区包括M个检索数据块,每个所述检索数据块用于存储一个IP地址的整型数字、一个信息区指针位置及信息长度,所述信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N,所述方法包括:
将待查询IP地址转换为第一整型数字;
基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块,所述两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块,所述目标检索数据块对应目标信息区指针位置和目标信息长度;
根据所述目标信息区指针位置和目标信息长度在所述信息区查询得到所述待查询IP地址对应的位置信息。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,所述目标索引数据块的长度为多个字节,所述基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块的步骤之后,还包括:
分别从所述两个相邻的目标索引数据块的第一设定字节中获取所述第一检索区指针位置和所述第二检索区指针位置。
结合第一方面,本申请实施例提供了第一方面的第二种可能的实施方式,所述目标检索数据块的长度为多个字节,所述基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块的步骤之后,还包括:
从所述目标检索数据块的第二设定字节中获取所述目标信息区指针位置及目标信息长度。
第二方面,本申请实施例提供了一种IP库压缩方法,所述IP库中的M个IP地址的整型数字按字典序排列,所述方法包括:
将所述IP库划分为索引区、检索区和信息区,所述索引区包括N个索引数据块,所述检索区包括M个检索数据块;其中,M、N为大于1的整数,且M大于N;
将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块;
将所述M个IP地址对应的位置信息写入所述信息区;
将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块。
结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,所述索引数据块的长度为X个字节,所述将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块的步骤,包括:
将所述N个IP地址中的每个IP地址对应的整型数字写入对应的一个所述索引数据块的前Y个字节;
将所述N个IP地址中的每个IP地址对应的检索区指针位置写入对应的一个所述索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
结合第二方面,本申请实施例提供了第二方面的第二种可能的实施方式,所述将所述M个IP地址对应的位置信息写入所述信息区的步骤,包括:
将所述M个IP地址对应的位置信息去重写入所述信息区。
结合第二方面,本申请实施例提供了第二方面的第三种可能的实施方式,所述检索数据块的长度为X个字节,所述将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块的步骤,包括:
将所述M个IP地址中的每个IP地址对应的整型数字写入对应的一个所述检索数据块的前Y个字节;
将所述M个IP地址中的每个IP地址对应的信息区指针位置及信息长度写入对应的一个所述索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
结合第二方面,本申请实施例提供了第二方面的第四种可能的实施方式,所述IP库包括文件头,所述方法还包括:
将所述检索区的指针开始位置和所述检索区最后一个检索数据块的指针开始位置写入所述文件头。
第三方面,本申请实施例提供了一种IP库查询装置,所述IP库中的M个IP地址的整型数字按字典序排列,所述IP库包括索引区、检索区和信息区;所述索引区包括N个索引数据块,每个所述索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置,所述检索区包括M个检索数据块,每个所述检索数据块用于存储一个IP地址的整型数字、一个信息区指针位置及信息长度,所述信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N,所述装置包括:
转换模块,用于将待查询IP地址转换为第一整型数字;
第一查询模块,用于基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块,所述两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
第二查询模块,用于基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块,所述目标检索数据块对应目标信息区指针位置和目标信息长度;
第三查询模块,用于根据所述目标信息区指针位置和目标信息长度在所述信息区查询得到所述待查询IP地址对应的位置信息。
第四方面,本申请实施例提供了一种IP库压缩装置,所述IP库中的M个IP地址的整型数字按字典序排列,所述装置包括:
划分模块,用于将所述IP库划分为索引区、检索区和信息区,所述索引区包括N个索引数据块,所述检索区包括M个检索数据块,其中,M、N为大于1的整数,且M大于N;
第一写入模块,用于将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块;
第二写入模块,用于将所述M个IP地址对应的位置信息写入所述信息区;
第三写入模块,用于将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块。
第五方面,本申请实施例提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权如上所述的IP库查询方法。
第六方面,本申请实施例提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现如上所述的IP库查询方法。
本申请实施例带来了以下有益效果:
本申请实施例提供的一种IP库查询方法、装置及IP库压缩方法、装置,将待查询IP地址转换为整型数字后,首先基于二分法,根据该整型数字在索引区中查询得到两个相邻的目标索引数据块,这两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置,即查询得到检索区的检索区间;然后基于二分法,根据上述整型数字在检索区的上述检索区间内查询得到目标检索数据块,该目标检索数据块对应目标信息区指针位置和目标信息长度;根据目标信息区指针位置和目标信息长度在信息区查询得到待查询IP地址对应的位置信息。首先基于二分法在索引区查询得到检索区的检索区间,然后基于二分法在检索区间内进行精准查询,由于索引区的数据和上述检索区间的数据都比整个检索区的数据要少,因此,上述查询过程相对于在IP库的所有数据中进行二分法查询的过程,可以降低资源消耗。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的IP库查询方法流程图;
图2为本申请实施例提供的IP库查询过程的示意图;
图3为本申请实施例提供的IP库压缩方法流程图;
图4为本申请实施例提供的IP库的示意图;
图5为本申请实施例提供的IP库查询装置的示意图;
图6为本申请实施例提供的IP库压缩装置的示意图;
图7为本申请实施例提供的电子设备的示意图。
具体实施方式
下面将结合实施例对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前的IP库查询存在以下问题:由于IP地址数量较大,并且IP地址的查询频率越来越高,导致使用二分法查询整个IP库的资源消耗较高。基于此,本申请实施例所公开的一种IP库查询方法、装置及IP库压缩方法、装置,可以降低查询IP库的资源消耗。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种IP库查询方法,结合附图进行详细介绍。
IP库可以是存储IP地址与其对应的位置信息的key-value数据库,本申请实施例提供的IP库查询方法可以应用于根据IP地址查询其对应的位置信息的场景。
本申请实施例中,IP地址可以转换成整型数字后再进行存储,将IP库中的M个IP地址的整型数字按字典序排列,该IP库包括索引区、检索区和信息区;索引区包括N个索引数据块,每个索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置,检索区包括M个检索数据块,每个检索数据块用于存储一个IP地址的整型数字、一个信息区指针位置及信息长度,信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N。
上述检索数据块的数量与IP地址的数量是相同的,而索引区的索引数据块的数量可以根据具体情况进行设定,具体的,可以将M个以字典序排列的整型数字划分为N块,例如256块,每一块对应多个整型数字,并且每一块对应一个索引数据块,每个索引数据块中存储一个整型数字,具体的,所存储的整型数字可以是每一块对应的多个整型数字中排在第一个的整型数字。示例性的,将1~20这20个数字划分为4块,可以是1~5、6~10、11~15、16~20,将每一块中的1、6、11、16分别存储在不同的索引数据块中。当然,划分的多个块中的数字个数也可以不同。
图1为本申请实施例提供的IP库查询方法流程示意图。如图1所示,该方法应用于电子设备,该方法可以包括以下步骤:
步骤S110,将待查询IP地址转换为第一整型数字;
该步骤中,将IP地址转换为整型数字可以通过预设的IP地址转整数规则进行转换。
步骤S120,基于二分法,根据第一整型数字在索引区查询得到两个相邻的目标索引数据块,两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
步骤S130,基于二分法,根据第一整型数字在检索区的第一检索区指针位置和第二检索区指针位置对应的范围内查询得到目标检索数据块,目标检索数据块对应目标信息区指针位置和目标信息长度;
步骤S140,根据目标信息区指针位置和目标信息长度在信息区查询得到待查询IP地址对应的位置信息。
上述二分法是一种数学查询方法,即对于区间[a,b]上连续不断且f(a)*f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。
在上述步骤S120中,根据第一整型数字通过二分法查询索引区,获取第一整型数字对应的目标索引数据块,由于相邻的两个索引数据块中的两个整型数字之间间隔有一定数量的整型数字,因此,该目标索引区数据块中的整型数字可能与第一整型数字相同,也可能与第一整型数字相近。另外,当待查询IP地址存在子网掩码时,可能查询不到第一整型数字对应的目标索引数据块,此时可以选择与第一整型数字最接近的整型数字所对应的索引数据块,并将其作为目标索引数据块。
获取得到上述目标索引数据块后,同时获取该目标索引数据块的下一个索引数据块,得到另一个目标索引数据块,即获取到两个相邻的目标索引数据块,根据这两个目标索引数据块中的第一检索区指针位置和第二检索区指针位置获得第一整型数字对应的检索区的检索区间。
在上述步骤S130中,获取上述检索区的检索区间内的多个检索数据块,根据第一整型数字通过二分法查询检索区间内的多个检索数据块,得到第一整型数字对应的目标检索数据块,该目标检索数据块中存储有第一整型数字和其对应的目标信息区指针位置及目标信息长度,如果检索不到第一整型数字对应的目标检索数据块,则获取与第一整型数字最接近的整型数字对应的检索区数据块。
上述步骤S140中,目标信息区指针位置为待查询IP地址对应的位置信息在信息区的指针起始位置,目标信息长度为位置信息在信息区内存中的地址长度,根据指针起始位置和目标信息长度可以得到上述位置信息在信息区的指针终止位置,例如指针起始位置为2133,目标信息长度为14,那么指针终止位置为2146,上述位置信息即位于2133与2146之间,从而查询得到该位置信息。
本申请实施例的上述IP库查询方法,首先基于二分法在索引区查询得到检索区的检索区间,然后基于二分法在检索区间内进行精准查询,由于索引区的数据和上述检索区间的数据都比整个检索区的数据要少很多,因此,上述查询过程相对于在IP库的所有数据中进行二分法查询的过程,可以降低资源消耗。
在一些实施例中,目标索引数据块的长度为多个字节,在上述步骤S120中查询得到两个相邻的目标索引数据块之后,还可以执行以下步骤:从两个相邻的目标索引数据块分别对应的第一设定字节中获取第一检索区指针位置和第二检索区指针位置。该目标索引数据块中的数据采用字节格式,可以实现快速读取。
具体的,以ipv4的IP地址为例,IP地址为4个字节,目标索引数据块的长度可以为8个字节,前4个字节可以存储整型数字,后4个字节可以存储检索区指针位置,因此,上述第一设定字节可以是后4个字节。
在一些实施例中,目标检索数据块的长度为多个字节,在上述步骤S130中查询得到目标检索数据块的步骤之后,还可以执行以下步骤:从目标检索数据块的第二设定字节中获取目标信息区指针位置及目标信息长度。该目标检索数据块中的数据采用字节格式,可以实现快速读取。
还以ipv4的IP地址为例,目标索引数据块的长度可以为8个字节,前4个字节可以存储整型数字,后4个字节可以存储信息区指针位置及信息长度,因此,上述第二设定字节可以是后4个字节。在具体实施时,可以将后4个字节的前几位用来存储信息长度,剩下的位数用来存储信息区指针位置。
在一些实施例中,上述索引区可以是多级索引区,例如,一级索引区和二级索引区,一级索引区包括多个索引数据块,每个索引数据块用于存储IP地址对应的整型数字和二级索引区指针位置,二级索引区也包括多个索引数据块,每个索引数据块用于存储IP地址对应的整型数字和检索区指针位置,其中,一级索引区的索引数据块数量小于二级索引区的索引数据块数量。
下面以图2所示的IP库查询过程详细介绍一下IP库查询方法。
示例性的,如图2所示,IP地址以127.0.0.1为例,在查询IP库时,将该IP地址转换为整型数字2130706433,然后执行以下步骤:
1)根据该整型数字通过二分法从索引区中查询得到对应的索引数据块,即目标索引数据块,从该目标索引数据块中获取检索区指针位置2178;
2)获取上述目标索引数据块的下一个索引数据块,从该索引数据块的低4字节获取检索区指针位置3178,获取到指针范围2178-3178;
3)通过指针范围2178-3178找到对应检索区的检索区间,通过二分法从检索区间内获取对应的检索数据块,得到信息区的信息长度14及指针位置2133;
4)从信息区获取指针范围2133-2146之间的位置信息,例如图2中的*|*|*|本地IP,即为上述IP地址127.0.0.1对应的位置信息。
如图3所示,本申请实施例提供了一种IP库压缩方法,IP库中的M个IP地址的整型数字按字典序排列,该方法包括以下步骤:
步骤S310,将IP库划分为索引区、检索区和信息区,索引区包括N个索引数据块,检索区包括M个检索数据块;其中,M、N为大于1的整数,且M大于N;
步骤S320,将M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个索引数据块;
步骤S330,将M个IP地址对应的位置信息写入信息区;
步骤S340,将M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个检索数据块。
上述每个索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置的对应关系,每个检索数据块用于存储一个IP地址的整型数字和一个信息区指针位置及信息长度的对应关系。
其中,检索数据块的数量与IP地址的数量是相同的,而索引区的索引数据块的数量可以根据具体情况进行设定,具体的,可以将M个以字典序排列的整型数字划分为N块,例如256块,每一块对应多个整型数字,并且每一块对应一个索引数据块,每个索引数据块中存储一个整型数字,具体的,所存储的整型数字可以是每一块对应的多个整型数字中排在第一个的整型数字。上述N个IP地址对应的整数数字即上述N个索引数据块中存储的N个整型数字。
本申请实施例通过上述IP库压缩方法将IP库分为索引区、检索区及信息区,该IP库结构简单,对数据结构知识要求比较低,学习成本小。另外,将IP地址转换为整型数字进行存储,相对于采用分段数字存储,可以减小所占用内存,从而压缩了IP库内存。由于该IP库结构简单,内存相对较小,因此,在查询IP地址对应的位置信息时,可以降低资源消耗。
在一些实施例中,索引数据块中的数据可以采用字节格式存储,从而可以快速读取索引数据块中的数据。具体的,索引数据块的长度为X个字节,步骤S320可以包括以下步骤:
步骤a)将N个IP地址中的每个IP地址对应的整型数字写入对应的一个索引数据块的前Y个字节;
步骤b)将N个IP地址中的每个IP地址对应的检索区指针位置写入对应的一个索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
具体的,对于ipv4的IP地址来说,上述X可以为8,Y可以为4;对于ipv6的IP地址来说,上述X可以为20,Y可以为16。
在一些实施例中,由于不同IP地址对应的位置信息可以是相同的,相同的位置信息可以只存储一份,从而压缩IP库的内存,减小内存消耗。因此,上述步骤S330具体可以包括以下步骤:
将M个IP地址对应的位置信息去重写入信息区,即将不同IP地址对应的相同的位置信息只存储一份。
在一些实施例中,除了将索引数据块中的数据采用字节格式存储外,检索数据块中的数据也可以采用字节格式存储,从而可以快速读取检索数据块中的数据。具体的,检索数据块的长度为X个字节,步骤S340可以包括以下步骤:
步骤c)将M个IP地址中的每个IP地址对应的整型数字写入对应的一个检索数据块的前Y个字节;
步骤d)将M个IP地址中的每个IP地址对应的信息区指针位置及信息长度写入对应的一个索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
检索数据块的字节数可以与索引数据块的字节数相同,对于ipv4的IP地址来说,上述X可以为8,Y可以为4;对于ipv6的IP地址来说,上述X可以为20,Y可以为16。
在一些实施例中,IP库包括文件头,上述IP库压缩方法还包括以下步骤:将检索区的指针开始位置和检索区最后一个检索数据块的指针开始位置写入文件头。
具体的,文件头可以为8个字节,将检索区的指针开始位置写入前4个字节,将检索区最后一个检索数据块的指针开始位置写入后4个字节。文件头采用字节格式存储,可以实现快速读取。
图4示出了本申请实施例提供的IP库的示意图。
IP地址以ipv4为例,通过上述实施例的IP库压缩方法得到的IP库如图4所示,IP库包括文件头、索引区、信息区和检索区。
示例性的,文件头可以为8bytes(字节),前4bytes指向检索区指针开始位置,后4bytes指向检索区最后一个检索数据块指针开始位置。索引区由多个索引数据块组成,索引数据块长度可以为8bytes,前4bytes为IP地址所转整型数字,例如IP地址为127.0.0.1,其所转整型数字为2130706433,后4bytes为该IP地址对应的检索区指针位置。信息区为IP地址对应的位置信息,信息区存储连续的IP地址对应的位置信息,不同IP地址的位置信息可以相同,只需要存一份,从而可以压缩IP库内存,信息区中虚框内表示位置信息的指针位置,例如2133、2146。检索区由多个检索数据块组成,检索数据块长度可以为8bytes,前4bytes为IP地址转换的整型数字,后4bytes的前几位表示该IP地址对应的位置信息的信息长度,其余位数表示该IP地址对应的信息区指针位置(指针起始位置)。
如图5所示,本申请实施例提供了一种IP库查询装置,IP库中的数据按字典序排列,IP库包括索引区、检索区和信息区;索引区包括N个索引数据块,每个索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置的对应关系,检索区包括M个检索数据块,每个检索数据块用于存储一个IP地址的整型数字和一个信息区指针位置及信息长度的对应关系,信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N,装置包括:
转换模块51,用于将待查询IP地址转换为第一整型数字;
第一查询模块52,用于基于二分法,根据第一整型数字在索引区查询得到两个相邻的目标索引数据块,对应的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
第二查询模块53,用于基于二分法,根据第一整型数字在检索区的第一检索区指针位置和第二检索区指针位置对应的范围内查询得到目标检索数据块,目标检索数据块对应目标信息区指针位置和目标信息长度;
第三查询模块54,用于根据目标信息区指针位置和目标信息长度在信息区查询得到待查询IP地址对应的位置信息。
在可选的实施方式中,目标索引数据块的长度为多个字节,还包括:
第一获取模块,用于从两个相邻的目标索引数据块分别对应的第一设定字节中获取第一检索区指针位置和第二检索区指针位置。
在可选的实施方式中,目标检索数据块的长度为多个字节,还包括:
第二获取模块,用于从目标检索数据块的第二设定字节中获取目标信息区指针位置及信息长度。
如图6所示,本申请实施例提供了一种IP库压缩装置,IP库中的M个IP地址的整型数字按字典序排列,装置包括:
划分模块61,用于将IP库划分为索引区、检索区和信息区,索引区包括N个索引数据块,检索区包括M个检索数据块,其中,M、N为大于1的整数,且M大于N;
第一写入模块62,用于将M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个索引数据块;
第二写入模块63,用于将M个IP地址对应的位置信息写入信息区;
第三写入模块64,用于将M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个检索数据块。
在可选的实施方式中,索引数据块的长度为X个字节,第一写入模块62还用于:
将N个IP地址中的每个IP地址对应的整型数字写入对应的一个索引数据块的前Y个字节;
将N个IP地址中的每个IP地址对应的检索区指针位置写入对应的一个索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
在可选的实施方式中,第二写入模块63还用于:
当M个IP地址对应的位置信息去重写入信息区。
在可选的实施方式中,检索数据块的长度为X个字节,第三写入模块64还用于:
将M个IP地址中的每个IP地址对应的整型数字写入对应的一个检索数据块的前Y个字节;
将M个IP地址中的每个IP地址对应的信息区指针位置及信息长度写入对应的一个索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
在可选的实施方式中,IP库包括文件头,装置还包括:
第四写入模块,用于将检索区的指针开始位置和检索区最后一个检索数据块的指针开始位置写入文件头。
本申请实施例所提供的数据库查询装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
参见图7,本申请实施例还提供一种电子设备700,包括:处理器701,存储器702,总线703和通信接口704,处理器701、通信接口704和存储器702通过总线703连接;存储器702用于存储程序;处理器701用于通过总线703调用存储在存储器702中的程序,执行上述实施例的IP库查询方法。
其中,存储器702可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口704(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线703可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器702用于存储程序,处理器701在接收到执行指令后,执行程序,前述本申请实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器701中,或者由处理器701实现。
处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成上述方法的步骤。
本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现如上的IP库查询方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (12)
1.一种IP库查询方法,其特征在于,所述IP库中的M个IP地址的整型数字按字典序排列,所述IP库包括索引区、检索区和信息区;所述索引区包括N个索引数据块,每个所述索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置,所述检索区包括M个检索数据块,每个所述检索数据块用于存储一个IP地址的整型数字、一个信息区指针位置及信息长度,所述信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N,所述方法包括:
将待查询IP地址转换为第一整型数字;
基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块,所述两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块,所述目标检索数据块对应目标信息区指针位置和目标信息长度;
根据所述目标信息区指针位置和所述目标信息长度在所述信息区查询得到所述待查询IP地址对应的位置信息。
2.根据权利要求1所述的方法,其特征在于,所述目标索引数据块的长度为多个字节,所述基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块的步骤之后,还包括:
从所述两个相邻的目标索引数据块分别对应的第一设定字节中获取所述第一检索区指针位置和所述第二检索区指针位置。
3.根据权利要求1所述的方法,其特征在于,所述目标检索数据块的长度为多个字节,所述基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块的步骤之后,还包括:
从所述目标检索数据块的第二设定字节中获取所述目标信息区指针位置及目标信息长度。
4.一种IP库压缩方法,其特征在于,所述IP库中的M个IP地址的整型数字按字典序排列,所述方法包括:
将所述IP库划分为索引区、检索区和信息区,所述索引区包括N个索引数据块,所述检索区包括M个检索数据块;其中,M、N为大于1的整数,且M大于N;
将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块;
将所述M个IP地址对应的位置信息写入所述信息区;
将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块。
5.根据权利要求4所述的方法,其特征在于,所述索引数据块的长度为X个字节,所述将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块的步骤,包括:
将所述N个IP地址中的每个IP地址对应的整型数字写入对应的一个所述索引数据块的前Y个字节;
将所述N个IP地址中的每个IP地址对应的检索区指针位置写入对应的一个所述索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
6.根据权利要求4所述的方法,其特征在于,所述将所述M个IP地址对应的位置信息写入所述信息区的步骤,包括:
将所述M个IP地址对应的位置信息去重写入所述信息区。
7.根据权利要求4所述的方法,其特征在于,所述检索数据块的长度为X个字节,所述将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块的步骤,包括:
将所述M个IP地址中的每个IP地址对应的整型数字写入对应的一个所述检索数据块的前Y个字节;
将所述M个IP地址中的每个IP地址对应的信息区指针位置及信息长度写入对应的一个所述索引数据块的后(X-Y)个字节;其中,X、Y为大于1的整数,且X>Y。
8.根据权利要求4所述的方法,其特征在于,所述IP库包括文件头,所述方法还包括:
将所述检索区的指针开始位置和所述检索区最后一个检索数据块的指针开始位置写入所述文件头。
9.一种IP库查询装置,其特征在于,所述IP库中的M个IP地址的整型数字按字典序排列,所述IP库包括索引区、检索区和信息区;所述索引区包括N个索引数据块,每个所述索引数据块用于存储一个IP地址的整型数字和一个检索区指针位置,所述检索区包括M个检索数据块,每个所述检索数据块用于存储一个IP地址的整型数字、一个信息区指针位置及信息长度,所述信息区用于存储IP地址对应的位置信息;其中,M、N为大于1的整数,且M大于N,所述装置包括:
转换模块,用于将待查询IP地址转换为第一整型数字;
第一查询模块,用于基于二分法,根据所述第一整型数字在所述索引区查询得到两个相邻的目标索引数据块,所述两个相邻的目标索引数据块对应第一检索区指针位置和第二检索区指针位置;
第二查询模块,用于基于二分法,根据所述第一整型数字在所述检索区的所述第一检索区指针位置和所述第二检索区指针位置对应的范围内查询得到目标检索数据块,所述目标检索数据块对应目标信息区指针位置和目标信息长度;
第三查询模块,用于根据所述目标信息区指针位置和所述目标信息长度在所述信息区查询得到所述待查询IP地址对应的位置信息。
10.一种IP库压缩装置,其特征在于,所述IP库中的M个IP地址的整型数字按字典序排列,所述装置包括:
划分模块,用于将所述IP库划分为索引区、检索区和信息区,所述索引区包括N个索引数据块,所述检索区包括M个检索数据块;其中,M、N为大于1的整数,且M大于N;
第一写入模块,用于将所述M个IP地址中的N个IP地址对应的整型数字和检索区指针位置依次写入N个所述索引数据块;
第二写入模块,用于将所述M个IP地址对应的位置信息写入所述信息区;
第三写入模块,用于将所述M个IP地址对应的整型数字、信息区指针位置及信息长度依次写入M个所述检索数据块。
11.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-4任一项所述的方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010713728.4A CN111859033B (zh) | 2020-07-22 | 2020-07-22 | Ip库查询方法、装置及ip库压缩方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010713728.4A CN111859033B (zh) | 2020-07-22 | 2020-07-22 | Ip库查询方法、装置及ip库压缩方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111859033A true CN111859033A (zh) | 2020-10-30 |
CN111859033B CN111859033B (zh) | 2023-10-27 |
Family
ID=72950302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010713728.4A Active CN111859033B (zh) | 2020-07-22 | 2020-07-22 | Ip库查询方法、装置及ip库压缩方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111859033B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948376A (zh) * | 2021-02-02 | 2021-06-11 | 厦门服云信息科技有限公司 | 一种ip地理位置信息查询方法、终端设备及存储介质 |
CN113392142A (zh) * | 2021-06-29 | 2021-09-14 | 中国工商银行股份有限公司 | Ip地址库命中率计算方法、装置、设备、介质和产品 |
CN114095472A (zh) * | 2021-11-22 | 2022-02-25 | 北京知道创宇信息技术股份有限公司 | 地址管理方法、终端、电子设备及计算机可读存储介质 |
CN114201520A (zh) * | 2021-12-09 | 2022-03-18 | 北京航星永志科技有限公司 | 一种ip地址快速检索方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008009995A2 (en) * | 2006-07-19 | 2008-01-24 | Chronicle Solutions (Uk) Limited | System and method for indexing stored electronic data using a b-tree |
US20160342645A1 (en) * | 2015-05-18 | 2016-11-24 | Oracle International Corporation | Efficient storage using automatic data translation |
CN107682466A (zh) * | 2017-09-26 | 2018-02-09 | 小草数语(北京)科技有限公司 | Ip地址的地域信息搜索方法及其装置 |
CN108255958A (zh) * | 2017-12-21 | 2018-07-06 | 百度在线网络技术(北京)有限公司 | 数据查询方法、装置和存储介质 |
CN110769079A (zh) * | 2019-10-30 | 2020-02-07 | 杭州迪普科技股份有限公司 | 一种检索ip对应地理位置的方法及装置 |
WO2020041928A1 (zh) * | 2018-08-27 | 2020-03-05 | 深圳市锐明技术股份有限公司 | 数据存储方法、系统及终端设备 |
-
2020
- 2020-07-22 CN CN202010713728.4A patent/CN111859033B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008009995A2 (en) * | 2006-07-19 | 2008-01-24 | Chronicle Solutions (Uk) Limited | System and method for indexing stored electronic data using a b-tree |
US20160342645A1 (en) * | 2015-05-18 | 2016-11-24 | Oracle International Corporation | Efficient storage using automatic data translation |
CN107682466A (zh) * | 2017-09-26 | 2018-02-09 | 小草数语(北京)科技有限公司 | Ip地址的地域信息搜索方法及其装置 |
CN108255958A (zh) * | 2017-12-21 | 2018-07-06 | 百度在线网络技术(北京)有限公司 | 数据查询方法、装置和存储介质 |
WO2020041928A1 (zh) * | 2018-08-27 | 2020-03-05 | 深圳市锐明技术股份有限公司 | 数据存储方法、系统及终端设备 |
CN110769079A (zh) * | 2019-10-30 | 2020-02-07 | 杭州迪普科技股份有限公司 | 一种检索ip对应地理位置的方法及装置 |
Non-Patent Citations (2)
Title |
---|
吴广印, 马立柱: "基于QUICK IMS的关系数据库管理", 情报学报, no. 04 * |
赵鹏: "一种基于压缩的全文本数据库倒排索引方法", 黑龙江大学自然科学学报, no. 03 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948376A (zh) * | 2021-02-02 | 2021-06-11 | 厦门服云信息科技有限公司 | 一种ip地理位置信息查询方法、终端设备及存储介质 |
CN113392142A (zh) * | 2021-06-29 | 2021-09-14 | 中国工商银行股份有限公司 | Ip地址库命中率计算方法、装置、设备、介质和产品 |
CN114095472A (zh) * | 2021-11-22 | 2022-02-25 | 北京知道创宇信息技术股份有限公司 | 地址管理方法、终端、电子设备及计算机可读存储介质 |
CN114095472B (zh) * | 2021-11-22 | 2023-11-28 | 北京知道创宇信息技术股份有限公司 | 地址管理方法、终端、电子设备及计算机可读存储介质 |
CN114201520A (zh) * | 2021-12-09 | 2022-03-18 | 北京航星永志科技有限公司 | 一种ip地址快速检索方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111859033B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111859033B (zh) | Ip库查询方法、装置及ip库压缩方法、装置 | |
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
CN108388598B (zh) | 电子装置、数据存储方法及存储介质 | |
CN111090628A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN107807989B (zh) | 小文件处理方法及装置 | |
CN112860592B (zh) | 基于链表的数据缓存方法、装置、电子设备和存储介质 | |
CN111629081A (zh) | 互联网协议ip地址数据处理方法、装置及电子设备 | |
CN111416880A (zh) | Ip地址的寻址方法及装置,计算机存储介质及电子设备 | |
CN111443899B (zh) | 一种元素处理方法、装置、电子设备及存储介质 | |
CN112671948A (zh) | Ip地址所属区域的确定方法、装置、电子设备及存储介质 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN112817538A (zh) | 数据处理的方法、装置、设备和存储介质 | |
CN110569218B (zh) | 一种ext文件系统离线修改方法、装置及存储介质 | |
CN111402958B (zh) | 一种建立基因比对表的方法、系统、设备及介质 | |
CN112052144A (zh) | 信息管理方法、装置、电子设备及存储介质 | |
CN111026762A (zh) | 红黑树索引生成方法、装置、电子设备及存储介质 | |
CN115967604A (zh) | 报文传输方法、装置、电子设备及计算机可读存储介质 | |
CN107729577B (zh) | 一种基于多维哈希表的数据查找方法、终端设备及存储介质 | |
CN116126997A (zh) | 一种文献去重存储方法、系统、设备及存储介质 | |
CN114880523A (zh) | 字符串处理方法、装置、电子设备及存储介质 | |
CN111782661B (zh) | 一种数据存储方法、数据查询方法和装置 | |
CN113722623A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114356912A (zh) | 一种向数据库写入数据的方法及计算机设备 | |
CN110046180B (zh) | 一种用于定位相似实例的方法、装置和电子设备 | |
CN109033271B (zh) | 基于列存储的数据插入方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |