Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

SNS用户数据表设计方案 以Facebook和UcHome数据表设计分析为例

[复制链接]
beany1688 发表于 2009-10-14 00:55:46 | 显示全部楼层 |阅读模式
SNS用户数据表设计方案 以Facebook和UcHome数据表设计分析为例
本博客所有文章均属原创作品,如有转载,请注明作者:biuuu,来源:http://www.biuuu.com/?p=315
SNS与博客最大的区别在于关注重点不同,后者以博客为平台,基于博客ID而产生的日志,话题,照片,群组,视频,分享,好友等等,而前者强者个人,基于人ID而与其相关的日志,话题,照片,群组,好友等等,虽然功能上差不多,但关注重点不同,因而对数据库的设计而言,user_id成为全部数据设计的核心,根据我对facebook,ucHome两个数据表结构分析来看,基本上所有的功能都是通过user_id引导,从而延伸到相关的组件,如日志,照片,群组等等,或者是个人的东西,或者是大家的东西,但都有一个共同的特点:都离不开user_id。

Facebook的数据结构分析:
,主要基于用户表,这是最基础数据源,设计中避免数据字段过多进行了数据字段分离设计,如学校状态,时间分区,安全问题等,这些分离出来的字段单独成表,既有利于降低数据查询的压力,而且便于扩展,这个数据设计思路是facebook设计数据库的灵魂(个人观点)。我的分析如下:
1,facebook数据表设计,能分离的字段尽量分离,这主要体现在facebook的数据库小表非常多,同样一张数据表,完全可以与其它表合并,但其通过一个user_id查找,再根据相关的ID查找其它信息,实现字段分离。
2,对比ucHome数据表设计,同样一个功能,facebook使用3-4张表设计,而UChome却只用一张表,最突出的特点在于,UcHome数据的约束字段(如访问权限)附属在信息(如每个篇日志,每一张照片中),但facebook却分离了这此信息,非常灵活。
,Facebook数据中有一张基础档案表,个人认为这是一张非常特别的表,原因如下:
1,表字段是全是ID集合表,如:user_id,intersted_id等等,可以说是一张十通八达的表,通过这张表可以获取用户整个信息,而这些信息对于SNS来说,就是我们上面说的关注的重点。
2,为什么要这样设计?个人认为,提高数据表的查询能力,这种纯ID的字段表要快得多,而每次获取的信息只是个人信息中的一小部分,因此,对于SNS来说,设计数据库要着重在用户资料的细化上,因为大部分查询都是查询用户的一系列操作等上。
,扩展功能,其实这些所谓的功能完全非常独立,功能上也互不相干,对于日志,群组,相册等等功能来说,只需要一个东西,user_id。其它都完全可以独自处理。同样,facebook的扩展功能数据表设计也是表分离,表结构尽量分离最小化,如:日志(日志表,日志回复表,日志图片表)。

原创文章如转载,请注明:转载自 必优博客 http://www.biuuu.com/
本文链接地址:http://www.biuuu.com/p315.html
回复

使用道具 举报

FBI_BBS 发表于 2009-10-14 06:15:42 | 显示全部楼层
钻研的人。
回复

使用道具 举报

scckfzx 发表于 2009-10-14 09:21:19 | 显示全部楼层
建议你学学MYSQL表的优化设计,你说的其实就是一句话,数据的水平切分而已!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-13 14:19 , Processed in 0.142420 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表