Я хотел бы использовать AWS Lambda и Cognito в бессерверной архитектуре, и мне было любопытно, что люди думают об использовании корзины S3 для хранилища пользовательских данных, а не чего-то вроде DynamoDb? Какие будут плюсы/минусы?
S3 или DynamoDb для пользовательского хранилища?
Ответы (2)
Вы можете использовать один из них или оба в зависимости от различных типов пользовательских данных и запросов. Кроме того, вы также можете хранить основные данные профиля пользователя в магазине Cognito Sync.
АВС S3
- Это полностью управляемая служба хранения и поиска файлов.
- Очень подходит для хранения изображения профиля пользователя, загрузки файлов и т. д.
- Вы можете хранить пользовательские атрибуты в файле JSON или в нескольких файлах. Одна из проблем заключается в том, что вам нужно получить весь файл даже для чтения одного атрибута или сохранить весь файл, чтобы сохранить один атрибут.
- Необходимо создать соглашения об именах файлов, чтобы найти файлы напрямую для более быстрого поиска или перечисления файлов, а чтение каждого файла для поиска внутреннего содержимого требует больших затрат с точки зрения производительности.
- С точки зрения стоимости это будет более дешевый вариант по сравнению с Dynamodb.
- Не подходит для хранения динамически изменяющихся пользовательских данных, которые могут повлиять на производительность приложения.
AWS Dynamodb
- Это полностью управляемая база данных NOSQL.
- Рекомендуется хранить пользовательские атрибуты для быстрых запросов, обновлений и поиска.
- Имеет встроенную поддержку запросов и условные обновления.
- Возможно делать частичные обновления.
- Подходит, если вам нужно запросить несколько пользователей и обновить.
- Как правило, дороже, чем S3.
Их обычно используют вместе, чтобы получить максимальную отдачу от стоимости и производительности, сохраняя файлы в S3 и метаданные файлов и часто запрашивая атрибуты в Dynamodb для быстрых запросов. Также вы можете настроить управляемые событиями шаблоны для обновления Dynamodb при изменениях в S3.
Вы хотите быстро индексировать, запрашивать и обновлять данные (DynamoDB)?
Или вы просто хотите сохранить его в плоском файле, который должен быть полностью перезаписан всякий раз, когда он обновляется, и его содержимое не может быть легко запрошено (S3)?