【问题标题】:Data model for a tagging system in DynamoDbDynamoDb 中标记系统的数据模型
【发布时间】:2018-07-27 14:59:24
【问题描述】:

如何对 dynamoDB 表进行建模以构建标签系统,其中产品可以分配多个标签,并且我们应该能够过滤具有特定标签或标签集合的产品集并获得分配的所有标签给定的产品?

我考虑过有一张桌子:

哈希键:设备ID

范围键:标签

这允许查询设备的所有标签。

然后我需要一个 GSI:

哈希键:标签

范围键:设备 ID

过滤具有给定标签的所有设备。但这不会让我同时过滤多个标签,而不涉及对 GSI 的多个查询和应用程序级别的处理。

在 DynamoDB 中这个问题有什么好的解决方案吗?

【问题讨论】:

  • 您找到解决此问题的方法了吗?我有兴趣。
  • 有什么解决办法吗?我也很好奇!
  • No dynamodb 不能有效地解决这个模式,

标签: amazon-dynamodb


【解决方案1】:

但这不会让我同时过滤多个标签,而不涉及对 GSI 的多个查询和应用程序级别的处理。

使用过滤条件的解决方法:

  1. 为每个设备标签添加一个布尔属性
  2. 使用 GSI 查询多个标签中的第一个标签(就像查询具有给定标签的所有设备一样)
  3. 最后使用filter condition检查剩余的标签,匹配步骤1的布尔属性

不需要多个请求或客户端聚合,并且由于第 2 步,我们避免了进行全表扫描。

请注意,这个查询仍然不是最理想的,因为我们最终会扫描那些具有第一个标签但缺少一些剩余标签的设备。

【讨论】:

  • 请注意:这仅适用于您想要选择具有 all 这些标签的项目的情况。我认为人们更多的时候是在寻找联合,而不是交集
猜你喜欢
  • 2016-11-07
  • 1970-01-01
  • 2011-01-07
  • 2016-02-16
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
相关资源
最近更新 更多