处理时间线(MySQL)
我正在使用一个伪社交应用程序。处理时间线(MySQL),mysql,project,timeline,Mysql,Project,Timeline,我正在使用一个伪社交应用程序。 我们有3张桌子: Users: _id_, username, password, email Movies: _id_, title, synopsis Followers: __(#user_id1, #user_id2)__, timestamp U_Movies: __(#user_id, #movie_id)__, rating, timestamp 我们想在我们的应用程序中添加一个时间线,简单时间线,以及最近的活动。我们不需要自定义时间线(没有消息)
我们有3张桌子:
Users: _id_, username, password, email
Movies: _id_, title, synopsis
Followers: __(#user_id1, #user_id2)__, timestamp
U_Movies: __(#user_id, #movie_id)__, rating, timestamp
我们想在我们的应用程序中添加一个时间线,简单时间线,以及最近的活动。我们不需要自定义时间线(没有消息),只需要活动
“创建”此时间表的最佳方式是什么?是通过创建一个包含所有活动的“时间线”表(当有
插入追随者
和U_电影
时,执行插入时间线
),还是使用MySQL和加入最新的追随者活动(加上时间戳,我认为如果有很多条目和用户,时间戳会很重),还有其他建议吗
感谢您的帮助!您可以创建触发器,在更改时将其插入到第三个表中
查看mysql docs online中的触发器。我最近做了类似的事情。您的第一个想法可能是最好的,将数据添加到新表中(通过触发器或其他插入)
假设您不这样做并在表上更新或删除,它应该可以很好地扩展。您还可以根据日期范围在MySQL中对表进行分区。这将在几年后保持性能(我的第一个版本在4年内有1.4亿行,仍然很快)
编辑-检测更改
使用触发器路由-将允许您比较列,然后在时间线中执行插入,以提供历史更改
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.rating != OLD.rating THEN
INSERT INTO timeline ..
END IF;
END;
触发器(我会发现)似乎是最好的(和/或2个插入),但问题是我必须跟踪更改。例如,我们不仅有“评级”,还有“审查”,当有人想要更改数据时,客户会向我发送“评级=INT&review=TEXT”,然后我将更新数据库,即使它是相同的数据。有没有办法知道哪些collumns已更新?然后我将在时间线中插入类型、新评级/评论…感谢您的帮助。