首頁 資料庫 mysql教程 淘宝IP地址库设计

淘宝IP地址库设计

Jun 07, 2016 pm 03:59 PM
不是 為了 地址 淘寶 設計 選擇 專案

当初选择做这么一个项目,不是为了拷贝一份库自己做服务,也不是为了其他目的,只是单纯的熟悉关于http和mysql方面的知识。 下面言归正传。 1、淘宝IP地址库简介 此地址库可以根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括

当初选择做这么一个项目,不是为了拷贝一份库自己做服务,也不是为了其他目的,只是单纯的熟悉关于http和mysql方面的知识。
下面言归正传。

1、淘宝IP地址库简介
此地址库可以根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家、省、市和运营商。
用户也可以主动提交信息来纠错。
主要优势表现为:
(1)地域
覆盖度:94.54% 精确到市级
准确度:96.5% 精确到市级
(2)运营商
覆盖度:93.8%
准确度:暂无统计数据
(3)查询速度
10qps
注:阿里同机房内网,实测速度为4qps左右。
(4)接口
符合REST规范,方便扩展;
使用JSON作为数据格式,方便使用;

2、基础数据
下面介绍一下,需要使用到的一些基础数据项,以及来源。
首先,我们来分析一下淘宝IP地址库的返回数据,
{
"code" : 0, // 请求成功/失败
"data" : {
"country" : "\u4e2d\u56fd", // 国家
"country_id" : "CN", // 国家代码
"area" : "\u534e\u5317", // 地区
"area_id" : "100000", // 地区代码
"region" : "\u5317\u4eac\u5e02", // 省(自治区、直辖市、特别行政区)
"region_id" : "110000", // 省代码
"city" : "\u5317\u4eac\u5e02", // 市(地区、自治州、盟及国家直辖市所属市辖区和县)
"city_id" : "110000", // 市代码
"county" : "", // 县(市辖区、县级市、旗)
"county_id" : "-1", // 县代码
"isp" : "\u4e2d\u56fd\u79d1\u6280\u7f51", // 运营商
"isp_id" : "1000114", // 运营商代码
"ip" : "210.75.225.254" // ipv4/ipv6
}
}
其中:
国家与国家代码,由联合国统计局统一制定。详见:http://zh.wikipedia.org/wiki/ISO_3166-1
地区、省、市、县以及相应的代码,由中华人民共和国国家统计局统一制定,详见:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html
运营商与运营商代码,由国际电联电信标准化部门统一制定,不过已经很久没有维护,不可用。到目前为止,本人也没有找到一份完整的编码表,希望知晓者告知。暂且就以淘宝IP地址库中编码为准。
国家IP地址段,由互联网IP地址分配中心统一管理,在此附上中文版的地址段信息,详见程默的博客,在此表示感谢:http://ipblock.chacuo.net/

3、数据库设计
(1)数据项及命名
国家 country
地区 region
省(自治区、直辖市、特别行政区) province
市(地区、自治州、盟及国家直辖市所属市辖区和县) city
县(市辖区、县级市、旗) county
镇(乡、城镇) town
村(村庄) village
运营商 isp
IP ip

(2)IP表
国家代码 2个字节 CHAR(2)
县代码 6位整形 UINT(20)
村代码 12位整形 UINT(40)
运营商代码 7位整形 UINT(24)
IP地址 4个字节 UINT(32)

(3)国家表
二位字母 2个字节 CHAR(2)
三位字母 3个字节 CHAR(3)
三位数字 3位整形 UINT(10)
ISO英文用名 48个字节 CHAR(48)
中文用名 48个字节 CHAR(48)

(4)地区表
代码 1位整形 UINT(4)
名称 4个字节 CHAR(4)

(5)县(市辖区、县级市、旗)表
代码 6位整形 UINT(20)
名称 48个字节 CHAR(48)

(6)村(村庄)表
代码 12位整形 UINT(40)
名称 48个字节 CHAR(48)

(7)运营商表
代码 7位整形 UINT(24)
名称 48个字节 CHAR(48)

4、数据采集
IP运营商信息来源于各个运营商,IP所属地域信息来源于CNNIC,不过这些信息不太容易拿到完整的。
所以,此处就以淘宝IP地址库为来源。

