我在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
答案 0 :(得分:1)
通常,为了避免在要查询非主键的属性时进行扫描,可以使用global secondary keys。对于您的情况可能效果不佳,因为您可能希望能够一次标记具有多个标签的人。
因此,我会选择一个单独的表格,其中只包含人物标记的映射。在该表中,一个项目应该是一个标签到一个人的映射。如果一个人有多个标签,只需在其中添加多个项目。
通过这种方式,您可以查询给定标记的标记表,以获取您正在搜索的所有人的主键,然后再对人员表进行另一次查询以获取其详细信息。
这也适用于新标签,因为它们仅指标签表中的其他项目。