我一直想知道Facebook如何设计朋友< - >用户关系.
我认为用户表是这样的:
user_email PK
user_id PK
password
Run Code Online (Sandbox Code Playgroud)
我用用户的数据(性别,年龄等通过用户电子邮件连接,我会假设)来计算表格.
它是如何将所有朋友连接到此用户的?
像这样的东西?
user_id
friend_id_1
friend_id_2
friend_id_3
friend_id_N
Run Code Online (Sandbox Code Playgroud)
可能不是.因为用户数量未知并且将会扩展.
sql database-design facebook database-normalization database-table
我一直想知道facebook如何管理你可以"喜欢"的所有不同事物的数据库设计.如果只有一件事需要,这很简单,只是你喜欢的外键和你是谁的外键.
但是必须有数以百计的不同表格,你可以在Facebook上"喜欢".他们如何存储喜欢的东西?
在我的申请中,我想在评论或帖子中提及他/她时通知用户.
用户句柄@user_name类似于Facebook.
提及的数据库表如下所示:
Mention
mentioned_by: user_id (foreign key)
user_mentioned: user_id (foreign key)
comment_id: (foreign key)
post_id: (foreign key)
Run Code Online (Sandbox Code Playgroud)
我无法想出实现它的方法.Facebook/Twitter如何做到这一点?
我决定使用的是使用ActiveRecord callbacks/ Observer design pattern,每当新的评论/帖子保存到数据库时,我都可以浏览帖子/评论的内容,并留意任何提及,然后根据需要执行通知.
我觉得有一些缺失的东西,我没有把它弄好.
这是最好的方式吗?
twitter notifications facebook ruby-on-rails observer-pattern
我需要像Facebook一样创建一个墙系统(用户可以发布消息,视频,图像,事件等).有没有人创造类似的东西?你怎么建议我准备数据库?
我只是想知道facebook可以发布多少个db查询来呈现用户的主页.有没有人对facebook DB的设计有所了解.我听说它运行MySql并且有数千个副本以及比DB服务器更多的内存缓存服务器.
facebook数据是否被shard-ed?
如果是,它会转到每个分片并搜索我朋友的最新更新.在最坏的情况下,如果我有100个朋友,并假设facebook有101个分片,那么我的朋友可能会使用不同的分片.facebook怎么可能处理这个?
我会非常感激,如果有人能提供我SEOM提示或指针朝着类似"如何设计社交网站一个DB".我只是好奇!
database architecture database-design facebook social-networking