【发布时间】:2012-06-11 14:56:25
【问题描述】:
我有一个人的主表。我的 Django 应用程序中的所有内容都与一个或多个人直接或通过长 fk 链相关。此外,我所有的模型都有标准的簿记字段“created_at”和“updated_at”。我想在我的 Person 表上添加一个名为“last_active_at”的字段,主要用于原始 sql 排序目的。
创建或编辑某些相关模型会为这些对象生成新的时间戳。我需要以某种方式用这些值更新 Person.'last_active_at' 。从功能上讲,这并不难实现,但我担心应用程序会承受过大的压力。
我最担心的两个原因是我被限制在一个真正的数据库字段中——我不能将函数分配给 Person 表作为 @property——并且这些“活动”模型之一接收和处理来自我无法控制的外部数据源的新实例,偶尔会一次接收大量数据。
我的第一个想法是在“活动”模型中添加一个 post_save 挂钩。似乎仍然是我最好的选择,但我对它们一无所知,它们对数据库的影响有多大,等等。
我的第二个想法是编写某种脚本,通过一天的活动并在晚上更新这些模型。不过,我的雇主是“现场直播”。
我的第三个想法是修改 post_save 算法以检查“updated_at”是否距离 Person 的“last_active_at”不到半小时,如果为真则不更新该人。
我的想法是否朝着可扩展的方向发展?我还应该采用其他方法吗?
【问题讨论】:
标签: python django performance algorithm model