首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户活动合并到一个具有公共表示的流中

将用户活动合并到一个具有公共表示的流中
EN

Software Engineering用户
提问于 2015-01-28 10:59:36
回答 1查看 669关注 0票数 0

我的社交网站

  • 论坛主题和帖子
  • 画廊图片
  • 用户配置文件上的专辑
  • 小组讨论
  • 分类

我想创造一个“流”的活动。它将以朋友关系或订阅为基础。一旦你是另一个会员的朋友,或者你订阅了他们的帐户,这个成员的所有活动都会出现在你的流中。

这有几个问题。我想这也是一个很常见的问题,虽然大多数应用程序只处理一种类型的数据(图片,论坛帖子,.)。

  1. 当前的信息存储在单独的MySQL表中。有一个用于上传到相册图片的表(以及一个有关相册的相关表)、一个用于线程的表、一个用于发布的表等等。我需要查询成员订阅的每个用户的所有活动。我确实尝试过用UNION创建一个视图,正如前面提到的这里。但这将创建一个庞大的查询,页面加载时间将不足以支持此功能。合并用户所有这些活动的最佳和最有效的方法是什么?
  2. 从图形设计的角度来看,将这些不同的数据集合并成一个公共表示的最佳方法是什么?这些图片显然最好用缩略图来表示。我可以在pinterest风格的画廊给他们看。另一方面,论坛帖子可能只包含文本。这会破坏布局。
EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-01-28 15:21:16

这方面的数据。您必须决定是否使用关系数据库?其他一些数据库变体可能更适合。

如果选择使用关系数据库,则可以使用以下表:

  1. 对活动流的时间维度建模的表,例如:<activity_id, user_id, timestamp>
  2. 包含在时间线/活动流中显示为摘要的缩略图/片段的表。使用blobs或文件系统引用来存储图钉。检查堆栈溢出上的问题性能-将文档存储为数据库中的Blobs有什么缺点吗?。表如下所示:<activity_id, mime_type, summary_blob> mime类型用于解释和呈现summary_blob。它允许支持大型和可扩展的活动类型集,并将所有活动存储在同一个表中。
  3. 包含全部活动的表格(如文字帖子、全尺寸图像、视频等)作为blobs或文件系统引用,即:<activity_id, mime_type, full_blob>

可提供下列考虑和备选办法:

  • 将时间戳表与summary_blob表组合。提议的解决方案将这些表作为单独的表,以允许除时间活动流之外的其他关系(例如,每个主题的活动、人与人之间的对话以及明确链接到他人的活动)。但是,如果您只需要基于时间的活动流,则时间戳和summary_blob表可以组合成一个表。
  • 摘要表和full_blob表是分开的,以避免在只需要摘要时将full_blob加载到内存中。如果将文件系统资源用于_full_blob_s,则可以组合这些表。

或者,您可以为每种类型的活动使用一个活动流表,其中包含单独的表,这些表引用到活动流键。这可能类似于您当前没有在需求解决方案中执行,具体取决于当前的实现。同样,您也可以使用摘要来加速加载。检查堆栈溢出上的问题oop -设计表示OO类层次结构的SQL数据库。例如:

代码语言:javascript
复制
Activitystream table: <activity_id, activity_type, user_id, timestamp>
Image uploads table: <activity_id, image_data>
Text posts table: <activity_id, post>

在这里,您仍然必须搜索所有表来创建活动流,但只有在activitystream表中,您必须通过时间戳搜索,在其他表中,您可以通过键选择相关记录。不要尝试合并所有表,而是让图像呈现路由使用图像上传表,让文本post显示器使用文本post表等等。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/271397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档