最近关注了下SNS好友动态的功能,发现这个功能的技术点其实与微博使用技术很是相似.
不同点就是两者的数据量不同,SNS好友一般都有数量限制,而且在SNS的理论里,个人好友的合理数量在150个左右(最近有文章说Facebook的人均好友数是120人
).
最简单的数据表结构就是类似日志样的
ID //消息ID
UserID //用户ID
MsgType //消息类型,比如加好友、上传照片等不同的类型
EventMsg //消息的内容,这里我们可以用Json的数据格式来描述出不同的活动内容
CreateTime //消息创建时间
这是最简单的方法了,简单也就带来了问题
这个结构也是个数据库的结构,当用户做个一个动作之后,就会创建这样一个消息,并保存在数据库中,当显示好友的活动信息时,就从这张表里查询自己好友id
的数据,并按时间显示,这个做法是一个最简单的实现,但会出现一些问题,当你与一个用户成为好友之后,该好友之前发生的动作会显示出来,而不是在成为好友
时点之后的动作,同样,切断好友关系之后也有类似的问题,如果从业务角度和用户体验上可以接受的话,也没什么,但由于信息是按时间排序,有时候会给用户错
乱的感觉,还有,这个信息不能删除,如果删除了所有好友就看不到这条信息了,但在Facebook里是则是可以删除好友的动作信息的,这个方法还有一个问
题是,所有信息都放在一张大表里,在信息爆炸增长,个人好友也很多的情况下,查询效率会非常低,产生严重的性能障碍,如果对这张表做水平切分,则在实现上
复杂了许多,性能也未必好很多,接下来我们再思考是否有更好的解决办法。
对于以上两点问题:一是成为好友之前的信息也显示;二是不能删除信息.
可以做以下改进:
一种方法就是
首先看数据库设计,我们要把信息表和信息与用户的对应表分开,我们上面定义的数据结构保留,我们定义它的表名为Event,我们再新建一张表EventUser,结构如下
ID //主键
EventID //Event表的ID
FriendUserID //好友的ID
CreateTime //消息创建时间
对FriendUserID做索引,当用户发生动作时,首先将动作信息写入Event表,之后查找用户的所有好友,将EventID、好友ID逐条
写入EventUser表,当要显示自己的好友活动信息是,查询EventUser中FriendUserID等于自己ID的信息,并和Event表做一
个Join查询就可以了。
第二种方法就是复制信息,当出现一条新的动态之后,把在数据库中复制好友数量的动态.
这个方法也是新浪微博的第一个版本架构.
这种方法相当简单,单库单表,将发表/订阅变成了简单的insert/select.
当数据量很大的时候,这个架构是不能胜任的,会出现数据延迟,锁表等问题.
必须对推模式进行改进.
同步:http://www.java1995.cn/blog/item/482
分享到:
相关推荐
【Java简单微博系统】是一个基于JavaEE平台开发的社交网络服务(SNS)应用,它提供了丰富的社交媒体功能,包括好友关系管理、粉丝关注、信息发布、帖子转发、评论互动以及内容收藏和搜索等功能。这个系统适合初学者...
社交网络服务(Social Networking Services, SNS)类网站API通常提供了丰富的接口,支持用户信息管理、好友关系管理等功能。 - **Facebook API**:Facebook提供的API支持用户身份验证、数据检索、消息发布等操作。 -...
报告可能详细解读了SNS平台的各种功能,如个人资料创建、好友添加、动态分享、消息推送、群组创建、游戏应用、广告投放等,以及这些功能如何促进用户间的互动和信息交流。同时,可能会讨论新兴功能,如虚拟现实、...
此外,微博的传播机制使其信息能迅速扩散,而SNS网站中的信息往往局限于“好友关系”的小圈子内,不利于信息的广泛传播。 新媒体时代,用户的需求也发生了变化。他们追求信息获取的精准、快捷以及分享的便利。微博...
SNS平台不仅促进了用户之间的交流与互动,还提供了多样化的社交功能,如个人主页、好友添加、消息传递、分享动态、创建或加入兴趣小组等。随着互联网技术的发展,SNS平台已经成为人们日常生活中不可或缺的一部分。 ...
3. **时间分区**:针对时效性强的业务,如动态和微博,依据时间进行数据分片,过期数据直接删除,简化数据管理,提高删除效率,减轻前端业务压力。 4. **灵活扩展**:对于需求变动频繁的业务,如任务系统,设计可...
微型社区是一种将社交网络服务(SNS)与微博功能相结合的在线平台设计模式。这种模式旨在提供更加便捷、高效的社交体验,让用户既能享受社交媒体的深度互动,又能利用微博的快速分享特性。在“微型社区”中,用户...
- 如果SNS网站包含位置分享,JS组件可以与Google Maps或高德地图等服务集成,展示用户的位置信息。 11. **富文本编辑器**: - 用户发布内容时,富文本编辑器提供文本格式化、插入图片和链接等功能,如TinyMCE或...
7. **迷你博客**:类似微博的简短文字分享平台,用户可以快速发布和浏览他人的动态。 8. **写迷你博客**:专门的创作界面,方便用户撰写并发布迷你博客。 9. **我的迷你博客**:用户的迷你博客集合,展示所有已...
最精准的手游推广和营销案例.社交媒体(Social Media)也称社会化媒体,指...SNS是以真实好友为核心的强关系型推广平台 ,比如人人网和Facebook;微博是以话题为纽带的弱关系型信息发布平台,比如新浪微博和Twitter。
iPhone和Android智能手机客户端软件技术方案主要针对的是集成了Web2.0技术,并融合了BBS、SNS、博客、微博等多种网络应用的大学生互动网站。方案从整体上讲解了客户端开发的方式、系统支持的运行版本,以及技术方案...
在产品预想部分,报告指出随着智能手机的普及和摩尔定律的推动,手机终端多样化应用不断涌现,特别是以微博为代表的SNS社交服务在全球范围内引发了巨大反响。在中国,新浪微博因其广泛的用户基础和媒体影响力,成为...
iOS和Android的竞争加剧,而SNS社交网络如Facebook和微博的崛起,改变了人们的沟通方式。在国内,新浪微博在移动端的需求尤为强烈,但现有客户端广告较多,界面设计保守,引发了用户不满。 - **微博简介**:微博是...
采用PHP MySQL技术平台,微博 应用的产品模式,同时拥有iphone、android客户端、wap、3G版界面。通过应用、插件、风格包等丰富的扩展机制可以后台关闭和开启各种功能。是建立社交网站、微博平台、移动互联网创业的...
采用PHP MySQL技术**台,微博 应用的产品模式,同时拥有iphone、android客户端、wap、3G版界面。通过应用、插件、风格包等丰富的扩展机制可以后台关闭和开启各种功能。是建立社交网站、微博**台、移动互联网创业的...
- 好友 模块 (Friends) (功能:查找好友、站内邀请好友、邮件邀请好友、导入好友邮箱、添加好友关系、删除好友关系、微博心情说说) - 站内信 模块 (Messages) (功能:发送站内信、删除站内信,回复站内信) - 图片...
- 好友 模块 (Friends) (功能:查找好友、站内邀请好友、邮件邀请好友、导入好友邮箱、添加好友关系、删除好友关系、微博心情说说) - 站内信 模块 (Messages) (功能:发送站内信、删除站内信,回复站内信) - 图片...