首页 > 解决方案 > 数百个并行 dynamodb 查询

问题描述

我试图找到为一个请求执行数百个并行 dynamodb 查询的最佳实践。我目前正在使用 python,但我对任何最适合此用例的语言和框架持开放态度。这基本上是我想要做的,我在这里将它缩短到只有 4 个值,但最后我希望它一次查询 500。

import boto3
import time
from boto3.dynamodb.conditions import Key

variables = {'random1':None,'random2':None,'random3':None,'random500':None}

table = boto3.resource('dynamodb','eu-west-1').Table('sometable')
for v in variables:
    variables[v]=table.query(KeyConditionExpression=Key('k').eq(v),Select='COUNT')['Count']

print(variables)
# expected output: {'random1': 12, 'random2': 30, 'random3': 230, 'random500': 5}

所以我正在做选择计数查询来获取表中每个键的不同计数。这个“函数”的输出是我需要在服务中返回的。对于这些查询中的每一个,响应时间都很长,比如 40 毫秒。但显然,按顺序运行会线性扩展,这不起作用,因为我希望所有这 500 个变量的时间都小于 150 毫秒(最大值)。

有没有人做过类似的事情?任何建议将不胜感激!

标签: python-3.xamazon-web-servicesparallel-processingamazon-dynamodb

解决方案


我的建议是不要这样做。

如果您需要 DDB 中的聚合,首选方法是启用流并让 Lamba 更新/写入现有表(或新表)中的聚合条目。

这是一篇好文章... 使用 DynamoDB 流进行实时聚合


推荐阅读