Как дизайн Facebook решает проблему с производительностью для получения списка друзей? - PullRequest
0 голосов
/ 08 марта 2011

У меня есть проблема веб-дизайна относительно производительности, чтобы спросить совета. На веб-сайте есть много персональной информации, например, друзья пользователя Facebook. Персонализированный Я имею в виду разные пользователи имеют разные списки друзей.

Предположим, что список друзей хранится в базе данных, такой как Oracle или Mysql, каждый раз, когда пользователь нажимает Home на своей странице в Facebook или при входе в систему, нам необходимо снова прочитать базу данных. Каждый раз, когда пользователь добавляет / удаляет друга, базе данных требуются некоторые операции обновления.

У меня такой вопрос, я думаю, что производительность (например, параллелизм транзакций чтения / записи) базы данных ограничена, и если Facebook использует базу данных для хранения списка друзей, трудно реализовать хорошую производительность. Но если не использовать базу данных (например, MySql или Oracle), как Facebook реализовала такую ​​функцию персонализации?

Ответы [ 4 ]

2 голосов
/ 08 марта 2011

Из того, что я могу собрать, они используют кластер MySQL, memcached и множество пользовательских программ. Они открывают исходные коды: http://developers.facebook.com/opensource/

2 голосов
/ 08 марта 2011

Это довольно хорошая статья о технологии позади Facebook.

Как сказал Джастин, это похоже на комбинацию Memcached и Cassandra.

2 голосов
/ 08 марта 2011

Facebook и другие крупные сайты, как правило, используют слой кэширования для хранения данных такого типа, чтобы вам не приходилось совершать поездки в базу данных каждый раз, когда вам нужно ее извлечь.

Один изнаиболее популярным является Memcached (который, насколько я помню, используется Facebook).

Вы также можете проверить, как некоторые сайты используют базы данных NoSQL в качестве слоя кэширования.Я на самом деле только что прочитал вчера статью о том, как StackOverflow использует Redis для обработки своего кэширования.

1 голос
/ 08 марта 2011

решение состоит в том, чтобы использовать сверхбыструю базу данных в стиле NoSQL.Начните с превосходного урока Саймона Уиллисона по redis , и все станет ясно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...