Должен ли я действительно использовать одну таблицу DynamoDB для всех данных? - PullRequest
2 голосов
/ 27 июня 2019

Документация по лучшей практике DynamoDB содержит следующую строку:

Вы должны поддерживать как можно меньше таблиц в приложении DynamoDB. Для большинства хорошо разработанных приложений требуется только одна таблица.

Это последняя строка, которая смущает меня больше всего.

Возьмите пример приложения для хранения фотографий. Означает ли это, что я должен хранить учетные записи пользователей (идентификатор учетной записи, пароль, адрес электронной почты) и фотографии (идентификатор владельца, местоположение фотографии, метаданные) в одной таблице?

Если это так, я предполагаю, что первичным ключом должен быть идентификатор учетной записи / владельца, а ключом сортировки будет тип объекта (например, account или photo).

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

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Обычно рекомендуется использовать как можно меньше таблиц, и очень часто одну таблицу, если у вас нет веских причин использовать более одной таблицы.Скорее всего, у вас не будет веской причины использовать более одного - за исключением старых привычек.

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

Первичный ключ может стать комбинацией типа «строка» / типа объекта и другого значения, хранящегося в одном поле, то есть «account # 12345» для объекта учетной записи с уникальным идентификатором 12345и 'photo # 67890' для фотообъекта с вашим идентификатором 67890 -

Если вы ищете аккаунт по номеру вашего идентификатора, вы бы запросили префикс аккаунта, а если вы искали фотографию, вы бы добавили префикс «фото».Это очень простой пример - ваш дизайн может отличаться.

Видео, рекомендованное в первом комментарии к вашему вопросу, превосходно - смотрите его со скоростью 0,75 или медленнее и смотрите несколько раз.

1 голос
/ 27 июня 2019

Краткий ответ - да. Но то, как это было бы спроектировано, очень сильно зависело бы от того, как ваше приложение взаимодействует с базой данных.

Я настоятельно рекомендую всем, кто все еще не понимает, как создавать таблицы DynamoDB / NoSQL, смотрит это видео из re: Invent.

...