+ -
当前位置:首页 → 问答吧 → 人人网的架构是不是为了扩展性而设计了冗余。

人人网的架构是不是为了扩展性而设计了冗余。

时间:2011-09-23

来源:互联网

刚才看了人人的留言板,本来是打算给自己的项目找点思路的。
无意中发现,人人的的留言板上的头像居然用的是以前的头像。
于是我就开始怀疑了。人人的留言模块中的一个表应该是记录的用户的信息(其中应该包括用户的头像)。
这下有点出乎我的意料。
因为我一直以为留言板中的头像是直接调用用户的模块中的信息。
这是才发现,其实在留言模块中已经有了一个定义用户信息的表。
这个表虽然看起来有点多余(因为可以直接透过查找来获取用户的信息)。
但是仔细想想,其实这样冗余设计并不是一件坏事。因为,如果有一天,用户模块需要重新设计的话,
那么有可能相应的留言代码也要修改。留言模块中添加用户表,这样,留言模块就和用户模块一点关系都没有了。彻底解决了耦合的问题。也把耦合性降低到了最小。
另外还有一个好处就是,如果用户数据的丢失的话,那么留言模块也不会受到影响。因为留言模块中已经保存了它所需要的所有信息。
这样做仅仅有一点点不足的就是,如果用户更换头像的话,那么留言模块不能及时的更新头像。因为在留言模块中保存的留言时的用户信息。
当这个问题和前面两个问题比起来不算什么。
以上只是我的猜测(因为我也不知道人人到底是怎么架构的,它也不会告诉我的),希望各位程序员能够证据来支持我,或者反驳我。

作者: papa818   发布时间: 2011-09-23

围观学习!

作者: lyh2033   发布时间: 2011-09-23

引用楼主 papa818 的回复:
另外还有一个好处就是,如果用户数据的丢失的话,那么留言模块也不会受到影响。因为留言模块中已经保存了它所需要的所有信息。


好像很多网站都是这样的,就比如现在在用的csdn的论坛,你的回复头像是可以变的,但是你的积分是不变的,这样就把论坛的积分系统和用户系统分开了,挺好挺好的,呵呵……

作者: dzr1990   发布时间: 2011-09-23

可能是想偷懒吧。设计冗余的话,代码量和工作量会上去。一般就能直接调用就直接调用了。
以后写代码的时候看样子得改改了。
呵呵。

作者: papa818   发布时间: 2011-09-23