【发布时间】:2020-10-18 20:37:13
【问题描述】:
在我们的应用程序中,我们目前使用 dynamoDb 来存储通知详细信息。因此,调度程序每天运行两次,查询“notificationType”(pk -> notifiactionType,sk -> userId)。 在每个项目中都有一个属性(时间戳),基于该属性如果时间戳大于当前时间将发送触发器(更多的业务逻辑,对于时间戳后一天的某些记录需要发送邮件)。现在一旦用户执行发送通知的活动,然后将删除该条目
我的疑问是,如果通知类型的数据变大,那么检索所有数据是多余的,因为对于某些记录,通知不会被发送。因此使用了更多的读取容量,这可能会在以后的时间点增加成本。 在这种情况下,明智的做法是使用现有的 dynamoDb 或移动到任何其他数据库,如 mongoDb、cassandra 或任何其他数据库。
注意:我最关心的是成本
【问题讨论】:
-
您是否需要调度程序每天运行两次,或者如果通知在时间戳过去后立即发送,它是否也适用于您的用例?
-
我的假设是否正确,您还使用该 DynamoDB 表来永久存储所有通知(无论它们是否具有过去或未来的时间戳)?
-
@Dunedan,对于您的问题 1。这取决于 notificationType。对于某些通知类型,我们会在时间戳通过后立即发送邮件。对于其他的notificationType,假设我们需要给2nd day 提醒,4th day 提醒一旦它通过了时间戳。 (即超过时间戳 2 天) 2)目前,不需要永久存储数据,因此一旦用户执行发送通知的操作,我们就会删除通知 谢谢!
-
您是否考虑过使用 TTL 使旧的过期,这样您就不必扩大规模?
-
@hephalump,数据会一直保留到用户执行所需的操作,并为此发送通知。所以一旦时间戳过去,第一封邮件就会被触发。即使超过时间戳 2 天,用户也没有完成所需的操作,必须在第 2 天触发邮件。所以数据删除只有在用户的任务完成后才进行
标签: database mongodb architecture amazon-dynamodb