一、数据尺寸

以下数据统计采集自版本2025/06/11的原始数据,每个快照版本会有所变化,但是大体差不多,仅供参考:

1. 数据版本V4-基础版

2. 数据行数22614657

3. 空间大小3590253547字节 = 3.4G,生成的满载版XDB文件大概340MiB左右

二、数据样本

以下数据样本采集自某一个快照的离线.txt原始数据,仅供参考:

220.231.194.163|220.231.194.207|3706176163|3706176207|亚洲|中国|广东|深圳|福田|电信|114.05571|22.52245|440304|0755|518000|Asia/Shanghai|CNY|11|CHXX0120
220.231.194.208|220.231.194.223|3706176208|3706176223|亚洲|中国|广东|深圳|南山|电信|113.93029|22.53291|440305|0755|518000|Asia/Shanghai|CNY|11|CHXX0120
220.231.194.224|220.231.195.255|3706176224|3706176511|亚洲|中国|广东|深圳|福田|电信|114.05571|22.52245|440304|0755|518000|Asia/Shanghai|CNY|11|CHXX0120
220.231.196.0|220.231.199.255|3706176512|3706177535|亚洲|中国|广东|深圳||电信|114.085947|22.547|440300|0755|518000|Asia/Shanghai|CNY|11|CHXX0120
220.231.200.0|220.231.200.255|3706177536|3706177791|亚洲|中国|广东|深圳|宝安|电信|113.88311|22.55371|440306|0755|518100|Asia/Shanghai|CNY|11|CHXX0120

三、字段描述

每一行代表一个IP数据段和其对应的数据信息,不同字段使用|隔开,每一行的字段数是相同的,字段本身无值的使用空字符串代替。

223.247.32.216|223.247.32.217|3757514968|3757514969|亚洲|中国|广东|深圳|宝安|电信|113.88311|22.55371|440306|0755|518100|Asia/Shanghai|CNY|11|CHXX0120

例如,如上数据从左至右分别对应如下表格的字段(从上至下):(表结构方便您将数据导入到数据库中使用)

字段值 字段说明 字段名 字段类型 字段长度
223.247.32.216 ip块起始ip ip_start varchar 20
223.247.32.217 ip块结束ip ip_end varchar 20
3757514968 ip块起始ip整形 ip_start_num bigint 20
3757514969 ip块结束ip整形 ip_end_num bigint 20
亚洲 所属的七大洲 continent varchar 20
中国 国家 country varchar 50
广东 省份 province varchar 100
深圳 城市 city varchar 100
宝安区 区县 district varchar 120
电信 互联网供应商 isp varchar 100
113.88311 经度 longitude varchar 15
22.55371 纬度 latitude varchar 15
440306 行政区码 area_code varchar 100
0755 电话和区号 city_code varchar 10
518100 邮编 zip_code varchar 20
Asia/Shanghai 时区 time_zone varchar 20
CNY 货币 currency varchar 20
11 海拔 elevation varchar 50
CHXX0120 气象站 weather_station varchar 50

四、查询和字段检索

XDB存储格式将上述的原始数据标准化为通用格式:起始IP|结束IP|定位信息,调用XDB查询接口返回的数据只有后面的定位信息,例如使用XDB查询客户端查询IP223.247.32.216会返回如下的字符串定位信息:

3757514968|3757514969|亚洲|中国|广东|深圳|宝安|电信|113.88311|22.55371|440306|0755|518100|Asia/Shanghai|CNY|11|CHXX0120

如果我要继续取用其中的字段,需要对数据使用|切割,然后再通过下标索引去提取,例如:

var region = 'XDB查询出来的定位信息,假设为上述定位信息';
var fields = region.split('|');     // 通过 | 对定位信息进行切割
// fields 的数字索引结构如下:
[
    0: 3757514968,
    1: 3757514969,
    2: 亚洲,
    3: 中国,
    4: 广东,
    5: 深圳,
    6: 宝安,
    7: 电信,
    8: 113.88311,
    9: 22.55371,
    10: 440306,
    11: 0755,
    12: 518100,
    13: Asia/Shanghai,
    14: CNY,
    15: 11,
    16: CHXX0120
];

// 接下来就可以通过下标取对应的字段了。
print(fields[3]);       // 国家
print(fields[5]);       // 城市
print(fields[6]);       // 区县
print(fields[13]);      // 时区
...

如果使用的XDB文件进行了自定义字段的生成,使用方式不变,只是定位信息切割后字段的索引下标会发生改变,选取正确的下标获取指定字段值即可。

离线数据字段都是经过标准化处理的,如果某个字段缺失会默认使用空字符串代替,也就是相同的下标取到的一定是对应的字段,无值会返回空字符串,例如如下的有空值的样本数据:

北美洲|美国|California|Los Angeles||美国电话电报公司|-118.243680|34.052230|||90009|America/Los_Angeles|USD||

上述数据的行政区码,电话区号都没有,fields[10]fields[11]都会返回空字符串。