所以,我在 DybamoDB 上有一个具有以下结构的表:
- userId as the primarykey (it's a uuid)
- email
- hashedPassword
我想在有人注册时查明是否已经有人在使用该电子邮件。
这应该很容易,但据我所知,除非您使用主键作为参数或排序键,否则您无法在 DynamoDB 上查询(并且我不确定使电子邮件是否有意义)排序键)。
我发现的另一种方法是使用全局二级索引,这几乎是您使用另一个字段作为主要排序创建的索引表,但这是收费的,因为我仍在开发和测试,所以我没有想要有开支。
有人有其他选择吗?还是我错了,还有另一种方法可以做到这一点?
最佳答案
与其他答案一样,我也认为 GSI 是最好的选择。
但我还想补充一点,由于 DynamoDB 的搜索功能非常有限,因此出于此目的将 DynamoDB 与其他东西一起使用的情况并不少见。 AWS 博客中描述了这样一个用例:
The main querying capabilities of DynamoDB are centered around lookups using a primary key. However, there are certain times where richer querying capabilities are required. Indexing the content of your DynamoDB tables with a search engine such as Elasticsearch would allow for full-text search.
显然,我不建议在您的场景中使用 ES 而不是 GSI。但值得注意的是,DynamoDB 可以而且经常与其他服务一起使用来扩展其搜索功能。
关于amazon-web-services - DynamoDB - 如何通过非主键的内容进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62238991/