различия между графиками и базой данных MYSQL в facebook? - PullRequest
0 голосов
/ 03 августа 2011

Я не могу понять, где Facebook действительно использует mysql:

Вся база данных может быть представлена ​​в виде графика:

Account - Like -> Comment
Account <- friend -> Account2
Account - Like -> Link

А что хранится в MySQL?

текст постов и заметок?

Есть ли в Facebook все эти объекты (учетная запись, сообщение, комментарий) в своей графической БД?

1 Ответ

1 голос
/ 03 августа 2011

Хорошо, я предполагаю, что все, что Вы упомянули, хранится в 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 из наших двух таблиц в одном запросе.

...