Dynamodb дизайн рекомендации - PullRequest
1 голос
/ 23 марта 2019

Вариант использования: Компания X и Компания Y публикуют информацию о продукте.Поскольку бывшая Компания X публикует информацию о продукте, такую ​​как Продукт X, Продукт Y, а Компания Y публикует информацию о продукте Z и K.

Потребителю нравится Продукт X от Компании X и Продукт Z от Компании K. На основании потребительских предпочтений нам нужноначать показ продуктов, которые публикуются компаниями X и Y. Когда клиент переходит на определенный экран в мобильном приложении, он должен видеть все понравившиеся продукты.В моем случае, потребитель должен увидеть Продукт X и Продукт Z.

Вопрос: Для дизайна DynamoDB, Вы бы порекомендовали сохранить продукты, которые нравятся клиентам, в одной таблице, а опубликованные продукты от Компании x и Компании Y в другой?Таблица.Затем программно получить записи из двух таблиц и отфильтровать только те записи, которые понравились клиенту, и отобразить их?

Правильно ли вышеприведенное или у вас есть другие рекомендации по проектированию БД для вышеупомянутого варианта использования?

Изменения: обновленный вариант использования

Розничный продавец X публикует рекламную информацию для двух продуктов.Например: продукт X1 с предложением: купи 2, получи один бесплатно, и эта реклама будет действовать в течение 5 дней, начиная с 23.03.2009 г. до 03/28/2019

Продукт X2 с предложением: купи 2, получи один бесплатнои эта реклама длится 5 дней, начиная с 23.03.2009 г. по 01.01.2017 г.

Потребитель А ранее подписался или понравился продукт X1 от Retailer X Advanced 15/03/2019.Действует с 03/23. Потребитель А должен видеть рекламную информацию (Продукт X1: купи 2, получи один бесплатно), опубликованную продавцом X до 03/28.

Потребитель B подписался или понравился Продукт X2 от Продавца X 03 марта./ 25/2019.Действует с 25.03.209. Потребитель B должен видеть рекламную информацию (продукт X1 с предложением: купи 2, получи один бесплатно), опубликованную продавцом X до 04.01.

1 Ответ

1 голос
/ 24 марта 2019

Ниже приведен один подход, который вы можете предпринять

| pk    |   sk                     |   GSI1
| user1 |   Likes#CompX#ProdA      |  CompX#ProdA |DateOfLiking:123 | ... some other ProductMetadata
| user1 |   Likes#CompY#ProdC      |  CompY#ProdC |DateOfLiking:123 | ... some other ProductMetadata
| compX |   Products#ProdA         |              | price:12        | ... some other metadata
| compX |   Products#ProdB         |              | price:14        | ... some other metadata
| compY |   Products#ProdC         |              | price:15        | ... some other metadata
| compY |   Products#ProdD         |              | price:19        | ... some other metadata

pk is sk of GSI1

Для поиска всего товара от компании X вы можете сделать

Select * where pk=compC and sk startswith Products

Для поиска всех лайков по user1 вы можете сделать

Select * where pk=user1 and sk startswith Likes

бонусный вариант использования (и оставленный для дальнейшего размышления)

Для поиска того, кому всем понравился товар

 Select * from GSI1 where pk=CompX#ProdA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...