5、实现方案
使用 nodejs + python 实现,nodejs主要实现网络交互集中的部分,python主要实现网页抓取。数据库使用常见的 mysql。
(1)国家代码抓取
使用 python 实现从 http://zh.wikipedia.org/wiki/ISO_3166-1 地址抓取代码信息,并保存文本country.txt。当然,也可以直接手动拷贝粘贴到文本中。
使用 nodejs 按行读取上一步抓取到的文本,做处理,使用 node-mysql 写入数据库。

(2)县代码抓取
使用 python 实现从 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html 地址抓取代码信息,并保存文本cncounty.txt。当然,也可以直接手动拷贝粘贴到文本中。
使用 nodejs 按行读取上一步抓取到的文本,做处理,使用 node-mysql 写入数据库。

(3)国内IP段抓取
使用 python 实现从 http://ipblock.chacuo.net/ 地址抓取IP段信息,并保存文本cnip.txt。当然,也可以直接手动拷贝粘贴到文本中。

(4)IP地址信息查询
使用 nodejs 读取 cnip.txt 文本,每次解析10000个IP,使用 http 模块从淘宝IP地址库查询结果,并使用 node-mysql 写入数据库。
由于在 nodejs 中 http 处理和 mysql 处理都是异步操作,所以,增加一个缓冲区,保存http请求结果。笔者使用了经典的生产者消费者模型来处理这个问题。

6、结果
为了保证请求的稳定,使用阿里云服务器运行此系统。
实际运行时,每秒可以稳定的请求到5个IP信息,中国目前(截止2014年1月)拥有3.3亿IP,完成全部请求大约需要2.98天。

完成全部存储,数据库大小为22.3GB。

转载请注明来自隐居士(石硕)的CSDN博客:blog.csdn.net/shishuo365 如有疑问请发邮件shishuo365#126.com(将#更换为@)

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

淘寶免單紅包領取方式2024 淘寶免單紅包領取方式2024 May 09, 2024 pm 03:22 PM

2024淘寶免單活動每日三場,大家需要在對應時間下單付款對應金額的商品,免單金額是以等額紅包形式發放,接下來給大家帶來了淘寶免單紅包領取方法2024:搶到免單的用戶,紅包資格將發放至卡券包,為待激活狀態;網頁版淘寶暫無卡券包,僅做免單活動的中獎記錄的展示;卡券包在【淘寶APP-我的淘寶-我的權益-紅包】。淘寶免單紅包領取方式20241、搶到免單的用戶,紅包資格將發放至卡券包,為待激活狀態;2、網頁版淘寶暫無卡券包,僅做免單活動的中獎記錄的展示;3、卡券包在【淘寶APP-我的淘寶-我的權益-紅包】

AI攻克費馬大定理?數學家放棄5年職業生涯,將100頁證明變代碼 AI攻克費馬大定理?數學家放棄5年職業生涯,將100頁證明變代碼 Apr 09, 2024 pm 03:20 PM

費馬大定理,即將被AI攻克?而整件事最有意義的地方在於,AI即將解決的費馬大定理,正是為了證明AI無用。曾經,數學屬於純粹的人類智力王國;如今,這片疆土正被先進的演算法所破解,所踐踏。圖片費馬大定理,是一個「臭名昭著」的謎題,在幾個世紀以來,一直困擾著數學家。它在1993年被證明,而現在,數學家們有一個偉大計畫:用電腦把證明過程重現。他們希望在這個版本的證明中,如果有任何邏輯上的錯誤,都可以由電腦檢查出來。專案網址:https://github.com/riccardobrasca/flt

淘寶怎麼關掉紅包提醒 淘寶怎麼關掉紅包提醒 Apr 01, 2024 pm 06:25 PM

淘寶是許多小夥伴們常用的網購軟體,平常很多東西各位都會從裡面下單購買,裡面給用戶們提供了紅包提醒功能,有的朋友們想要來關掉,那麼就趕快來PHP中文網看看吧。淘寶關閉紅包提醒步驟一覽1、開啟淘寶APP的個人中心,選擇【設定】按鈕進入頁面。 2.找到【訊息通知】選項,在這裡可以選擇訊息推播開關,找到紅包訊息將開關關閉就可以了。 3.或也可以透過手機的設定頁面,將淘寶APP的通知權限關閉,這樣所有來自淘寶的訊息都不會進入推播,只有開啟後才能看到。 4.使用者可以自己設定想要接收哪些類型的訊息,這樣使用起來也

