Хранение данных 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?
2 ответа
Имеет ли смысл хранить эту информацию в локальной базе данных
Да. На самом деле это звучит в точности как типичная установка кеширования. Я бы порекомендовал изучить Redis вместо того, чтобы использовать для этого реляционную базу данных.
как тогда автоматически запускать эту функцию каждые 1-5 минут в фоновом режиме
Вероятно, работа Cron. Вам нужно будет предоставить больше информации, например, о том, где работает ваше приложение (AWS EC2 или где-то еще?) И работает ли оно в Linux или Windows, прежде чем я смогу дать более подробную рекомендацию.
Это зависит от вашей загрузки и попаданий в кеш - например, если у вас есть только 100 посетителей в день, которые посещают несколько страниц продукта - нет необходимости обновлять более 1000 позиций каждую минуту, может даже не быть необходимости хранить что-либо.
Но если ваши посетители будут часто просматривать одни и те же страницы - кэширование будет полезно.
Тогда вот разные стратегии:
- предварительно заполненный кеш (тот, который вы упомянули) - заберите все данные заранее и продолжайте обновлять с помощью задания cron или выделенного демона. Это немного ускоряет загрузку страницы для первого посетителя, но является наиболее дорогостоящим.
- Кэширование по требованию - начните с пустого кеша и извлекайте данные только по первому запросу (или когда запрос поступает для обслуживания данных с истекшим сроком действия), первый запрос будет медленнее, но это гарантирует, что будут запрашиваться и кэшироваться только необходимые данные.
- комбинации выше: например, выборка по первому запросу, но затем обновление в фоновом режиме