Я давно работал с реляционными базами данных, а сейчас собираюсь работать с DynamoDB. После работы с реляционными базами данных я пытаюсь спроектировать некоторые из наших текущих таблиц SQL в DynamoDB. Особенно, принимая решение о разделении и сортировке ключей. Я попытаюсь объяснить на примере:
Текущие таблицы:
Student: StudentId(PK), Email, First name, Last name, Password, SchoolId(FK)
School: SchoolId(PK), Name, Description
Я думал объединить эти таблицы в DynamoDB и использовать SchoolId в качестве ключа раздела, StudentId в качестве ключа сортировки. Тем не менее, я видел несколько похожих примеров использования StudentId в качестве ключа раздела.
И тогда я понял, что мы используем «имя пользователя» в каждой функции входа в систему, поэтому приложение будет часто запрашивать «имя пользователя» (иногда с паролем или токеном аутентификации). Эта ситуация заставляет меня задуматься; SchoolId в качестве ключа раздела и имя пользователя в качестве ключа сортировки.
Мне нужны некоторые идеи о том, что было бы наилучшей практикой в этом случае, и некоторые предложения, чтобы дать мне лучшее понимание концепций NoSQL и DynamoDb.