我想让日志模块在其余后端服务器上的用户活动。我们的web服务的UI转换与用户的活动历史。
,有用户和项目。(用户-项目(M:N))
用户的项目列表按最近点击的项目排序。我可以做一些像下面这样的东西,//创建userAction表
{ user_id: 1, targetDocument_id: 2, action: 'view', targetEntity: 'project', createdAt: '2022-06-29 08:22',...}
如果用户请求他们的项目列表,我查询userAction表并手动排序。或者,我可以通过向项目表中添加自定义字段来轻松实现此功能。但是我认为有更好的练习方法。不是吗?. .你有什么建议吗?
谢谢。
速度够快吗?与索引?然后让你所拥有的。如果不需要,就不要优化。
如果您发现这种方法慢得令人无法接受,您可以对数据进行反规范化,并创建如下表:
user_id
project_id
last_access_time
您可能已经有一个包含前两个字段的表,因此添加一个新字段将使非常快。
你需要去规范化吗?这取决于数据的大小和你期望的规模。如果您有很多用户并生成大量日志条目,我怀疑非规范化方法很快就会变得可取,但如果您有一个用户每周使用该应用程序几次,那么您可能永远无法实现。
非规范化是有代价的。它是更多的代码,它会重复数据,所以当你(认为)有好处的时候使用它。