Хранение данных Amazon API в локальной базе данных

Я работаю над сайтом, который получает данные о ценах на продукты с Amazon.com и Walmart. Я предполагаю, что в будущем это также будет извлекать данные из других мест.

Моей первой идеей было получить данные напрямую из Amazon (используя их рекламный API для продуктов), а затем отобразить данные на сайте для каждого посетителя, который попал на страницу. Это не плохая идея, если я не получу много цен на продукты (или если количество посетителей сайта низкое). Я думаю, что я столкнусь с проблемами, как только сайт будет загружен, и если я увеличу количество продуктов, цену которых я хочу получить.

Используя API Amazon и Walmart, я смог сделать успешные вызовы API REST и проанализировать возвращенный XML, чтобы получить необходимую мне информацию.

Имеет ли смысл хранить эту информацию в локальной базе данных, обновлять ее, скажем, каждые 1-5 минут, а затем заставлять посетителей сайта извлекать информацию о ценах из моей локальной базы данных вместо того, чтобы делать вызов API с Amazon и Walmart?

Если я пойду по этому пути и создам функцию, которая использует API Amazon и Walmart для извлечения ценовых данных, как я могу автоматически запускать эту функцию каждые 1–5 минут в фоновом режиме, 24/7/365?

3

Решение

Имеет ли смысл хранить эту информацию в локальной базе данных

Да. На самом деле это звучит в точности как типичная настройка кеширования. Я бы порекомендовал изучить Redis вместо использования реляционной базы данных для этого.

как мне затем автоматически запускать эту функцию каждые 1-5 минут в
фон

Вероятно, Cron работа. Вам нужно будет предоставить больше информации, например, о том, где работает ваше приложение (AWS EC2 или где-то еще?) И работает ли оно в Linux или Windows, прежде чем я смогу дать более подробную рекомендацию.

2

Другие решения

Это зависит от вашей загрузки и попаданий в кеш — например, если у вас есть только 100 посетителей в день, которые посещают несколько страниц продукта — не нужно обновлять более 1000 позиций каждую минуту, может даже не быть необходимости хранить что-либо.

Но если ваши посетители будут часто просматривать одни и те же страницы — кэширование будет полезно.

Тогда вот разные стратегии:

  • предварительно заполненный кеш (тот, который вы упомянули) — заберите все данные заранее и продолжайте обновлять с помощью задания cron или выделенного демона.
    Это немного ускоряет загрузку страницы для первого посетителя, но является наиболее дорогостоящим.
  • Кэширование по требованию — начните с пустого кеша и извлекайте данные только при первом запросе (или когда запрос поступает для обслуживания данных с истекшим сроком), первый запрос будет медленнее, но это гарантирует, что будут запрашиваться и кэшироваться только необходимые данные.
  • комбинации выше: например, выборка по первому запросу, но затем обновление в фоновом режиме
1

По вопросам рекламы [email protected]