首發899元 中興5G隨身Wi-Fi U50S開賣:最高網速500Mbps 首發899元 中興5G隨身Wi-Fi U50S開賣:最高網速500Mbps Apr 26, 2024 pm 03:46 PM

4月26日消息,中興5G隨身Wi-FiU50S目前已經正式開賣,首發899元。外觀設計上,中興U50S隨身Wi-Fi簡約時尚,易於手持和包裝。其尺寸為159/73/18mm,攜帶方便,讓您隨時隨地暢享5G高速網絡,實現暢行無阻的行動辦公與娛樂體驗。中興5G隨身Wi-FiU50S該設備支援先進的Wi-Fi6協議,峰值速率高達1800Mbps,依托驍龍X55高效能5G平台,為用戶提供極速的網路體驗。不僅支援5G雙模SA+NSA網路環境與Sub-6GHz頻段,實測網速更可達驚人的500Mbps,輕鬆滿

《淘寶》免單紅包退款會退嗎 《淘寶》免單紅包退款會退嗎 May 08, 2024 am 08:16 AM

在淘寶購物時,我們經常會使用免單紅包來享受優惠。但是,如果我們需要退款,這些免單紅包會被退回嗎?讓我們來看看這個問題的答案。淘寶免單紅包退款會退回嗎分情況而論獲得紅包時,紅包是待激活狀態,在兌換商品之前,這個待激活的紅包是沒有激活的,暫時無法使用,等購買的商品確認收貨之後,待啟動狀態的紅包才可使用。免單紅包使用後商品有問題需要退貨,那麼紅包的退貨需要按照實際情況來判斷:一、退款規則11、紅包使用後發生退款,則紅包按比例退回。 2.在未逾期的情況下,退回紅包的使用期限為原定使用期限,若逾期7天內發

《淘寶》510免單紅包怎麼用 《淘寶》510免單紅包怎麼用 May 08, 2024 pm 10:00 PM

淘寶510免單紅包怎麼用?淘寶近期開展了510週年慶的免單活動,這個活動是可以獲得免單紅包的,福利非常的多,相信很多小伙伴都想參與這個活動,也有小伙伴已經領取到了免單紅包,但是卻不知道具體的用法,今天就帶大家一起來看看相關的介紹。淘寶510週年慶免單紅包使用介紹使用方:猜題下單的所有訂單確認收貨後,免單紅包即可使用。一、免單紅包發放及追回用戶可以透過網頁版淘寶暫無卡券包,但可在【淘寶APP-我的淘寶-我的權益-紅包】處查看。搶到免單的用戶,紅包資格將發放至卡券包,為待啟動狀態;卡券包在進行中獎

復古潮流! HMD與喜力聯合推出翻蓋手機:透明外殼設計 復古潮流! HMD與喜力聯合推出翻蓋手機:透明外殼設計 Apr 17, 2024 pm 06:50 PM

4月17日消息,HMD攜手知名啤酒品牌喜力以及創意公司Bodega,聯袂推出了一款獨特的翻蓋手機-無聊手機(TheBoringPhone)。這款手機不僅在設計上充滿新意,更在功能上返璞歸真,旨在引領人們回歸真實的人際交往,享受與朋友暢飲的純粹時光。無聊手機採用了獨特的透明翻蓋設計,展現出簡約而不失優雅的美感。其內部配備了2.8英寸QVGA顯示屏,外部則是一塊1.77英寸的顯示屏,為用戶提供了基本的視覺交互體驗。在攝影方面,雖然僅搭載了30萬畫素的鏡頭,但足以應付日常的簡

榮耀Magic V3首發AI離焦護眼技術:有效緩和近視發展 榮耀Magic V3首發AI離焦護眼技術:有效緩和近視發展 Jul 18, 2024 am 09:27 AM

7月12日消息,榮耀MagicV3系列今日正式發布,搭載全新榮耀視力舒緩綠洲護眼屏,在屏幕本身俱備高規格和高素質的同時,還開創性的引入AI主動式護眼技術。據悉,傳統的緩解近視的方式是“近視鏡”,近視眼鏡度數均勻分佈,保證了視線中心區域成像在視網膜之上,但周邊區域成像在視網膜後,視網膜感應到成像在後,促進眼軸向後生長,從而使度數加深。目前主要的緩解近視發展的方式之一是“離焦鏡”,其中心區域度數正常,週邊區域透過光學設計分區調整,從而使周邊區域成像落在視網膜前,

See all articles