Dynamodb 非分布式服务:值得使用低基数 ID 作为分区键和高基数 ID 作为排序键吗?

问题描述 投票:0回答:1

我理解Dynamodb中热键的概念:如果有一个视频游戏数据库,并且country_code用作分区键,而player_id用作排序键,那么当来自同一国家/地区的每个人都在该国家/地区时区的傍晚玩游戏时,该 Country_code 区域的表上将会有大量的读写操作,而其他分区大多未征税,从而导致延迟,而这本来可以通过使用player_id 作为分区键来避免。

但是,我的用例不是分布式应用程序。我正在为数据抓取脚本的结果创建一个存储库。表的更新将仅采用循环 json 元素的单个交付源 (aws lambda) 的形式。是的,更新将是“热门”,因为我将更新单个国家/地区代码,而所有其他国家/地区的数据都无法访问,但因为这只是一个来自一个交付脚本的迭代过程,多个操作永远不会立即发生。

一个合理的问题是,为什么要这样做是为了增加思考能力?为什么不直接使用实际的唯一 ID 作为分区键呢?数据的实际使用模式将很少出现在机器学习分析中,因此对给定分区键 [非唯一] 国家/地区代码的整个排序键 [唯一] ID 范围的查询可能允许我避免扫描整个表一次启动该过程,然后按国家代码过滤。

amazon-dynamodb nosql key partitioning dynamodb-queries
1个回答
0
投票

您可以在 DynamoDB 中使用低基数密钥,只要每个密钥每秒不超过 1000 WCU 或 3000 RCU。如果超过其中任何一个,您将迫使分区变热并导致节流。

对于您的用例,您担心批量加载到 DynamoDB 中,如果您可以将 Lambda 速率限制为每个国家代码每秒消耗不超过 1000 WCU,那么您就不会有问题。

© www.soinside.com 2019 - 2024. All rights reserved.