我很想听听您的意见,认为这是实施社交活动流的最佳方法(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类,以呈现不同类型的活动条目。事件分组也将内置在呈现代码中,以避免数据库的复杂性。
- 3 回答
- 0 关注
- 771 浏览
添加回答
举报
0/150
提交
取消