amazon-web-services - DynamoDB - 如何通过非主键的内容进行查询

标签 amazon-web-services aws-lambda amazon-dynamodb

所以,我在 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/

相关文章:

linux - 使用 Python AWS Lambda 层连接到 MS SQL Server 时出现问题 - 适用于 SQL Server 的 ODBC 驱动程序 13

java - 使用 Java 的 AWS 资源

amazon-web-services - 我的 ecs cloudformation 模板有什么问题吗?

java - 如何从 Java 中的另一个 aws lambda 调用 aws lambda 函数?

python - AWS S3 列表键以字符串开头

javascript - 如何仅获取 dynamoDB 流上的差异/修改

amazon-web-services - 使用 aws cli 将日志流式传输到 elastic

amazon-web-services - 云形成的工作原理

amazon-dynamodb - 您可以在 dynamodb 免费套餐中使用的表总数是多少?

amazon-web-services - 如何使用 AppSync + DynamoDB 自动生成全局 ID