如果已经使用电子邮件地址或显示名称,如何建模以支持有效的查询检查?
我应该创建一个guid为Key的表,没有范围,2个单独的GSI用于电子邮件,一个用于显示名称(每个都是键)?两者还将具有第二个字段,其中包含用户的guid id。或者这些应该是完全独立的表格,还是????
思考,有更好的方法吗? 感谢。
答案 0 :(得分:0)
我可以设想3种可以设计的方法:
您已声明这两个字段必须是唯一的,因此您可以将其中任何一个作为哈希并为其他字段创建GSI。(这会遇到问题,因为您提到需要更新电子邮件& Name,因为你必须删除旧记录并添加具有相同属性和更新的Hash密钥的新记录)
这样做的好处是你需要支付更少的费用,因为与#1相比只有一个GSI。
另一种选择是使用CloudSearch,您的DynamoDB表可以与cloudSearch集成,在此选项中您只需创建一个带有guid的表,无需添加任何GSI,无论何时您想要搜索,您都可以在CloudSearch上搜索得到输出。
您将在CloudSearch中获得的另一个优势是,您可以查询表格的任何属性,并可以对它们使用不同的过滤器。
有一件事你需要看到#2和#3之间的价格差异,你可以选择更适合价格和功能的人。
如果您通过其他方式实现此功能,请随时分享。
希望有所帮助