Mysql структура для чего-то вроде Facebook - PullRequest
1 голос
/ 31 октября 2010

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

Т.е.. Пользователи, статус?

Грубый список поможет?

Спасибо

Ответы [ 3 ]

1 голос
/ 31 октября 2010

Все в FB - это люди, поэтому вам определенно понадобится таблица Person с самосвязанными отношениями «многие ко многим».Вы действительно захотите сделать это с помощью PHP ORM, например, доктрины, и это значительно упростит вашу жизнь.

Person: id: int, name: string

RelatedPerson: person_id: int, related_person_id: int, relations_id: int

Отношение: id: int, name: string

Есть еще много таблиц, но извините, я не могу перечислить их все.Совет - все должно быть вокруг людей.Что именно вы планируете делать?

0 голосов
/ 31 октября 2010

Я собираюсь договориться с Дмитрием об этом. Когда базы данных mysql достигают определенного размера, очень сложно заставить их работать так же быстро и гладко, как Facebook (иногда).

Что касается вашего вопроса, вам понадобятся как минимум пользователи, пользователи-друзья, статус, запросы на добавление в друзья и так далее. Я бы порекомендовал начать с малого.

0 голосов
/ 31 октября 2010

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

Мой совет будет НЕ использовать MySQL вообще, это бомба замедленного действия.Я имею в виду, что все начинается чудесно, быстро, счастливо.Тогда, когда ваша база данных увеличится в размерах, вы окажетесь в бесконечной битве за оптимизацию против MySQL, битве, которую вы не можете выиграть.

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