GeoIP – страны и города, декабрь 2010

    Вышла в свет новая версия русскоязычной базы данных стран и городов. Основные изменения:
    — база maxmind.com была объединена с базой городов России ipgeobase.ru (идея sky_lord)
    — с помощью Переводчика Google были переведены на русский язык ~60,000 названий (идея neytrino), а затем с помощью Яндекс.Карт из них были отсеяны артефакты типа «Инь молодых» и «Авиаторов деревня»
    — были удалены дубли и произведена оптимизация структуры базы.
    Результат этой работы доступен для свободного скачивания.

    База распространяется в двух модификациях: «Страны и города» (14Mb, после установки ~77Mb)  и «Только страны» (1Mb, после установки ~6Mb).  Также в архивах находится небольшой пример использования базы данных на php.

    Точность определения страны ~99%, точность определения городов в среднем ~95%, России ~98%, Украины ~90%.  Много это или мало – зависит от задач, которые собираетесь решать с помощью этой базы.

    Тестовое демо – определение вашей страны и города по IP-адресу

    Рабочее демо — подстановка города по IP в форме поиска авиабилетов

    Для установки базы рекомендую воспользоваться программами типа mysqldumper или через ssh выполнить
    mysql –p –uюзер база_данных < файл.sql

    Не рекомендую устанавливать базу городов на виртуальный хостинг, не выдержит нагрузки.

    Я осознаю грубость перевода географических названий и надеюсь, что эту статью не читают профессиональные географы. Есть несколько идей реализации более точного и научно-обоснованного перевода, в случае успеха расскажу об этом в следующем выпуске.

    Добавлено:
    Исправлена ошибка в базе «Страны и города», файл обновлён.

    Подскажите:
    Для Украины существует аналог ipgeobase.ru?
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 56
    • +5
      Страну правильно а вот город не распознала.
      • 0
        Аналогично…
        • –1
          За тобой выехали?
          • +1
            GeoIPCityLite мой город определяет, а эта база нет.
            • 0
              Аналогично. Сургут Vs. Ханты-Мансийск — везде не работает как хотелось бы, Сургут в пролете (УралСвязьИнформ). Хотя там на самом деле все не просто :) Но, имхо, возможно увеличить процент попаданий.
            • +1
              все правильно определило )
              • +1
                хм. все равно ж она меняется, обновляется, как ее поддерживать то
                • 0
                  Как написано в другом подобном сервисе, можно поставить базу локально, но для актуальности используйте наш сервис и наш апи онлайн.
                  • 0
                    Безусловно. Вижу в логе неудачных проверок несколько московских и питерских диапазонов, которых не было в базе ipgeobase.ru два дня назад.
                    Планирую делать периодические обновления.
                  • 0
                    У меня в профиле город стоит проще было оттуда взять…
                    • 0
                      Спасибо за хорошую новость. В нескольких проектах использую GeoIP. Очень доволен.
                      • 0
                        По какому принципу происходит объединение двух баз?
                        • 0
                          По совпадению названий городов и (в случае тезок) регионов. Российские диапазоны в отдельной таблице. Справочник городов общий.
                        • 0
                          Ваш IP-адрес: 46.73.60.53
                          Страна: Россия
                          Город: Не определен

                          по идее Москва
                          • 0
                            По ipgeobase.ru город обпередился, по netload.biz/ip.php нет.
                            • 0
                              а у меня наоборот. ipgeobase.ru только Украина пишет, а netload.biz и город верно определил.
                            • 0
                              И у меня город не определил. Из 15 комментаторов я четвертый такой. Мне кажется что процент попадания поменьше чем 98%
                              • 0
                                Увы, Вы правы. Обнаружились новые диапазоны российских ip (в основном Москва и Питер), которых не было в базе на момент сборки. После НГ сделаю обновление.
                              • 0
                                Не рекомендую устанавливать базу городов на виртуальный хостинг, не выдержит нагрузки.

                                проблему с индексами таки не решили
                                • +3
                                  Таки в предыдущем топике и в личном сообщении я просил Вас показать правильное (на Ваш взгляд) решение проблемы с индексами. А в ответ тишина. Критиковать – это мы все умеем.
                                    • 0
                                      Например, так и сделано

                                      select * from (select * from net_ru where begin_ip<=$int order by begin_ip desc limit 1) as t where end_ip>=$int

                                      Ключ по begin_ip (в прошлой версии было иначе)
                                      • 0
                                        Да, извиняюсь. Поступил как тру-лоровец.
                                        Однако, зачем это обернуто еще одним select? если данные разбиты на непересекающиеся диапазоны, то ответ будет всегда один.
                                        • 0
                                          Диапазоны не пересекаются, но есть «дыры», пустоты между диапазонами, в которые может попасть (и даже часто попадает) первое условие. Без второй проверки в такой ситуации запрос вернет соседний диапазон, что не правильно.
                                          Можно реализовать вторую проверку на стороне скрипта (php и т.п.), но я решил оставить эту логику в sql.
                                          • 0
                                            Так пусть диапазонов не будет.
                                            • 0
                                              А как без них?

                                              На примере, для чего нужна вторая проверка
                                              IP 89.218.220.231 (Казахстан)
                                              Запрос
                                              select * from (select * from net_ru where begin_ip<=1507515623 order by begin_ip desc limit 1) as t where end_ip>=1507515623
                                              ничего не возвращает, потому что IP нет в российских диапазонах
                                              А если убрать второе условие, то вернется соседний диапазон и будет сделан неверный вывод, что IP из Москвы
                                              • 0
                                                То есть, пусть не будет дыр. Все дыры припишите в Страну Нуляндию.
                                                • 0
                                                  Нерационально. Дыр много, затыкание каждой приведет к большим накладным расходам.
                                                  • 0
                                                    Это не очевидно. Ведь создание временных таблиц это тоже накладные расходы.
                                  • 0
                                    По-моему, проблемы нет. Проблема в том как вы лично интерпретируете план.
                                    Оценка EXPLAIN действительно показывает кучу строк, но судя по данным SHOW STATUS строки не достаются на самом деле.
                                  • 0
                                    Если будет время, дома посмотрю текущее решение и расскажу как решили сами.
                                    • 0
                                      Странно, что maxmind мой город определяет, а ваш сервис — нет
                                      • +1
                                        Для перевода попробуйте не google.translate, а google.geocoding (тыц).
                                        А API будет? Типа, я передаю IP, а вы мне местоположение в клевом формате типа json\xml?
                                        • 0
                                          API обсуждалось в предыдущем топике. Где бы взять сервер с безлимитным каналом?
                                          За ссылку спасибо.
                                          • 0
                                            Мастерхост счас предлагает 1Тб бесплатного трафика в месяц. Если на запрос не больше 1Кб (ну всё же json\xml все дела), то это 1 млрд. запросов. Это на 385 запросов в секунду. Должно хватить.
                                        • 0
                                          В этот раз и страну и город (Ростов-на-Дону) распознал верно.
                                          • 0
                                            у меня определилась Москва, я нахожусь в Питере
                                            возможно виновата Yota (IP зарегистрирован как Московский)
                                            домашняя сеть определилась нормально
                                            • 0
                                              Надо Йоте уже чтонить делать с этим.
                                              • 0
                                                Может сегодня этот ИПи СПб,
                                                а послезавтра его отдадут Московским друзьям

                                                Йота не дает постоянных айпишников.
                                            • 0
                                              а «Великий Новгород» когда-нибудь станет уже Нижним Новгородом?.. я живу в последнем
                                              • 0
                                                Когда выводили один портал в регионы все думал что за город. Спасибо. Теперь знаю.
                                                У меня на входе был список городов от менеджера и я с ним сводил базу максмаинд. Набережные челны у них до сих по звались Брежнев.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • 0
                                                  Работает из коробки и работает быстро (если индекс базы умещается в key_buffer).
                                                  «Родной» язык — это какой?
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                    • 0
                                                      PHP с большими файлами работает относительно медленно, а на Perl я так и не подсел, поэтому с бинарниками помочь не смогу.
                                                      На моем VPS запросы к базе отрабатывают быстро (Apache создает гораздо большую нагрузку). Но размер базы (и особенно индекса) немаленький, на виртуальном хостинге таких клиентов не любят. Вы можете попробовать её на виртуальном хостинге, но потом не говорите, что я вас не предупредил.
                                                      На досуге посмотрю базу по вашей ссылке, но не верю, что города всего мира можно уместить в 4 метра.
                                                  • 0
                                                    Хорошая база, правда судя по координатам IP мой комп расположен в Колокольне Ивана Великого на Красной площади:D
                                                  • 0
                                                    Исправлена ошибка в базе «Страны и города», файл обновлён.
                                                    • 0
                                                      Ваш IP-адрес: 217.77.210.90
                                                      Страна: Украина
                                                      Город: Не определен

                                                      Упс… живу в Николаеве — а это не последний областной центр…
                                                      • 0
                                                        В базе maxmind Украина представлена слабо. Если подскажете аналог ipgeobase.ru для украинских IP-адресов, то постараюсь исправить ситуацию.
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                        • 0
                                                          если бы вы на постоянной основе предоставляли такие данные, то это имело бы смысл, поскольку адреса постоянно меняются
                                                          • 0
                                                            Ваш IP-адрес: 95.135.158.249
                                                            Страна: Украина
                                                            Город: Львов


                                                            Уже ближе, но всё равно промазало. На этот раз где-то 1000-1200 км :)
                                                            • 0
                                                              Если я не ошибаюсь сайт yandex.ru делает это автоматически.
                                                              • 0
                                                                А вы не думали выложить dump на куда-нибудь, где можно отслеживать обновления в файле? Что-то на подобии on-line VCS но для больших (77 Mb) файлов.
                                                                • 0
                                                                  Уважаемый Netload, я готов влиться в проект. Размещу API на быстром сервере, сделаю версию для MongoDB. Но при этом я хочу выложить исходники и саму базу под лицензией BSD (open source). Если вам это интересно, напишите мне пожалуйста.
                                                                  • 0
                                                                    Интересно. Отправил личное сообщение.

                                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.