DynamoDb中标记系统的数据模型

时间:2018-02-16 16:39:32

标签: amazon-dynamodb

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

我考虑过一张桌子:

  

HASH键:deviceId

     

RANGE键:标签

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

然后我需要一个GSI:

  

HASH键:标记

     

RANGE键:deviceId

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

DynamoDB中是否有解决此问题的好方法?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

请注意,此查询在我们最终扫描具有第一个标签但缺少某些其余标签的设备的意义上仍不是最佳选择。