#amazon-web-services #database-design #nosql #amazon-dynamodb
#amazon-web-services #database-design #nosql #amazon-dynamodb
Вопрос:
Предположим, что для текущей базы данных в основном 3 таблицы.
Pkey = ключ раздела
Admin
-id (Pkey), имя пользователя, адрес электронной почты, createdAt, updatedAt
Идентификатор баннера (Pkey), isActive, createdAt, заголовок
Новости
-идентификатор (Pkey), createdAt, isActive, заголовок, сообщение
Ни одна из приведенных выше таблиц не имеет отношения к другим таблицам, и в будущем потребуется больше таблиц (я думаю, что большинство из них также не имеют отношения к другим таблицам).
Согласно документу aws
You should maintain as few tables as possible in a DynamoDB application.
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html
Итак, я рассматривал необходимость объединения этих 3 таблиц в одну таблицу.
Должен ли я начать использовать одну таблицу с этого момента или продолжать использовать несколько таблиц для базы данных? При использовании одной таблицы, как мне следует спроектировать схему таблицы?
Комментарии:
1. Моделирование данных NoSQL само по себе может быть предметом изучения. На эту тему написаны целые книги. Чтобы быстро начать работу, я настоятельно рекомендую посмотреть этот вводный доклад о моделировании данных DDB: youtube.com/watch?v=DIQVJqiSUkE
2. Этот вопрос задавался и на него отвечали несколько раз здесь, на SO, но я просто хочу подчеркнуть одну вещь: «приложение» может означать несколько вещей: для достаточно сложных примеров, где дизайн имеет наибольшее значение, у вас может быть служба, которая занимается администрированием и авторизацией, и отдельная служба, которая занимается новостямии, возможно, баннеры: в этом случае наиболее целесообразно использовать отдельные ресурсы для каждой службы
3. Мета-смысл в том, что вы должны стремиться понять обоснование этих рекомендаций, а не слепо следовать им. Как уже говорили другие, с помощью DynamoDB вы хотите оптимизировать свои шаблоны доступа. Начните с этого и спроектируйте соответствующим образом, но не переусердствуйте и не слишком старайтесь вставить квадратный стержень в круглое отверстие
Ответ №1:
DynamoDB — это база данных NoSQL, поэтому вы разрабатываете свою схему специально для выполнения наиболее распространенных и важных запросов как можно быстрее и дешевле. Ваши структуры данных адаптированы к конкретным требованиям ваших бизнес-сценариев использования.
При разработке модели данных для вашей таблицы DynamoDB вам следует начинать с шаблонов доступа к вашим данным, которые, в свою очередь, будут определять связь (или ее отсутствие) между ними.
Два интересных ресурса, которые помогут вам начать работу, — это From SQL to NoSQL и NoSQL Design для DynamoDB, оба являются частью документации разработчика AWS для DynamoDB.
В вашем конкретном примере, исходя из вопросов, на которые вы пытаетесь ответить (например, варианты использования и шаблоны доступа), вы можете либо работать только с ключом раздела, либо, что более вероятно, извлечь выгоду из использования составных ключей сортировки / перегрузки ключей сортировки, как описано в разделе Рекомендации по использованию ключей сортировки для организации данных.
Комментарии:
1. Значит, я могу сохранить дизайн с несколькими таблицами?
2. Я имею в виду, что вы можете использовать только одну таблицу.
3. Можете ли вы также привести пример того, как я создаю свою единую таблицу, используя мою текущую таблицу? Спасибо
4. Я обновил ответ, пожалуйста, имейте в виду, что это всего лишь пример для начала. Как я уже говорил в своем первоначальном ответе, не зная, как вы будете получать доступ к данным, я не могу создать хорошую схему таблицы.
5. Спасибо. Но в чем причина того, что в качестве ключа раздела не используется тип (admin, news), вместо этого используется случайный идентификатор