为了账号安全,请及时绑定邮箱和手机立即绑定

实施社交活动流的最佳方式是什么?

实施社交活动流的最佳方式是什么?

芜湖不芜 2020-02-03 13:53:58
我很想听听您的意见,认为这是实施社交活动流的最佳方法(Facebook是最著名的例子)。涉及的问题/挑战是:不同类型的活动(发布,评论..)不同类型的对象(帖子,评论,照片..)1-n位用户扮演不同的角色(“用户x在用户Z帖子上回复了用户y的评论”)相同活动项目的不同视图(“您评论..”与“您的朋友x评论”与“用户x评论..” =>“评论”活动的3种表示形式)..等等,尤其是如果您将其高度复杂化时,例如Facebook,例如,将多个活动项合并为一个(“用户x,y和z在该照片上发表了评论”关于模式,纸张等的任何想法或指针,关于实现这种系统,数据模型等的最灵活,有效和强大的方法。尽管大多数问题与平台无关,但我最终还是有可能在Ruby on Rails上实现这样的系统
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞


我创建了这样的系统,并采用了以下方法:


数据库表具有以下列:id,userId,类型,数据,时间。


userId是生成活动的用户

type是活动的类型(即写博客文章,添加照片,在用户的照片上发表评论)

数据是带有活动元数据的序列化对象,您可以在其中放入所需的任何内容

这限制了您可以在提要中对用户,时间和活动类型进行的搜索/查找,但是在Facebook型活动提要中,这并不是真正的限制。并且在表上具有正确的索引的情况下查找速度很快。


通过这种设计,您将必须决定每种事件类型都需要哪些元数据。例如,一张新照片的供稿活动可能如下所示:


{id:1, userId:1, type:PHOTO, time:2008-10-15 12:00:00, data:{photoId:2089, photoName:A trip to the beach}}

您会看到,尽管最确定的是照片的名称存储在其他包含照片的表中,而且我可以从那里检索名称,但是我会在元数据字段中重复该名称,因为您不想这样做如果需要速度,可以在其他数据库表上进行任何联接。为了显示来自50个不同用户的200个不同事件,您需要速度。


然后,我有一些类扩展了基本的FeedActivity类,以呈现不同类型的活动条目。事件分组也将内置在呈现代码中,以避免数据库的复杂性。


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 712 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信