Как определить ключ в таблице DynamoDB, если большинство столбцов составляют уникальный элемент - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть элемент DDB, который выглядит следующим образом

Attribute 1  

Attribute 2

Attribute 3

Attribute 4

Attribute 5

Attribute 6

Attribute 7

Attribute 8

Attribute 9

Attribute 10

Attribute 11

Атрибуты 1 - 9 делают уникальный элемент в моей таблице. Мои большинство запросов начнутся с Атрибутов 1-3

I was thinking of 

Hash Key = Attribute1_Attribute2_Attribute3

Range Key = Attribute3_Attribute4_Attribute5_Attribute6_Attribute7_Attribute8

Но тогда, когда я их реализую, все выглядит ужасно. Слишком много повторений одних и тех же атрибутов в разных классах с конвертерами как для ha sh, так и для ключа диапазона. Мне нужны все столбцы для создания дополнительных GSI на атрибутах 3,5 и 7.

2nd option 
Hash Key = Attribute1_Attribute2_Attribute3

Range Key = UUID

Во втором варианте я могу делать запросы на основе ключей ha sh и добавлять GSI для других запросов.

3rd option 
Hash Key = UUID

Range Key = No range key

Добавьте столбец для составного атрибута Attribute1_Attribute2_Attribute3 и создайте GSI для всех запросов.

Какова наилучшая практика в этом случае?

1 Ответ

0 голосов
/ 03 апреля 2020

Наилучшим вариантом является ключ Ha sh, составленный следующим образом:

Attribute1_Attribute2_Attribute3

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


Если Attribute1_Attribute2_Attribute3 не уникален, тогда используйте uuid как га sh ключ и установить GSI на всех остальных.

...