【问题标题】:Amazon dynamodb record size limit work aroundAmazon dynamodb 记录大小限制解决方法
【发布时间】:2019-07-06 16:23:41
【问题描述】:

我正在开发一个应用程序,将人们回答的问题存储在 nosql 数据库中。我正在使用 AWS dynamodb,但记录大小限制为 400 kb。我将如何存储超过 400kb 的数据。最好在当前记录中引用下一条记录吗?如果有人有任何其他想法或想法,那就太好了。

【问题讨论】:

  • 您要在 Dynamodb 中保存什么样的数据?我的意思是您是要保留任何二进制数据(即文件附件)还是通常的字符串、数字数据?
  • 现在全部都是字符串。我基本上是在开发一个调查网站。所以我不知道会有多少问题。

标签: amazon-web-services amazon-dynamodb nosql


【解决方案1】:

您可以将每个答案存储为单个项目,而不是将用户的所有答案存储在单个项目中。例如,假设问题属于调查,那么您的表架构如下所示:

SurveyId(哈希键) |用户(哈希键) |问题(范围键) |回答。

因此,如果调查包含用户的 n 个答案,那么 dynamoDb 表中将有 n 个项目。要查找用户的所有答案列表,我们可以查询 hashkey(surveyId + User)。 here 讨论了一个类似的用例。

根据我们超过最大记录大小的频率,我们可以将大型项目存储到 s3。

问候 迪内什·索兰基

【讨论】:

  • 不会花费更长的时间来提取所有问题和答案。我在想surveyID |用户名 |阵列的问题和答案。如果超过记录限制,则将其拆分为 n 条记录,并引用下一个节点。
  • DynamoDb 将具有相同 HashKey 的行存储在同一分区上,因此返回查询结果只涉及单个分区。此外,由于您不需要过滤结果,因此不必担心性能问题,此处讨论了查询操作的性能docs.aws.amazon.com/amazondynamodb/latest/developerguide/…。拆分为 n 条记录并保持操作之间的一致性/原子性看起来不是一个简单的问题。您将如何衡量并决定拆分?您将添加哪些额外信息来传达额外的行。
【解决方案2】:

目前的最佳做法在这里:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-use-s3-too.html

他们有两个建议:

  1. 压缩数据并使用二进制数据类型
  2. 将数据存储在 S3 中

鉴于 #1 仍然会让您在某些时候遇到数据输入限制,我建议 #2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    相关资源
    最近更新 更多