Допустим, у меня есть эти таблицы / модели:
Product
- id
- last_updated_date
- name
- price
User
- id
- name
WishlistItem
- id
- user_id
- product_id
Таблица Product содержит несколько миллионов записей и обновляется автоматически каждую ночь посредством импорта данных (вставка в новую таблицу, удаление старой). Я в основном имею доступ только для чтения к этой таблице / модели.
Если товар находится в списке пожеланий пользователя и цена снижается, я бы хотел уведомить этого пользователя. Какие методы могут быть использованы для этого?
У меня есть пара идей:
Следите за Product.last_updated_date в модели списка пожеланий и периодически опрашивайте таблицу продукта, чтобы узнать, обновлялся ли он. Это звучит как ужасное / немасштабируемое решение.
Какой-то вид или функция Postgres, которая срабатывает при обновлении таблицы Product? Я новичок в postgres, поэтому я еще не уверен, возможно ли это вообще.
Что-то удивительное, что вы предположите, что я не подумал:)
Любая помощь в правильном направлении очень ценится!
UPDATE:
Одна идея, которая возникла, заключалась в кешировании текущей цены внутри самой записи списка желаний, т.е.
WishlistItem
- id
- user_id
- product_id
- price
... затем, после импорта, я мог сравнить WishlistItem.price с Product.price и уведомить соответствующим образом. Несмотря на то, что он будет работать, этот подход кажется немного расточительным, поскольку каждый WishlistItem для каждого пользователя будет по существу иметь одну и ту же кэшированную копию данных о ценах, и мне придется обновлять каждый список новой ценой, если есть обновление. Я не уверен, что есть способ обойти это.
UPDATE:
В конце концов я решил, что мне, вероятно, следует просто отслеживать все версии данных, чтобы я мог использовать стандартные триггеры обновления. Это также позволяет мне регистрировать все изменения цен, чтобы я мог отслеживать ценовые тренды и т. Д.