DynamoDB - клавиши с несколькими диапазонами - PullRequest
0 голосов
/ 07 марта 2020

Можем ли мы иметь более 2 полей в качестве первичного ключа в DynamoDB.

Или я могу создать локальный вторичный индекс для каждого поля, которым я хочу быть ключом диапазона, и создать запрос с несколькими ключами диапазона одновременно?

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Вы можете иметь только 2 поля в качестве первичного ключа в DynamoDB. Если вам нужно несколько разных ключей диапазона, вы можете создать локальный вторичный индекс для каждого, но вы все равно можете запрашивать только 1 индекс за раз. Вы также можете поставить только 5 LSI на стол.

Какие данные вы пытаетесь смоделировать? Какие шаблоны запросов вам нужно поддерживать?

0 голосов
/ 09 марта 2020

Учитывая специфику, которую вы указали, я считаю, что вам нужен GSI с составным индексом. Ваша таблица будет выглядеть примерно так:

Partition Key        GSI Partition          GSI Sort
ID                   ID                     Type+Timestamp

При этом вы можете запросить GSI с помощью выражения фильтра, например:

#pk = :pk AND begins_with(#sk, :type)

Ваш ExpressionAttributeNames должен отобразить #pk к полю ID и #sk к имени составного поля.

Ваш ExpressionAttributeValues должен будет сопоставить :type со значением, которое вы ищете («Читать» или «Непрочитано» ").

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

...