DynamoDB: получить одну запись с выдачей списка VS получить несколько записей - PullRequest
1 голос
/ 23 апреля 2019

Мне было интересно, есть ли существенная разница в производительности для операции get в следующих двух сценариях:

  1. Каждая запись идентифицируется одним ключевым полем и содержит список / набор объектов, представляющих вложенные записи. Операция get возвращает одну запись для одного ключа, и эта запись содержит список с несколькими вложенными записями.
  2. Вместо того, чтобы иметь список вложенных записей, каждая из них идентифицируется составным ключом и вставляется как обычная запись. Затем операция get возвращает несколько записей для одного ключа.

подвопрос . Если мой контекст выглядит следующим образом, какой подход, вероятно, будет более эффективным для меня? i) Мои предметы идентифицируются первичным ключом и вторичным ключом; ii) каждый элемент вставляется индивидуально каждый раз; iii) единственный тип операции поиска состоит в получении всех записей для первичного ключа; iv) будет гораздо больше поисковых операций, чем написание.

1 Ответ

0 голосов
/ 23 апреля 2019

Если вы всегда получаете все вложенные записи для записи, то на стороне чтения нет никакой разницы.При однократном подходе вы просто получите предмет.Для нескольких вложенных записей вы будете использовать запрос, чтобы возвратить все их сразу.

Однако, если вы, например, постоянно добавляете новые вложенные записи и вам нужно только прочитать подмножество (например, самое новое илизаписи из диапазона дат) вложенные записи могут быть более эффективными для чтения.

Для записей, в зависимости от количества вложенных записей, использующих вложенные записи, также может быть более эффективная запись.Как только общий размер вложенных записей превысит 1 КБ, вам будет удобнее написать их по отдельности.

Вызов API Get обойдется вам в 0,5 RCU за 4 КБ в зависимости от размера элемента.

ВызовAPI запросов обходится вам в 0,5 RCU за чтение 4k из таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...