【发布时间】: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 模式是“按需”
我希望有人帮助我解决的问题:
- 我将仅使用查询来按文件 ID 和状态检索记录集合,即其中 PK = "File1" 并且 SK 以 "Processing" 开头。在这种情况下,这个表和键是否有效?
- 如果 File1 包含 100 条记录,File2 包含 10000 条记录,那么这个分区是否会正确分布?
- 我是否应该使用“密钥共享”计划(如果模式为“按需”),这意味着将索引(从 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
- 如果我的模式超过 3000 RCU 或 1000 WCU 并且表格模式为“按需”,我是否可以捕获 ProvisionedThroughputExceededException?
谢谢, 叶夫根尼。
【问题讨论】:
标签: .net amazon-dynamodb