Я работаю над сайтом, который получает данные о ценах на продукты с Amazon.com и Walmart. Я предполагаю, что в будущем это также будет извлекать данные из других мест.
Моей первой идеей было получить данные напрямую из Amazon (используя их рекламный API для продуктов), а затем отобразить данные на сайте для каждого посетителя, который попал на страницу. Это не плохая идея, если я не получу много цен на продукты (или если количество посетителей сайта низкое). Я думаю, что я столкнусь с проблемами, как только сайт будет загружен, и если я увеличу количество продуктов, цену которых я хочу получить.
Используя API Amazon и Walmart, я смог сделать успешные вызовы API REST и проанализировать возвращенный XML, чтобы получить необходимую мне информацию.
Имеет ли смысл хранить эту информацию в локальной базе данных, обновлять ее, скажем, каждые 1-5 минут, а затем заставлять посетителей сайта извлекать информацию о ценах из моей локальной базы данных вместо того, чтобы делать вызов API с Amazon и Walmart?
Если я пойду по этому пути и создам функцию, которая использует API Amazon и Walmart для извлечения ценовых данных, как я могу автоматически запускать эту функцию каждые 1–5 минут в фоновом режиме, 24/7/365?
Имеет ли смысл хранить эту информацию в локальной базе данных
Да. На самом деле это звучит в точности как типичная настройка кеширования. Я бы порекомендовал изучить Redis вместо использования реляционной базы данных для этого.
как мне затем автоматически запускать эту функцию каждые 1-5 минут в
фон
Вероятно, Cron работа. Вам нужно будет предоставить больше информации, например, о том, где работает ваше приложение (AWS EC2 или где-то еще?) И работает ли оно в Linux или Windows, прежде чем я смогу дать более подробную рекомендацию.
Это зависит от вашей загрузки и попаданий в кеш — например, если у вас есть только 100 посетителей в день, которые посещают несколько страниц продукта — не нужно обновлять более 1000 позиций каждую минуту, может даже не быть необходимости хранить что-либо.
Но если ваши посетители будут часто просматривать одни и те же страницы — кэширование будет полезно.
Тогда вот разные стратегии: