Python DynamoDB中fanship数据快速访问和检索的高效模式

Python DynamoDB中fanship数据快速访问和检索的高效模式,python,indexing,amazon-dynamodb,boto,throughput,Python,Indexing,Amazon Dynamodb,Boto,Throughput,我需要一些帮助来设计DynamoDB哈希+范围密钥方案,以实现对项目组的快速单项目写入访问和快速并行读取访问 背景: 目前,每个扇形链接都以以下格式存储为一个项目: { user_id : NUMBER fanned_id : NUMBER timestamp: NUMBER }, 其中,user_id是散列键,fanned_id是范围键。此方案允许通过用户id+扇型id快速访问单个扇型项目,但当从DynamoDB读取完整扇型项目时,如果用户扇型了数千个其他用户,

我需要一些帮助来设计DynamoDB哈希+范围密钥方案,以实现对项目组的快速单项目写入访问和快速并行读取访问

背景:

目前,每个扇形链接都以以下格式存储为一个项目:

{
     user_id : NUMBER
     fanned_id : NUMBER
     timestamp: NUMBER
},
其中,user_id是散列键,fanned_id是范围键。此方案允许通过用户id+扇型id快速访问单个扇型项目,但当从DynamoDB读取完整扇型项目时,如果用户扇型了数千个其他用户,则需要很长时间才能传输数据

下面是我如何使用boto python库查询DynamoDB的:

table = Table("fanship_data", connection=conn)
fanship  = []
uid = 10
for fanned in table.query_2(user_id__eq=uid):
    fanship.append((fanned["fanned_id"],fanned["timestamp"]))
显然,吞吐量瓶颈在boto查询中,因为用户的整个fanship必须以每秒25项的速度传输,即使我已经为DynamoDB指定了高吞吐量

我的问题是:


假设有很大的读吞吐量,并且所有数据都存在于DynamoDB中。我不介意采用多处理,因为并行传输数据需要多处理。什么样的散列+范围键方案可以让我快速传递用户的完整身份?

我认为您的散列/范围键方案正是您想要实现的目标。我在我的几个表上实现了类似的模式

根据,查询性能取决于检索到的数据量,而且似乎没有一种并行读取的方法。这是唯一的方法,但我不确定这对你来说是否是一个更好的方法