Aws lambda 具有超过500000个不同值的表分区键上的DynamoDB触发器的Lambda
我们目前正在设计一个dynamodb表来存储某些文件属性。有两个主栏Aws lambda 具有超过500000个不同值的表分区键上的DynamoDB触发器的Lambda,aws-lambda,amazon-dynamodb,amazon-dynamodb-streams,amazon-dynamodb-data-modeling,Aws Lambda,Amazon Dynamodb,Amazon Dynamodb Streams,Amazon Dynamodb Data Modeling,我们目前正在设计一个dynamodb表来存储某些文件属性。有两个主栏 日期:-包含年月日格式的日期,例如:-20190618 文件名:-xxxxxxxxxx.json 当前分区键是日期,排序键是文件名。我们预计每天大约有500000个文件具有不同的文件名(这可能会随着时间的推移而增加)。文件名每天重复相同,即典型模式如下所示 日期文件名 20190617 abcd.json 20190618 abcd.json 我们有一系列基于日期和dynamodb触发器的查询。这些查询非常有效。目前我们所观察
如果您的访问模式是按日期查询,则按文件名分区没有多大意义 相反,通过添加后缀来增加每个日期的分区数量的想法似乎不错。但是,不要添加一个随机后缀,可以考虑根据文件名添加一个稳定的后缀: 您可以使用文件名的第一个字母来获得大约30个分区——假设文件名是随机的。唯一的问题是,一些字母可能比其他字母更常见,给出了扭曲的子部分 或者,您可以对文件名进行哈希,并将其用作分区键的后缀。散列函数可以是一个相对简单的散列函数,它生成一个目标数值,对应于您希望为每个日期拥有的子分区的数量 如果每个分区有大约10000-50000个项目,那就太好了
希望这能有所帮助您似乎误以为分区键和分区之间存在一对一的对应关系 事实并非如此 分区的数量由表大小和吞吐量决定。分区键由DDB散列,数据存储在特定分区中 您可以有100k个分区键,但只能有一个分区 如果您正在突破DDB的限制,那么是的,您可能最终在一个分区中只有一个分区键……但这并不典型
提供了DDB工作原理的一些详细信息…为什么您认为它会创建500000个分区?一天内可能会有500000个文件具有不同的名称,这不是它的工作原理。分区根据分区大小(10GB)或吞吐量进行拆分和扩展。e、 g.每个分区目前可以支持3000 IOPS。一次读取等于1 IOP,一次写入等于3 IOPS。如果任何分区的IOPS超过3000,或者您提供的容量超过了当前分区所能处理的容量,那么后台DynamoDB将创建必要的分区来处理该负载。谢谢您的评论。它有助于。。。一个问题是,一个带有文件名分区键的dynamodb表设计得很好。在第一天,每个分区将有一条记录,但是在一段时间内,如果使用文件名作为分区键,数据将增长,您将失去按日期查询的能力。只有当您的访问模式主要基于文件名时,它才有意义。所以答案是——这取决于……非常感谢。本文档以及以下链接帮助澄清了许多疑问