gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как архитектурно решить проблему нескольких источников стран-городов-индексов?

Имеется источник городов и доступных почтовых индексов в них
Но прямого доступа вида "скачать все" у источника нету - есть только возможность отправить запрос из "более чем двух символов", чтобы по индексу или части названия города + коду страны в системе вытащить результаты, скажем тысячу штук

Список городов также зависит от страны, а стран вообще около 400 штук (и в каждой по сотне другой городов, и для каждого города пара тысяч индексов)
Список может меняться, поскольку геополитическая обстановка нынче нестабильная, один город пропал, появился новый, страны меняются, в конце концов сервис просто может перестать обслуживать определенные города или индексы в них.

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

Имеет ли смысл какое-нибудь решение по кешированию или лучше все оставить вида:
- вводишь две буквы города
- аякс запрос на скрипт по keyup
- скрипт обычным запросом выдрал данные с удаленного сервака
- данные отобразились

Минус только в том, что запрос на аякс занимает ну четверть секунды, потом запрос на удаленный сервак, плюс его обработка еще полсекунды - в общем и целом секунду на постоянный дроч запросами удаленного сервака, даже учитывая, что можно сбить спесь пользователя установкой таймаутов и отображением анимации типа "подождите, идет запрос".

То есть я думаю над тем, чтобы ежедневно делать накопительный кэш из запрошенных городов, чтобы экономить запрос, или я таким образом кроме геморроя ничего себе не наэкономлю?

Вот еще сюрприз - что завтра подключается другой такой же сервис, у которого своя собственная база городов и индексов, и коды (или даже названия) городов могут отличаться наличием затупов, верхних апострофов, дефисов, пробелов и тд - допустим даже общий код, тем не менее связка из кучи источников да на кэш помножить - голова уже вскипает.

Какой лучший способ разрулить? Кешировать результаты запросов в общую таблицу, и вешать кэш например на сутки? А как наполнять такую базу? Или самое лучшее решение это оставить все как есть - пусть себе аякситься?
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Кэшируйте.
Возможно лучше даже не кэшировать, а сделать свою БД, куда информация будет попадать от запросов (если в базе отсутствует). В этом случае нужно будет сделать автономный сервис, который раз в день, например, будет обновлять информацию в базе.
В случае своей БД при падении источника вы все равно останетесь в работоспособном состояни.
Ответ написан
Ваш ответ на вопрос

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

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