根据时间更新数据库中的条目

时间:2016-12-26 18:33:50

标签: firebase cron firebase-realtime-database

我有一个名为“票证”的模型,它有一个开始时间和结束时间。我希望能够在前端按时间分类/分割门票。将有3个类别:过去(现在> end_time),当前(start_time< now< end_time),future(now< start_time)。现在代表真实的UTC时间。我想在票证模型中有一个“州”字段,其中包含“过去”,“当前”或“未来”的值。我需要一种方法来根据时间更新门票的状态。

每分钟运行的cron作业是否适合这个解决方案?它将遍历所有条目并检查是否应更新状态,然后在必要时执行更新。这个解决方案可扩展吗有更好的解决方案吗?

如果有必要,我正在考虑将Firebase用于数据库,使用Google App Engine进行cron作业。

1 个答案:

答案 0 :(得分:0)

在大多数情况下,将数据保存到数据库中是错误的方法,数据库会随时间变得无效,但可以从同一记录的数据中计算出来。如果日期更新但cronjob尚未运行或日期接近现在,也存在不一致的风险。

我建议您始终使用日期字段在数据库查询中计算该信息。在MySQL中,这类似于:

SELECT 
    (IF (end_time < NOW()) THEN 'past' ELSE IF (start_time < NOW()) THEN 'current' ELSE 'future') AS state
FROM table

或者,您只需获取start_timeend_time字段并处理应用程序中的状态即可。如果要按状态查询条目,则还可以使用过滤子句中的日期列。

这使得需要让cron作业更新状态。