2016-09-24 2 views
1

Я создаю таблицу DynamoDB, в которой хранятся заказы с электронной коммерции. Когда пользователь размещает заказ, он хранится в таблице DynamoDB. Эта таблица имеет первичный ключ (order_id) и буксирует глобальный вторичный индекс: (email, SSN).Моделирование таблицы заказов электронной торговли - DynamoDB + SNS + SQS

Хотелось бы запросить и статус заказа. Так что я хотел бы получить все заказы на определенный статус в определенную дату. Каков наилучший способ моделирования такого поведения?

Сделайте еще один глобальный вторичный индекс с ключом сортировки?

ответ

1

Да, вам нужно добавить еще один GSI.

Это, однако, будет стоить вам денег. Один вопрос, который вы можете задать себе, действительно ли вам нужны поиски в режиме реального времени/с низкой задержкой?

Если нет, вы можете рассмотреть возможность копирования данных DynamoDB в хранилище данных, например Redshift, и запускать на нем свои запросы. Это:

  • Может быть более экономичным, в зависимости от вашего приложения.
  • Позволит вам поддерживать более широкий спектр шаблонов запросов в будущем. (Помните, что вы можете иметь только 5 GSI в DynamoDB, и вы уже использовали 2 из них)