【问题标题】:Proper partition key in AWS DynamoDB tableAWS DynamoDB 表中的正确分区键
【发布时间】:2021-10-05 12:54:07
【问题描述】:

我对没有 sql 数据库和 DynamoDb 非常陌生。我们正在实现 dot net 应用程序,它将解析 csv 文件并将其行作为单独的记录存储在 AWS DynamoDb 表中。每个文件可以包含 50 到 20000 行。

在关系型 sql DB 中,我们使用的表会有这样的结构:

[dbo].[文件记录]

  • 标识(PK)
  • 文件ID
  • 状态 - int(处理或错误)
  • 数据 - nvarchar

现在我需要在 ASW DynamoDB 中实现它。我一直在研究 DynamoDb 文档并绘制了以下表格结构:

            Primary key
Partition_key   |    Sort_key           | Data
FileId          |    Status_recordId    | Json

因此数据将如下所示:

File1       Processing_record1
File1       Processing_record2
File1       Error_record3
File1       Error_record4

File2       Processing_record1
File2       Processing_record2
....
File2       Processing_record5000
File2       Processing_record5001
File2       Processing_record5002

FileID是主键的分区键,Sork_key是status+唯一行标识的组合。我们的 DynamobDb 模式是“按需”

我希望有人帮助我解决的问题:

  1. 我将仅使用查询来按文件 ID 和状态检索记录集合,即其中 PK = "File1" 并且 SK 以 "Processing" 开头。在这种情况下,这个表和键是否有效?

  1. 如果 File1 包含 100 条记录,File2 包含 10000 条记录,那么这个分区是否会正确分布?

  1. 我是否应该使用“密钥共享”计划(如果模式为“按需”),这意味着将索引(从 1 到 100)添加到分区键,这样我的 DynamoDb 表将包含以下数据:

File1_1     Processing_record1
File1_1     Processing_record2
File1_1     Error_record3
File1_1     Error_record4

File2_1     Processing_record1
File2_1     Processing_record1
....
File2_1     Processing_record5000
File2_2     Processing_record5001
File2_2     Processing_record5002

  1. 如果我的模式超过 3000 RCU 或 1000 WCU 并且表格模式为“按需”,我是否可以捕获 ProvisionedThroughputExceededException?

谢谢, 叶夫根尼。

【问题讨论】:

    标签: .net amazon-dynamodb


    【解决方案1】:
    1. 是的,这是获得结果的有效方法。
    2. 这不会有最佳分布。但这可能不是问题,因为 dynamodb 提供了means to rebalance partitions and provide adaptive capacity for 'hot' partitions。从may 2019 开始,自适应容量是即时的。
    3. 我相信 AWS 将此技术称为 write sharding。这实际上取决于您写作和阅读所需的工作量。如果您的工作负载要求超过单个分区键上 3000 RCU 或 1000 WCU 的最大值,那么这是克服最大工作负载限制的好策略。请记住,这也会影响您的应用程序查询表的方式。您需要针对每个分片发出查询。
    4. ProvisionedThroughputExceededException 将由 DynamoDB 客户端抛出,因此可以被捕获。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 2020-08-17
      • 2016-08-08
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      相关资源
      最近更新 更多