Optimization dynamodb中的查询与扫描操作

Optimization dynamodb中的查询与扫描操作,optimization,aws-lambda,amazon-dynamodb,query-optimization,Optimization,Aws Lambda,Amazon Dynamodb,Query Optimization,背景 我目前正试图根据我的db设计,找出计算lambda函数中某些统计信息的最佳方法。假设我有来自中国23个省份的用户记录,我将其存储在一个数组中,我想确定女性和男性的总数,以及每个省份的用户数量 给定一个包含200000个项的GSI表,每个项的总大小为100字节,如下所示,省属性是分区键 { "createdAt": { "S": "2020-08-05T19:21:07.532Z" }, "gender

背景

我目前正试图根据我的db设计,找出计算lambda函数中某些统计信息的最佳方法。假设我有来自中国23个省份的用户记录,我将其存储在一个数组中,我想确定女性和男性的总数,以及每个省份的用户数量

给定一个包含200000个项的GSI表,每个项的总大小为100字节,如下所示,省属性是分区键

{
  "createdAt": {
    "S": "2020-08-05T19:21:07.532Z"
  },
  "gender": {
    "S": "Male"
 },
 
  "updatedAt": {
    "S": "2020-08-05T19:21:07.532Z"
  },
 "province": {
    "S": "Heilongjiang"
  }
}
我正在考虑使用两种方法进行此计算:

1.查询方法

我计划在province数组上循环,并在每个循环上为查询方法提供一个分区键,这将导致产生过多的请求(准确地说是23,如果返回的每个请求都没有超过1MB的限制,这可能会导致我不断重复,直到当前查询没有更多的lastEvaluationKey)

2.扫描方法

在这个方法中,我将迭代地向数据库发出请求,直到不再有lastEvaluationKey

具备扫描和查询方法的知识,它们只能返回1mb的数据,在这个特定的用例中,哪种方法最适合使用

我正在考虑使用扫描方法,因为我需要读取表中的所有数据,以便计算统计数据;然而,我担心随着表格的增长,操作会变得多么缓慢

PS:如果您能为更好的访问提供不同的密钥模式,我们将不胜感激

在DDB表中创建/更新/删除记录时,使用DDB Streams+Lambda更新统计信息

另见


您的意思是在事件发生时添加lambda触发器,对吗?听起来很有希望,谢谢!我一定会马上查出来的!