数据库 – Facebook DB设计可能应该是什么

我只是想知道facebook可以发布多少个db查询来呈现用户的主页.有没有人对facebook DB的设计有所了解.我听说它运行 MySql并且有数千个副本加上比DB服务器更多的内存缓存服务器.

Facebook数据是否被shard-ed?

如果是的话,它会转到每个分片并搜索我朋友的最新更新.在最糟糕的情况下,如果我有100个朋友并且假设facebook有101个分片,那么我的朋友可能会使用不同的分片. facebook怎么可能处理这个?

如果有人可以向我提供“如何为社交网站设计数据库”这样的内容,我将非常感激.我只是好奇!

解决方法

Facebook正在使用 LAMP structure.Facebook的后端服务使用各种不同的编程语言编写,包括C,Java,Python和Erlang,并根据需要使用它们.使用LAMP Facebook使用一些技术来支持大量的请求,比如

> Memcache – 这是一个内存缓存系统,用于通过缓存RAM中的数据和对象来加速动态数据库驱动的网站(如Facebook),以减少阅读时间. Memcache是​​Facebook的主要缓存形式,有助于减轻数据库负载.拥有一个缓存系统可以让Facebook在调用您的数据时尽可能快.
> Thrift (protocol) – 它是一个轻量级的远程过程调用框架,用于可扩展的跨语言服务开发. Thrift支持C,PHP,Python,Perl,Ruby,Erlang等.
> Cassandra (database) – 它是一个数据库管理系统,旨在处理分布在许多服务器上的大量数据.
> HipHop for PHP – 它是PHP脚本代码的源代码转换器,用于节省服务器资源. HipHop将PHP源代码转换为优化的C语言.执行此操作后,它使用g将其编译为机器代码.

如果我们进一步详细说明,那么回答这个问题会更长.我们可以通过以下帖子了解更多:

> How Does Facebook Work?
> Data Management,Facebook-style
> Facebook database design?
> Facebook wall’s database structure
> Facebook “like” data structure

相关文章

本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感...
今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的...
这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中...
本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际...
1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册...
sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看...