我想在无服务器架构中使用AWS Lambda和Cognito,并且好奇的是人们想要将S3存储桶用于用户数据存储而不是DynamoDb?什么是利弊?
您可以根据不同类型的用户数据和查询需求使用其中一个或两个 . 此外,您还可以在Cognito Sync商店中保留基本用户配置文件数据 .
AWS S3
它是一个完全托管的文件存储和检索服务 .
非常适合存储用户 Profiles 图片,文件上传等 .
您可以将用户属性存储在JSON文件或多个文件中 . 其中一个挑战是您需要检索整个文件,甚至读取单个属性或保存整个文件以保存单个属性 .
需要构建文件名约定以直接查找文件以便更快地检索或列出文件,并且读取每个文件以查找内部内容的性能成本很高 .
与Dynamodb相比,这将是更便宜的选择 .
不适合存储可能影响应用程序性能的动态更改的用户数据 .
AWS Dynamodb
它是一个完全管理的NOSQL数据库
建议存储用户属性以进行快速查询,更新和检索 .
内置了查询支持和条件更新 .
可以进行部分更新 .
适用于您需要查询多个用户并进行更新的情况 .
一般比S3贵 .
通过在S3和文件元数据中存储文件并经常在Dynamodb中查询属性以进行快速查询,将它们结合使用以获得最佳的成本和性能是一种常见模式 . 您还可以设置事件驱动模式,以便在S3中进行更改时更新Dynamodb .
您想快速索引,查询和更新数据(DynamoDB)吗?
或者你只是想将它存储在一个平面文件中,每当它被更新时都必须被完全覆盖,并且不容易被查询其内容(S3)?
2 回答
您可以根据不同类型的用户数据和查询需求使用其中一个或两个 . 此外,您还可以在Cognito Sync商店中保留基本用户配置文件数据 .
AWS S3
它是一个完全托管的文件存储和检索服务 .
非常适合存储用户 Profiles 图片,文件上传等 .
您可以将用户属性存储在JSON文件或多个文件中 . 其中一个挑战是您需要检索整个文件,甚至读取单个属性或保存整个文件以保存单个属性 .
需要构建文件名约定以直接查找文件以便更快地检索或列出文件,并且读取每个文件以查找内部内容的性能成本很高 .
与Dynamodb相比,这将是更便宜的选择 .
不适合存储可能影响应用程序性能的动态更改的用户数据 .
AWS Dynamodb
它是一个完全管理的NOSQL数据库
建议存储用户属性以进行快速查询,更新和检索 .
内置了查询支持和条件更新 .
可以进行部分更新 .
适用于您需要查询多个用户并进行更新的情况 .
一般比S3贵 .
通过在S3和文件元数据中存储文件并经常在Dynamodb中查询属性以进行快速查询,将它们结合使用以获得最佳的成本和性能是一种常见模式 . 您还可以设置事件驱动模式,以便在S3中进行更改时更新Dynamodb .
您想快速索引,查询和更新数据(DynamoDB)吗?
或者你只是想将它存储在一个平面文件中,每当它被更新时都必须被完全覆盖,并且不容易被查询其内容(S3)?