База данных MySQL с IP-адресами и их привязками к географическим объектам

В этой базе находятся соответствия IP-адресов и географических объектов с указанием города, страны, штата или региона, почтовый индекс и даже широта и долгота!

В дампе базы есть следующие таблицы:

  • cities : Города мира (страна, регион, широта, долгота, класс IP-адреса)
  • fips_countries : Страны мира (код, имя)
  • fips_regions : Регионы
  • ip_group_city : Местонахождение IP-адресов (по стране, региону, городу, почтовому индексу, широте и долготе)

Как пользоваться?
IP-адреса находятся в таблицах ip_group_city и ip_group_country и вычисляются по формуле (например для IP A.B.C.D):

ip = (A*256+B)*256+C

Точность до последнего октета на так важна :)
Например, у нас есть IP 74.125.45.100 (google)
Приводим его к виду, сохраненному в БД

ip = (74*256+125)*256+45 = 4881709

И делаем запрос:

SELECT * FROM `ip_group_city` where `ip_start` <= 4881709 order by ip_start desc limit 1;

Результат:

ip_start|country_code|region_code|city|zipcode|latitude|longitude
4881664|US|CA|Mountain View|94043|37.4192|-122.057

Почему в базе данных лишь 1,2 миллионов записей, в то время как в действительности IP-адресов больше чуть ли не в 10 раз???
Пусть IP с 74.125.0.XXX по 74.125.32.XXX расположены близко друг к другу (принадлежат Google, например) Если бы в базе 32 раза была бы сохранена одна и таже информация, то размер базы был бы огромным! Поэтому в базе лежит лишь 74.125.0.XXX. Следующая строка начнется с 74.125.33.XXX

Оригинал: http://blogama.org/node/58
Скачать базу: http://www.blogama.org/ipinfodb.sql.bz2 (10 Mb)

Зеркало: http://www.boombick.org/ipinfodb.sql.bz2


 

Система Orphus

 


 

Comments: 7

  1. anonymous February 10th, 2009 at 4:39 pm

    Это для тех, кто не осилил geoip?

  2. Блог журналиста February 18th, 2009 at 2:37 pm

    Интересное в сети…

    [...]графических объектов с указанием города, страны, штата или региона, почтовый индекс и даже широта и …

  3. Шумахер March 5th, 2009 at 8:09 pm

    <<Это для тех, кто не осилил geoip?
    Думаю,что не только для них)Вообще не помешает)

  4. Валентинов March 19th, 2009 at 2:47 pm

    Спасибо,правда ширина и долгота мне лично не нужны,но все остальное очень даже интересно!

  5. Макс Пименов March 24th, 2009 at 11:55 pm

    <<<<Почему в базе данных лишь 1,2 миллионов записей, в то время как в действительности IP-адресов больше чуть ли не в 10 раз???
    Хм…ну может некоторые под серьезной защитой?

  6. Sergio April 14th, 2009 at 3:03 pm

    Hi, инфа – супер, а как или где сделать привязку к часовым поясам, буду весьма признателен…..

  7. Cashtaller October 28th, 2009 at 4:22 am

    На самом деле немного не правильно описанно в данной статье…
    IP правильно по базе высчитывать так:
    function ip2int($ip) {
    $a=explode(“.”,$ip);
    return $a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3];
    }

    Убедился сейчас сам. Так как написанно в статье не правлиьно.

Add a Comment