Ответ 1
Ваш вопрос кажется интересным и любопытным:)
1) Ну ... конечно, данные хранятся на дисках, а не в барах. Диски имеют системы, которые предотвращают отказ, в частности, RAID-5, например. Резервирование - это ключ: если одна система выходит из строя, есть еще одна система, готовая занять его место. Существует также совместное использование избыточности и рабочей нагрузки... есть два компьютера, которые работают параллельно и делят свои рабочие места, но если один останавливается только на одном из работ и занимает полную рабочую нагрузку.
В таких местах, как google или резервирование facebook, это не 2, это 1200000000:) И подумайте также, что данные не находятся в одной ферме серверов, в Google есть несколько датацентров, связанных друг с другом, поэтому, если одно здание взрывается, другое место займет его место, например.
2) Нелегкий вопрос, но обычно эти системы имеют большой кеш для дисковых массивов, поэтому чтение и запись данных на диске происходит быстрее, чем на наших ноутбуках:) Данные могут обрабатываться параллельно несколькими параллельными системами, и это ключ к скорости таких сервисов, как facebook.
3) Конец графика не бесконечен. Таким образом, это возможно с реальной технологией.
Сложность вычислений при исследовании всех соединений и всех узлов на графике равна O (n + m), где n - число вершин, а m - количество ребер. Это означает, что оно является линейным по отношению к числу зарегистрированных пользователей и количеству подключений между пользователями. И оперативная память в эти дни очень дешевая.
Быть линейным ростом легко добавлять ресурсы, когда это необходимо. Добавьте больше компьютеров, чем больше вы разбогатеете:)
Считайте также, что никто не будет выполнять реальный поиск для каждого node, все в facebook вполне "локально", вы можете посмотреть непосредственного друга одного человека, а не друга друга друга.... это было бы не полезно.
Получение числа вершин, непосредственно связанных с вершиной, если структура данных хорошо выполнена, очень проста и быстра. В SQL это будет простой выбор, и если таблицы будут хорошо проиндексированы, это будет очень быстро, а также не очень зависит от общего числа пользователей (см. Понятие хэш-таблиц).