如何在DynamoDB中获取具有特定值的项目?

时间:2017-08-02 05:16:03

标签: amazon-dynamodb nosql

我在DynamoDB中设置了一个人员表,我想标记这些人。

出于演示的目的,我们可以说这些标签只是字符串......"高","短","喜欢棒球"等等...

如何设置数据,以便我可以快速查询具有特定标记的所有人,例如所有" tall"人呢?

我可以避免扫描桌子吗?我可以避免创建多个表吗?对于关系数据结构,这实际上是一个更好的用例吗?如果我在运行中想出新标签怎么办?在这种情况下,关系不起作用。

更新

People Tags Mappings ====== ==== ======== John firefighter John > firefighter Sally young John > young Joe owner Sally > owner Anne staff Anne > owner Chris zebra-lover Chris > zebra-lover Ben 42 Ben > zebra-lover

1 个答案:

答案 0 :(得分:1)

通常,为了避免在要查询非主键的属性时进行扫描,可以使用global secondary keys。对于您的情况可能效果不佳,因为您可能希望能够一次标记具有多个标签的人。

因此,我会选择一个单独的表格,其中只包含人物标记的映射。在该表中,一个项目应该是一个标签到一个人的映射。如果一个人有多个标签,只需在其中添加多个项目。

通过这种方式,您可以查询给定标记的标记表,以获取您正在搜索的所有人的主键,然后再对人员表进行另一次查询以获取其详细信息。

这也适用于新标签,因为它们仅指标签表中的其他项目。