DynamoDB - клавиши с несколькими диапазонами

9

Можно ли иметь несколько полей в качестве ключа диапазона?

Скажем, у меня есть таблица, в которой каждая строка однозначно определяется <A,B,C>

 -------------------------------
 A   |   B   |  C  |  D   |  E  |
 -------------------------------

где Aпервичный hashключ

и я хочу Bи Cбыть первичными rangeключами.

Как я могу иметь более 2 полей в качестве первичного ключа в DynamoDB?

user7
источник

Ответы:

6

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

В качестве обходного пути вы можете создать local secondary indexдля каждого поля, которое вы хотите, чтобы ключ диапазона. Но вы не сможете создавать запросы с несколькими ключами диапазона одновременно, потому что DynamoDB может использовать только один индекс за раз.

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

Василий Сочинский
источник
8

Поместите копию B и C в поле диапазона (как дополнительный столбец) и сделайте так, чтобы ваш ключ диапазона был похож на «B_C», и вы все равно можете иметь отдельные столбцы для B и C, если вам нужно.

Джефф М
источник
Можно ли использовать этот подход в качестве решения этой проблемы ?
Бировский