Go to file
Anatolii Karlov 84ed4619ae
bump columbus proto (#26)
* bump columbus proto

* bump columbus proto
2023-10-13 18:38:22 +03:00
.github minor bump (#24) 2023-10-12 14:48:07 +03:00
src bump columbus proto (#26) 2023-10-13 18:38:22 +03:00
.codecov.yml 🔄 Synced file(s) with valitydev/configurations (#8) 2023-10-12 08:19:27 +00:00
.gitignore Init commit 2016-09-14 16:53:15 +03:00
CODEOWNERS 🔄 Synced file(s) with valitydev/configurations (#8) 2023-10-12 08:19:27 +00:00
GeoLite2-City.mmdb Bump geolite2 database, switch to nv-i18n lib (#24) 2020-07-28 12:56:23 +03:00
LICENSE Update file(s) from valitydev/.github 2022-02-21 21:37:43 +00:00
pom.xml bump columbus proto (#26) 2023-10-13 18:38:22 +03:00
README.md + move integration test into one class 2016-10-26 13:13:27 +03:00
renovate.json Update renovate config 2022-02-21 13:44:54 +03:00

Columbus

Сервис получения местоположения по IP

При старте поднимает ин мемори базу данных от maxmind.com которая читает из файла *.mmdb. База maxmind принимает только два вида запросов, дай мне страну по IP, дай мне город по IP. Ответы содержат id объектов, из одного пространства значейний для разных типов объектов (Континет, Страна, Подразделение первого уровня, Подразделение второго уровня, Город), имена и коды обектов на разных языках, и доп информацию.

Найденые проблемы:

  • Запрос вида дай мне город, не всегда находит город, и может вернуть только континет или страну. (например для ip: 89.218.51.9)
  • Для некоторых типов обектов(например, подразделений первого уровня - области в РФ) нет своего geoname_id в базе, хотя подразделение есть и фигирирует в описаниях других объектов. Тестовые запросы в бд
select DISTINCT subdivision_1_iso_code, subdivision_1_name
FROM city_locations_en
WHERE country_name = 'Russia'
--return 83 records

select DISTINCT subdivision_1_iso_code, subdivision_1_name
FROM city_locations_en
WHERE country_name = 'Russia' and subdivision_2_iso_code is null and city_name is null;
--return 41 records