如果我想用一个巨大的域名列表填充DynamoDB表,每个域名(example.com)都有两部分,主机名(example)和顶级域(com)。
我正在尝试确定如何使用哈希和范围主键来最好地存储它。根据文档,你想分散密钥的哈希部分,所以我认为应该使用完整的域名(example.com),范围可以是域的更新日期。这将允许我查询特定日期后更新的所有域。这个设计听起来不错吗?
要最大限度地利用DynamoDB的吞吐量,请创建表,其中hash-key元素有大量不同的值,这些值是要求相当一致,尽可能随机。
使用域名作为哈希密钥,更新日期作为范围密钥似乎可以提供良好的哈希密钥物理分布。然而,如果你的域名每秒更新500次以上,我会评估其他策略,比如将udpates写入一个以UUID为哈希键的表,在更新表上启用DynamoDB流,并将该流与KCL+Streams Adapter或Lambda一起使用,以更新存储系统当前状态的缓存。最后,查询操作一次只涉及一个特定的哈希键,但是的,如果您使用日期时间字符串作为Range键,您肯定可以在时间上前后分页,从特定域名的最新或最不新更新开始。