Amazon web services 仅通过辅助索引进行DynamoDB查询

Amazon web services 仅通过辅助索引进行DynamoDB查询,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我在DynamoDB中存储用户帐户: { email: 'user1@xxx.com', expires: 1548807053247, } 我的哈希键是电子邮件字段 我想添加一个每日cron作业,它将为所有将在未来14天内到期的帐户发送一封提醒电子邮件 为此,我需要单独查询expires字段,而不使用散列键 我假设我需要在这个字段上定义一个二级索引,可能是全局的,而不是局部的,但是我不确定如何为它编写正确的查询 我正在使用访问表,提前感谢 调用查询API时,只需在表名之外指定Inde

我在DynamoDB中存储用户帐户:

{
  email: 'user1@xxx.com',
  expires: 1548807053247,
}
我的哈希键是电子邮件字段

我想添加一个每日cron作业,它将为所有将在未来14天内到期的帐户发送一封提醒电子邮件

为此,我需要单独查询expires字段,而不使用散列键

我假设我需要在这个字段上定义一个二级索引,可能是全局的,而不是局部的,但是我不确定如何为它编写正确的查询


我正在使用访问表,提前感谢

调用查询API时,只需在表名之外指定IndexName即可。其余部分与您查询表时的情况相同。

我经常遇到同样的问题

我要做的是,添加另一个名为all的属性,其值为1 您可以使用任何键/值 然后创建一个GSI

分区:全部 排序:过期 为了优化一点,您可以只向活动用户添加此属性

或者您可以添加一个属性activenumber并将其用作GSI的分区键

这是一个非常低效的分区密钥分发 因为所有项目都属于一个分区 但我找不到别的办法


我很高兴听到另一种解决方案

您是使用GSI还是LSI取决于您需要的一致性和性能级别。此外,LSI与表一起创建,与表一起存储,并且在创建表后,如果不删除表,则无法删除LSI。另一方面,GSI可以随意创建和销毁,但它们最终是一致的。