【问题标题】:Query the DynamoDb using a nested attribute ID使用嵌套属性 ID 查询 DynamoDb
【发布时间】:2022-01-22 04:17:33
【问题描述】:

长期潜伏者第一次在这里提问。 :)

我有一个 DynamoDB 表,表中的项目如下所示:

{
   "id":"id",
   "randomData":{
      "randomData1":"randomData1",
      "randomData2":"randomData2"
   },
   "status":"status",
   "subTasks":[
      {
         "subTaskId":"subTaskId",
         "subTaskType":"subType",
         "subTaskAnyData":"subTaskAnyData",
         "subTaskStatus":"status",
      },
      {
         "subTaskId":"subTaskId",
         "subTaskType":"subType",
         "subTaskAnyData":"subTaskAnyData",
         "subTaskStatus":"status",
      },
      {
         "subTaskId":"subTaskId",
         "subTaskType":"subType",
         "subTaskAnyData":"subTaskAnyData",
         "subTaskStatus":"status",
      }
   ]
}

所以我有顶级的 id(主/分区键)属性,而且在 subTasks 数组内部,还有 subTaskId

是否有一种有效的方法来查询表并获取数据,即基于 subTaskId 的一个 subTask 对象?

或者我应该考虑重新设计表格并将子任务放在单独的表格中?

【问题讨论】:

    标签: nosql amazon-dynamodb dynamodb-queries amazon-dynamodb-index aws-dynamodb


    【解决方案1】:

    总之,

    不,这已经结束了,因为您必须获取完整的对象或/并执行大量扫描。

    这取决于您请求 subTaskId 的次数,您可以使用单独的表或使用另一个 GSI(subTaskId 作为二级索引)执行单表,查询为比扫描更有效。

    【讨论】:

    • 谢谢哈蒂姆!我可能经常需要特定的子任务,检查状态,重试等。不确定我是否理解单表方法,以及 subTaskId 作为二级索引,因为我总是有多个子任务?
    • 抱歉耽搁了,您可以像单表一样使用来存储所有数据。您需要模拟所有类型的请求以完美地设计它(通过Taskid获取任务,通过SubTask id获取子任务,通过Taskid获取所有子任务)==> docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
    • 我发现this tool 在尝试围绕某些访问模式可视化表格设计时很有帮助
    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多