如何将 DynamoDB 放入队列中
How To Put DynamoDB Put Requests In A Queue
我看到很多人提到,在 DynamoDB 中处理有限 WCU 的方法是在队列中发送您的请求,并让队列以不会越过您的方式将数据插入 dynamodb分配的 WCU。
有人有这方面的例子吗?我目前正在 python 和 nodeJS 中使用 aws lambda。
我的理解:
如果 lambda 想要将 2,000 个项目放入 dynamodb 而我们只有 100 个 WCU,而不是让 lambda 在每个请求之间重试和/或等待。
我们可以将项目发送到 SQS 队列,然后该队列将以每秒 100WCU 的速率输入项目。
这是正确的工作流程吗?
你可能会用到Redis。特别是如果您一遍又一遍地插入同一个分区(称为 'hot partition'),Redis 会提供从集合中随机选择的功能。只需将它们排队(插入)到 Redis 中,然后不断地从另一个进程读取并插入到数据库中。在 Nodejs 和 Python 上,redis 有数千个示例,使用起来非常方便:)
缓存中有一个 AWS Blog 条目。看看它。也推荐这个模式。
Although the number of use cases for caching is growing, especially
for Redis, the predominant workload is to support read-heavy workloads
for repeat reads. Additionally, developers also use Redis to better
absorb spikes in writes. One of the more popular patterns is to write
directly to Redis and then asynchronously invoke a separate workflow
to de-stage the data to a separate data store (for example, DynamoDB).
可能有更多方法可以实现您想要的,甚至可以用更简单的方式实现,但 Redis 几乎可以满足所有需求,也许您甚至已经在使用它了 ;)
我看到很多人提到,在 DynamoDB 中处理有限 WCU 的方法是在队列中发送您的请求,并让队列以不会越过您的方式将数据插入 dynamodb分配的 WCU。
有人有这方面的例子吗?我目前正在 python 和 nodeJS 中使用 aws lambda。
我的理解:
如果 lambda 想要将 2,000 个项目放入 dynamodb 而我们只有 100 个 WCU,而不是让 lambda 在每个请求之间重试和/或等待。
我们可以将项目发送到 SQS 队列,然后该队列将以每秒 100WCU 的速率输入项目。
这是正确的工作流程吗?
你可能会用到Redis。特别是如果您一遍又一遍地插入同一个分区(称为 'hot partition'),Redis 会提供从集合中随机选择的功能。只需将它们排队(插入)到 Redis 中,然后不断地从另一个进程读取并插入到数据库中。在 Nodejs 和 Python 上,redis 有数千个示例,使用起来非常方便:)
缓存中有一个 AWS Blog 条目。看看它。也推荐这个模式。
Although the number of use cases for caching is growing, especially for Redis, the predominant workload is to support read-heavy workloads for repeat reads. Additionally, developers also use Redis to better absorb spikes in writes. One of the more popular patterns is to write directly to Redis and then asynchronously invoke a separate workflow to de-stage the data to a separate data store (for example, DynamoDB).
可能有更多方法可以实现您想要的,甚至可以用更简单的方式实现,但 Redis 几乎可以满足所有需求,也许您甚至已经在使用它了 ;)