所以我在数据库概念上挣扎着一个新项目。
我需要一个可以在它们之间建立关系的事件数据库,它们必须在特定时间执行。
示例:
id:1, user_from:1, user_to:2, 时间:08:00
id:2, user_from:2, user_to:1, 当07:30
id:3, user_from:3, user_to:2, 时间:07:00
如果id 1 的用户在08:01登录,则必须执行与id为 1 的用户有关系的每个事件。
这些示例中的问题:
使用此示例,应该已执行所有三个事件,因为 1 与 2 有关系, 2 与 3 的。如果我将id 3 的事件更改为以下内容:
id:3,user_from:3,user_to:2,当09:00
id 3 的事件不应该被执行,因为'当' -index只是在08:01。
另一个问题:
如果id 3 的用户在09:00登录,则只应执行ID为 3 的事件。
我的问题:
有可能同时有超过10k个事件,但只有一个用于登录的用户,我不想计算所有事件的结果,我只想要那些事件与登录用户的关系。如何防止快速加载?
我的想法:
带有递归查询的MongoDB:
Recursive search on a collection in MongoDB
具有关系表的普通SQL数据库:
当新事件被添加到事件表中时,我将计算所有关系,因此当用户登录时我不需要关心它们。
感谢您的回复,并随时询问有关此问题的任何问题。我也对任何新的标题建议开放。很难描述......
答案 0 :(得分:0)
将这两件事分开:原始数据。解释数据的业务逻辑。在数据库中执行任何逻辑可能都不明智。
对于数据库方面,您似乎有一个包含3列的表:(user_from,user_to,when)。如果when
和user_from
之间只有一个user_to
,则您不需要id
。
当可能需要用您的应用程序语言编写时该怎么做的算法。并且它可能需要在处理之前获取整个表。听起来这个算法需要在登录时应用。
加载10K行非常简单。由于您对事件(user1 - > user2 - > eventx)有“间接”引用,因此跟踪数据库中的“树”可能比使用应用程序语言更昂贵。