【问题标题】:S3 or DynamoDb for user storage?S3 或 DynamoDb 用于用户存储?
【发布时间】:2017-08-29 22:09:36
【问题描述】:

我想在无服务器架构中使用 AWS Lambda 和 Cognito,并且很好奇人们将 S3 存储桶用于用户数据存储而不是 DynamoDb 之类的想法?有什么优点/缺点?

【问题讨论】:

  • 对于少量数据,也许您可​​以查看 Cognito 数据集? Cognito 允许您将最终用户数据保存在包含键值对的数据集中。数据与 Amazon Cognito 身份相关联,并且可以同步并跨登录名和设备访问。它还具有离线支持。

标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-cognito serverless-architecture


【解决方案1】:

您可以根据不同类型的用户数据和查询需求使用其中一种或两种。此外,您还可以将基本用户配置文件数据保存在 Cognito Sync 商店中。

AWS S3

  • 它是一项完全托管的文件存储和检索服务。
  • 非常适合存储用户资料图片、文件上传等。
  • 您可以将用户属性存储在一个 JSON 文件或多个文件中。挑战之一是您需要检索整个文件,甚至读取单个属性或保存整个文件以保存单个属性。
  • 需要建立文件名约定以直接查找文件以更快地检索或列出文件,并且读取每个文件以查找内部内容的性能成本很高。
  • 与 Dynamodb 相比,这将是成本明智且更便宜的选择。
  • 不适合存储会影响应用程序性能的动态变化的用户数据。

AWS Dynamodb

  • 它是一个完全托管的 NOSQL 数据库
  • 建议存储用户属性以便快速查询、更新和检索。
  • 内置查询支持和条件更新。
  • 可以进行部分更新。
  • 适用于需要查询多个用户并进行更新的情况。
  • 通常比 S3 更昂贵。

通过将文件存储在 S3 和文件元数据中并在 Dynamodb 中频繁查询属性以实现快速查询,这是一种将它们一起使用以获得最佳成本和性能的常见模式。您还可以设置事件驱动模式以根据 S3 的变化更新 Dynamodb。

【讨论】:

    【解决方案2】:

    您想快速索引、查询和更新数据(DynamoDB)吗?

    或者您只是想将其存储在一个平面文件中,该文件在更新时必须被完全覆盖,并且无法轻松查询其内容 (S3)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多