日期:2014-05-17  浏览次数:20711 次

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

------解决方案--------------------
探讨
另外还有一个好处就是,如果用户数据的丢失的话,那么留言模块也不会受到影响。因为留言模块中已经保存了它所需要的所有信息。

------解决方案--------------------
也可以去看看uchome的数据库设计
------解决方案--------------------
实际上一个大的系统由若干子系统组成的,每个子系统有自己的用户信息管理模块,但是各个子系统会共用一个公共的用户基本信息比如注册id、邮箱、密码啊,象人人网这样因为是一个网站域名,信息验证都是后台的你可能察觉不到,但是淘宝和支付宝就很明显了