Каково оптимальное решение СУБД для крупных сайтов социальных сетей, таких как Facebook? - PullRequest
1 голос
/ 10 февраля 2010

Я нашел два возможных решения для реализации структуры базы данных для сайтов социальных сетей, таких как Facebook.

1 .: Создание таблицы «Отношения» и вставка в нее каждой дружбы. Например: пользователь A добавляет B в качестве друга (A-B), затем логика помещает (A-B) и (B-A) в таблицу «Отношения». Затем он индексирует первый атрибут.

2 .: Создание уникальной таблицы для всех пользователей, содержащих друзей. Большинство баз данных работают с почти 2 миллиардами уникальных таблиц, поэтому это не будет проблемой; тем не менее, размер базы данных будет почти в 300 раз больше (в среднем 300 друзей на пользователя). В этом случае запрос друзей не будет проблемой (так просто, как SELECT * FROM)

Есть идеи? Я где то не прав? Спасибо всем.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2010

Табличное решение для пользователя, которое вы описываете, звучит в основном как функция разделов Oracle.

Не совсем связано, но я рекомендую этот потрясающий пост: Краткое содержание презентации «Высокая производительность в массовом масштабе: уроки, полученные на Facebook»

Я думаю, что таблица дружбы - это наименьшее из их опасений:)

1 голос
/ 11 февраля 2010

Вам не нужно беспокоиться о максимальном размере стола и подобных вещах. Чтобы создать такой сайт, как Facebook, вы все равно должны разделить / разделить все свои таблицы на несколько компьютеров.

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