SQL

Как ВК хранит фотографии?

Я знаю что есть файловая система. Но в таких огромных сервисах как ВК, наверное сложно все хранить в файловой системе. Ведь если я открываю в браузере вк, он по идее может( или должен) загружать все 50 млрд. изображенией. По этому я предполагаю что используется база данных, из которой легко найти по ID. На сколько я прав?

Моя личная проблема в том что я очень долго не могу понять как загружать и выгружать ИЗОБРАЖЕНИЕ из БД. Конкретно на сайте через php
Абсолютно не прав. В базе данных может храниться информация об изображении (например, в какой директории какого сервера находится изображение), но само изображение хранится именно в файловой системе. Хранить изображение в БД - лишь снижать производительность базы данных.

VK - это не один сервер, а тысячи серверов, по которым раскиданы файлы. Даже если серверов для хранения изображений всего 1000, на каждый из них приходится уже 50 миллионов, а не миллиардов фотографий. А серверов куда больше, чем тысяча.

Что касается PHP, то идея та же самая: храним само изображение в файловой системе. Но чтобы ускорить доступ к изображению, раскидываем изображения по множеству директорий. Например, одна из стандартных схем: директория pictures содержит 256 поддиректорий (c именами от 00 до FF), в свою очередь, каждая из этих 256 поддиректорий содержит ещё 256 директорий - всего 65536 поддиректорий второго уровня. И уже по этим 65536 директориям в [псевдо]случайном порядке раскидываются файлы. Этого более чем достаточно, чтобы обеспечить быстрый доступ к десятку миллионов изображений.

Что касается самого раскидывания... Например, при сохранении файла берём хэш SHA от microtime(). Два первых символа хэша - имя поддиректории верхнего уровня, два следующих - имя поддиректории второго уровня, остальная часть хэша - собственно имя файла.
Информацию, необходимую для доступа к изображению, сохраняем в БД.
Baha Marathon
Baha Marathon
90 655
Лучший ответ
Манас Карабаев Огромное спасибо, я понял. Вот и займусь поддиректориями и хешами.
Это коммерческая тайна вообще-то
Илья Круглов
Илья Круглов
1 390
На серверах
BB
Bauyrjan Bygybai
506