在数据量大的应用程序中优先处理数据更新和维护的策略?

时间:2013-07-23 20:16:41

标签: ruby-on-rails ruby database database-design

我有一个包含数万条记录的Rails应用程序,我会调查API以获取更新。我想知道在创建一个系统方面的最佳实践(更多涉及的不仅仅是一个cron工作)跟踪记录更新的频率......一些记录比其他记录更重要/更及时...所以对于常规维护,我希望每天两次更多重要的记录被轮询和更新,而非重要记录则每天更新一次。

所以假设这些记录有一些返回其“重要性”的方法......我应该创建一种维护_记录模型,belongs_to每个记录并记录该记录的陈旧性(该记录的updated_at和它的重要性)?此记录还会记录最新尝试是否成功,并且可能在日志记录表中包含外键。

目的是让maintenance_record能够非常快速地进行索引和排序,以便类似cron的作业可以扫描列表以查找要执行的作业,而不是点击records数据库(可能包含大量blob等的记录,并且可能会增加数量级)。当然,我有不止一种类似记录的模型......所以具有多态maintenance_record似乎是明智的。

无论如何,这是个好主意吗?这似乎是一个经常出现的场景,所以我想知道是否有任何库可以专门处理它,虽然我想创建一个简单的库并不是太难。

1 个答案:

答案 0 :(得分:1)

通常,当我需要定期更新记录时,我会添加一个modified_at时间戳字段,每次记录更改时都会更新。

然后,按照cron计划,我会查看表格,查看超过一定时间的记录,处理并更新该行及其modified_at字段。

如果有优先级/重要性,请添加字段并为每条记录设置级别。如果1是顶部而2是下一个,则每个循环过程都使用priority == 1字段。每个其他周期进程都记录priority <= 2

你应该如何处理这两个字段作为练习。