Database design 从用户跟踪到实时提要的基本数据流

Database design 从用户跟踪到实时提要的基本数据流,database-design,social-networking,feed,user-tracking,Database Design,Social Networking,Feed,User Tracking,有人能从数据模型的角度解释从用户跟踪到实时提要的流程吗?我的开发团队遇到以下问题: 当用户执行某项活动时,封装外形会记录到用户\活动表中,该表是所有用户封装外形的主表。这意味着需要跟踪的每个用户的每个操作都将写入此处 问题: 1) 一个活动是1:M。就像我可以在一张照片中标记10个人一样。很明显,我不会在活动表中为此编写10个foorprint。因此,我是否需要另一个表来存储活动详细信息 2) 由于此表记录所有对象上的所有活动,并将其输入活动提要表以输出到活动提要,因此提要需要知道活动中涉及的所

有人能从数据模型的角度解释从用户跟踪到实时提要的流程吗?我的开发团队遇到以下问题:

当用户执行某项活动时,封装外形会记录到用户\活动表中,该表是所有用户封装外形的主表。这意味着需要跟踪的每个用户的每个操作都将写入此处

问题:
1) 一个活动是1:M。就像我可以在一张照片中标记10个人一样。很明显,我不会在活动表中为此编写10个foorprint。因此,我是否需要另一个表来存储活动详细信息

2) 由于此表记录所有对象上的所有活动,并将其输入活动提要表以输出到活动提要,因此提要需要知道活动中涉及的所有对象,因此它可以说“tim照片中的X标记Mark,John,Sarah。”其中Mark,John,Sarah基本上是链接到其配置文件的用户对象。照片是链接到照片表的照片对象

上面是一个例子,但有许多对象,如电影、音乐、品牌、城市等。因此,系统需要从日志表到活动提要了解哪些对象是什么,以及它在哪里,以便将相关数据拉入提要。为此,我有两个列:object_id和object_type_id,其中object_type类似于“用户、照片、品牌等”),object_id是对象的id。但是如何将其与实际表连接呢

3) 最后,这种设计是我从跟踪数据到提要(即日志到日志表)的最佳方式吗?日志表可能有一个细节表,日志表与会话表连接。每2分钟安排一个corn作业将此数据拉入一个活动提要表,该表被非规范化,并从这些+对象中拉取数据bles用于直接读取实时提要

  • 2分钟的玉米作业也让我感到害怕,因为如果有很多记录,那么系统可能需要2分钟以上的时间来完成作业,然后会有积压。那么我可以使用其他方法吗
  • 记录10个操作中的每个操作,但添加一个对所有操作通用的activitybatchid,以便您可以跟踪同时发生的操作

  • 我还将activitybatchid写入队列表中进行处理,这是cron作业将读取的内容,以便将项目添加到提要表中。处理activitybatchid后,它将被删除

  • 我建议在这种情况下使用递归cron作业,它一次读取一行或一批行,然后处理,同时维护一个锁,以便其他进程无法读取此表。为了提高性能,您可以一次读取处理的行数。此外,如果此进程死亡,锁将在特定id后释放时间不多了

  • activitybatchid的处理将从activity表中读取相关数据,以构建必要的提要详细信息,因为这只需执行一次,所以应用程序不需要记住

  • 因此,基本上您最终得到的是:包含原始数据的活动表、包含要转换为提要的活动的队列表、包含用于显示或呈现的生成提要的提要表