我是AWS新手并创建一个需要将〜10,000个项目放入DynamoDB的应用程序。 这可能每天几次随机发生。
在这种情况下,提供写入容量的最佳方法是什么?
由于配置的写入容量较低,我必须在应用程序中限制PutItem请求,因此整体写入时间将需要几分钟。这对用户来说是不可接受的。
如果90%的时间不需要,我不想提供高写入容量。
这似乎是一个选项:https://aws.amazon.com/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/(虽然您每天只能减少4次拨款http://aws.amazon.com/dynamodb/faqs/#How_often_can_I_change_my_provisioned_throughput)
这是另一种选择:Avoid throttle dynamoDB,但对于我想要达到的目标而言似乎过于复杂。
将数据作为JSON上传到S3然后让Lambda函数以所需的速度将数据放入数据库是否可能/合理?
是否还有其他策略来处理此批量输入?我应该查看其他数据库吗?
答案 0 :(得分:1)
一个有效的模型,如果您不需要在执行写入后立即回读,则首先将所有请求发送到SQS队列,并具有从队列中获取项目的后台任务并以定义的较高速率将它们写入DynamoDB;这很适合在高写期间消除尖峰。 SQS,如果你还没有使用它,很容易使用 - 但这确实需要一个总是在某个地方运行的实例来为你工作。
这样做的好处是,SQS几乎可以接受任何数量的消息,无论写入速度如何,每条消息的成本都是相同的。