WeC*_*nds 3 amazon-ec2 go bigdata amazon-web-services amazon-dynamodb
我有一个 EC2 实例,它打开一个 json 文件,读取每一行并对两个表执行 putItem 操作。
在没有 putItem 操作的情况下,Golang 在大约 3 秒内解析了一个 67k 行的文件。
通过 putItem 操作,它每 5 分钟处理 10k 个项目。对 dynamodb 的 put 操作没有受到限制。WCU 和 RCU 已相应设置。那么 putItem 操作是否有阻止代码的原因?
我假设 Golang 正在等待每个 put 操作成功?
仍然很不确定,如果有人使用 golang 对 dynamodb 进行了大量插入,那么如果您对如何规避这一点有所了解,将会有所帮助。
缓慢来自这样一个事实,即每个插入都必须对 dynamo 进行完整的 HTTP 往返。
5 分钟内处理 10k 个项目,每个项目大约需要 30 毫秒,这是 HTTP 行程的预期。
您可以使用批量更新,文档在这里
在文档中,你有BatchWriteItemInput
,它需要一个map[string][]*WriteRequest
.
type BatchWriteItemInput struct {
// ... trimmed
RequestItems map[string][]*WriteRequest
...
}
Run Code Online (Sandbox Code Playgroud)
该WriteRequest
模型有点奇怪,因为它用于Delete
和Put
操作,只需忽略该DeleteRequest *DeleteRequest
字段。
需要注意的是,批处理操作有一些限制:
归档时间: |
|
查看次数: |
2910 次 |
最近记录: |