의 내가이 테이블/모델을 가지고 있다고 가정 해 봅시다 :사용자의 위시리스트에있는 제품의 가격 하락을 추적하는 방법?
Product
- id
- last_updated_date
- name
- price
User
- id
- name
WishlistItem
- id
- user_id
- product_id
제품 테이블은 몇 백만 레코드가와 (예전를 삭제, 새 테이블에 삽입) 데이터 가져 오기를 통해 매일 밤마다 자동으로 업데이트되고있다. 기본적으로 해당 테이블/모델에 대한 읽기 전용 액세스 권한이 있습니다.
제품이 사용자 위시리스트에 있고 가격이 떨어지는 경우 해당 사용자에게 알릴 수 있기를 바랍니다. 이를 위해 어떤 방법을 사용할 수 있습니까?
나는 몇 가지 아이디어가 다음 Product.last_updated_date의
보관할 트랙 위시리스트 모델을하고 주기적으로 업데이트되어 있는지 확인하기 위해 제품 테이블을 폴링. 이것은 끔찍한/확장 불가능한 솔루션처럼 들립니다.
Product 테이블이 업데이트 될 때 트리거되는 Postgres보기 또는 기능의 일종입니까? 나는 포스트 그레스에 익숙하지 않기 때문에 이것이 가능한지 확실하지 않다.
당신은 내가 :)
생각하지 않은 올바른 방향으로 어떤 도움을 주시면 더 좋구요하도록 제안합니다 것을 놀라운 것!
업데이트 : 위시리스트에 항목 자체 내부의 현재 가격을 캐싱하고 와서 하나의 아이디어, 즉 :
WishlistItem
- id
- user_id
- product_id
- price
... 다음, 가져 오기 후, 나는 비교할 수 WishlistItem.price Product.price로 변경하고 그에 따라 알립니다. 그것은 작동하지만 모든 사용자에 대한 모든 WishlistItem은 본질적으로 가격 데이터의 동일한 캐시 된 복사본을 가지므로 업데이트가있는 경우 모든 목록을 새 가격으로 업데이트해야하기 때문에이 접근 방식은 다소 낭비가되는 것 같습니다. 그래도 주위에 방법이 있는지 모르겠습니다.
UPDATE : 나는 업데이트를 트리거 표준 사용할 수 있도록 내가 아마 데이터의 모든 버전을 추적해야했다 결국 . 또한 가격 변동 추이를 추적 할 수 있도록 모든 가격 변경 기록을 남길 수 있습니다.
귀하의 업데이 트가 아래 나의 제안에 따라 가격이 비정규 화되었습니다. 당신이 당신의 제품 표를 대체하기 때문에 당신은 다른 테이블에 당신의 가격을 기록해야합니다. 알림은 사용자가 말한 것처럼 위시리스트 테이블을 업데이트하거나, 알림 테이블을 가지고 있으며 사용자/제품별로 하나의 알림 만 허용하는 등의 다른 해결책이 있습니다 (단순히 위시리스트의 ID를 추가하고 고유하게 만들기 만하면됩니다) . – Teson