首页 > 解决方案 > 为大型用户群运行脚本的最佳方式?

问题描述

我有用户存储在 postgresql 数据库(~10 M)中,我想向他们发送所有电子邮件。目前我已经编写了一个nodejs脚本,它基本上一次获取1000个用户(sql中的偏移和限制)并在rabbit MQ中对请求进行排队。现在这对我来说似乎很笨拙,好像节点进程在任何时候都失败了,我必须重新启动进程(我目前正在跟踪每个查询跳过的用户数,并且可以从日志中找到的前一个跳过的数字重新启动)。这可能会导致一些用户收到重复的电子邮件,而另一些用户则没有收到任何电子邮件。我可以创建一个新表,其中包含指示电子邮件是否已发送给该人的新列,但在我目前的情况下,我不能这样做。我既不能创建新表,也不能向现有表添加新行。(在我看来像幂等问题?)。你会如何处理这个问题?您认为复合索引可能会有所帮助吗?请解释。

标签: node.jsdatabase

解决方案


处理这个问题的最好方法确实是存储谁收到了一封电子邮件,所以没有机会做两次。

如果您无法将表或列添加到现有数据库,只需为此目的创建一个新数据库。如果您希望能够从崩溃中恢复,您需要将收到电子邮件的人存储在某处,因此如果您受到严格限制,不能将其存储在主数据库中,请使用另一种存储机制来发挥创意。


推荐阅读