Хорошо, я предполагаю, что все, что Вы упомянули, хранится в MySQL.Каждый фрагмент данных, который может быть изменен, включая:
- Пользователи
- Сообщений
- Комментарии
- Информация о загруженных изображениях (но не изображениях)сами)
- Likes
- Данные о пользователях, заходящих в систему
- Реклама
- Данные о пользователях, которые любят / не любят рекламу
- Настройки пользователя
и т. Д.
Любые данные, которые могут быть изменены, должны быть сохранены в базе данных для индексации и быстрого доступа.Файловая система хороша, если вы хотите записывать только данные, например, ведение журнала.Или если вам нужен только доступ ко всем данным сразу, а не к их частям.
Но если вам нужно, чтобы данные были структурированы и готовы к быстрому доступу, то вам нужно использовать базу данных.Возможно, вы захотите прочитать о двоичных деревьях: http://en.wikipedia.org/wiki/Binary_tree
О Facebook: Если бы мне пришлось угадывать, я бы сказал, что, вероятно, существуют сотни других баз данных.У меня нет доступа к их серверам, поэтому я не могу это прокомментировать :) Но в качестве другого примера, если вы устанавливаете WordPress, то он создает 11 разных таблиц.http://codex.wordpress.org/Database_Description
PS.Однако нет никаких причин, по которым Facebook должен использовать MySQL.Существует множество различных баз данных.
РЕДАКТИРОВАТЬ Спасибо, что указали, что я неправильно понял Ваш вопрос.
Давайте рассмотрим этот случай: Аккаунт <- друг -> Аккаунт2
Как уже говорилось, у них есть таблица типа «Пользователи».
Таблица пользователей будет иметь столбцы:
- ID (имеет ПЕРВИЧНЫЙ КЛЮЧ. Это предназначено дляприсвойте уникальный идентификатор каждой строке.)
- Имя пользователя (текстовое поле с некоторой длиной, например, 64 символа)
- ... и многие другие ...
Теперь появится таблица «Друзья».Он будет иметь поля:
- ID (опять же, ПЕРВИЧНЫЙ КЛЮЧ)
- Person1
- Person2
Оба поля Person1 и Person2 будутбыть целыми числами, указывающими на идентификатор в таблице «users».
Таким образом, если пользователи таблицы имеют три строки:
ID Username
1 rodi
2 rauni
3 superman
Тогда таблица «Friends» будет, например:
ID Person1 Person2
1 1 2
2 2 1
3 1 3
4 3 1
Здесь строка 1 означает «Роди дружит с Рауни», а строка 2 означает, что «Рауни дружит с Роди».Это избыточно, но я хотел сохранить простой пример.
Вот хороший учебник: http://www.tizag.com/mysqlTutorial/mysqltables.php Там есть много страниц, просто продолжайте нажимать Далее, чтобы пропустить то, что Вы уже знаете (я незнаю, сколько вы уже знаете)
Это касается объединения информации из двух таблиц: http://www.tizag.com/mysqlTutorial/mysqljoins.php
Вы можете использовать это для выбора всех друзей rodi из наших двух таблиц в одном запросе.