Как архитектурно решить проблему нескольких источников стран-городов-индексов? Имеется источник городов и доступных почтовых индексов в них
Но прямого доступа вида "скачать все" у источника нету - есть только возможность отправить запрос из "более чем двух символов", чтобы по индексу или части названия города + коду страны в системе вытащить результаты, скажем тысячу штук
Список городов также зависит от страны, а стран вообще около 400 штук (и в каждой по сотне другой городов, и для каждого города пара тысяч индексов)
Список может меняться, поскольку геополитическая обстановка нынче нестабильная, один город пропал, появился новый, страны меняются, в конце концов сервис просто может перестать обслуживать определенные города или индексы в них.
Частота, с которой данные меняются неизвестна, по сообщениям техподдержки - это непредсказуемо - когда раз в неделю, когда раз в три месяца, когда каждый день.
Имеет ли смысл какое-нибудь решение по кешированию или лучше все оставить вида:
- вводишь две буквы города
- аякс запрос на скрипт по keyup
- скрипт обычным запросом выдрал данные с удаленного сервака
- данные отобразились
Минус только в том, что запрос на аякс занимает ну четверть секунды, потом запрос на удаленный сервак, плюс его обработка еще полсекунды - в общем и целом секунду на постоянный дроч запросами удаленного сервака, даже учитывая, что можно сбить спесь пользователя установкой таймаутов и отображением анимации типа "подождите, идет запрос".
То есть я думаю над тем, чтобы ежедневно делать накопительный кэш из запрошенных городов, чтобы экономить запрос, или я таким образом кроме геморроя ничего себе не наэкономлю?
Вот еще сюрприз - что завтра подключается другой такой же сервис, у которого своя собственная база городов и индексов, и коды (или даже названия) городов могут отличаться наличием затупов, верхних апострофов, дефисов, пробелов и тд - допустим даже общий код, тем не менее связка из кучи источников да на кэш помножить - голова уже вскипает.
Какой лучший способ разрулить? Кешировать результаты запросов в общую таблицу, и вешать кэш например на сутки? А как наполнять такую базу? Или самое лучшее решение это оставить все как есть - пусть себе аякситься?

21 Авг 2019 в 06:29
266 +1
0
Ответы
1

Для решения проблемы с несколькими источниками данных о городах и индексах можно использовать следующий подход:

Кэширование данных: создать накопительный кэш, куда будут сохраняться результаты запросов к удаленному серверу. Кэш можно обновлять ежедневно или по мере обновления данных на удаленном сервере. Это позволит экономить время на запросы и уменьшить нагрузку на сервер.

Объединение данных: если подключается еще один сервис с данными о городах и индексах, можно объединить данные из обоих источников в одну общую таблицу. Это позволит унифицировать данные и упростить их обработку.

Синхронизация данных: для автоматической синхронизации данных с удаленными серверами можно использовать специальные скрипты или сервисы. Например, можно написать скрипт, который будет периодически обновлять данные в кэше на основе данных с удаленных серверов.

Обработка данных: перед сохранением данных в кэш их можно стандартизировать, убрав лишние символы или приведя к общему формату. Это позволит избежать проблем с различными форматами данных от разных источников.

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

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

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир