可扩展的方式来设置产品订阅?

问题描述:

我不确定创建后台作业是否最好的想法,以便随时更新产品价格来扫描数据库,尤其是在我的应用程序中时,如果数百万个产品的价格较低,我预计会有100,000个产品。可扩展的方式来设置产品订阅?

我有两种型号,ProductPrice。一个Product可以有很多不同的Prices。所以我认为它应该完成的方式是:

  1. 订阅产品。
  2. 创建后台作业,以较低的价格每小时扫描数据库。
  3. 通过电子邮件通知用户。

我不确定关于#2,如果这是完成它的最佳方式。你们会建议什么?

如果你的Rails应用程序被添加新的价格对象在其数据库中的产品,为什么不能有一个ActiveRecord的回调(after_create在这种情况下),每次新的价格对象被添加?

ActiveRecord回调可以启动一个延迟的作业,通过电子邮件向用户发送新的更低的价格。

如果是我,我会使用数据库触发器而不是后台作业清理器。

这里有一个介绍到触发器:

http://www.mysqltutorial.org/mysql-triggers.aspx