Как быстро определять город и страну по IP?

Есть база данных maxmind (города, страны и IP)
Сейчас данные хранятся в MS SQL базе данных и проверка IP происходит при каждом запросе пользователя к API.
Соответственно огромное количество select запросов к базе для поиска IP и нагрузка на неё.
Какие есть способы быстрого определения города и страны? Какие то не реляционные базы? Или ещё что-то?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
romy4
@romy4
Exception handler
Адреса выделяются пулами и в принципе можно смело использовать список пулов /24 — это 16 мб всего. которые легко можно вмести в таблицу в памяти. Вычисляете смещение и по смещению берёте индекс страны (стран в мире не больше 255). Так что задача вполне реализуема для быстрого поиска.
В этом случае таблицу можно вообще не хранить в БД (выигрыш как минимум во времени посылки пакетов), а в векторе, тогда получите максимальный выигрыш.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
кэширование, например
Ответ написан
@pudovMaxim
web-developer
Один простой селект в БД не должен сильно нагружать ее, если база правильно спроектирована. IP представлять, например числом и сделать поле индексным( хотя может с IPv6 могут возникнуть трудности, надо проверять).
Также, если позволяет память на серваке, то можно перекинуть эту табличку в оперативку или закешировать любым удобным кешером.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы