我有一个分析列表中电子邮件的服务。每个列表可以包含500到200,000封电子邮件。我发现的最好的方法是分析这些列表是使用Sidekiq服务背景。它有效,但我不认为这是分析这些电子邮件的最佳方式,原因是:
Sidekiq配置为使用线程25,我正在使用MongoDB来存储这些电子邮件。
工作的工作流程是:
使用通过参数传递给作业的ID搜索MongoDB中的电子邮件; 分析电子邮件并更新数据库中分析的状态:有效或无效。
因此它平均对数据库进行25次并发访问,并且在1~4秒(处理时间)之后,需要再次访问数据库以更新状态(每个作业1次)。
如果列表包含100.000封电子邮件,则需要100,000个作业才能完成此任务。在数据库中将进行200.000次访问,大部分时间都是25次并发。
这是执行此服务的好方法吗?有没有办法减少对MongoDB的访问?
我看不到另一种方法。