Дизайн схемы DynamoDB - Модель заказа

Я моделирую простое приложение и хочу использовать DynamoDB в качестве хранилища. Мне нужно сохранить полный заказ с веб-сайта электронной коммерции. Можно запросить, используя order_id и адрес электронной почты пользователя.

Глядя на документацию Dynamodb, я думаю, что лучший подход - использовать order_id (большинство моих запросов будет выполняться по этому индексу) в качестве моего первичного ключа (ключ раздела).

А как насчет электронной почты? Мне нужен вторичный индекс, но я немного потерялся. Какой подход лучше?


person p.magalhaes    schedule 08.08.2016    source источник
comment
что вы имеете в виду Какой подход лучше? . адрес электронной почты пользователя является хорошим вторичным индексом (если вам нужно получить определенных пользователей, которые заказали order_id)   -  person Eyal Ch    schedule 08.08.2016


Ответы (1)


Похоже, что глобальный вторичный индекс для атрибута email решит проблему:

  • когда вам нужно выполнить поиск по order_id, вы используете операцию GetItem и указываете этот order_id в качестве первичного ключа

  • когда вам нужно выполнить поиск по email, вы используете Query API в GSI и указываете email в качестве ключа раздела.

GSI имеет независимые единицы емкости чтения - поскольку вы сказали, что большую часть времени будете использовать order_id, вы можете выделить больше RCU для основной таблицы, чем для GSI.

Ссылка:

person Bruno Reis    schedule 10.08.2016