Я выполняю упражнение, используя DynamoDB, чтобы смоделировать отношения многие ко многим. Мне нужно разрешить много-много отношений между постами и тегами. В каждом сообщении может быть много тегов, а в каждом теге может быть много сообщений.
У меня есть первичный ключ на id
и первичный ключ сортировки на type
, а затем еще один глобальный индекс на id
и data
, я снова добавил еще один глобальный индекс на id
и type
, но я думаю, что это излишне.
Вот что у меня есть.
id(Partition key) type(Sort Key) target data
------------- ---------- ------ ------
1 post 1 cool post
tag tag tag n/a
1 tag tag orange
---------------------------------------------
---- inserting another tag will overwrite ---
---------------------------------------------
1 tag tag green
Я беру совет из этого удивительного разговора https://www.youtube.com/watch?v=jzeKPKpucS0 и эти не очень удивительные документы https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html
Проблема, с которой я столкнулся, заключается в том, что если я попытаюсь добавить еще один тег с тегом id
"1" и type
, он перезапишет существующий тег, поскольку у него будет тот же составной ключ. Что мне здесь не хватает? Кажется, что предложение состоит в том, чтобы сделать первичный ключ и ключ сортировки id
и type
. Должен ли мой тип быть больше похож на «tag # orange»? В этом случае я мог бы поместить глобальный индекс на target
с ключом сортировки на тип. Таким образом, я мог получить все сообщения с определенным тегом, выполнив запрос target = "tag", и тип начинается с "tag".
Просто ищите несколько советов по обработке такого рода данных списка смежности с Динамо, поскольку это кажется очень интересным. Спасибо!