Нравится мне этот веб-сайт и изучать его архитектуру одно удовольствие. Правда сегодня, обнаружил то, что мне крайне не понравилось. А суть, собственно, в следующем:
Решил практически подсчитать, сколько всего на данный момент загружено фотографий ВКонтакте. Результат поразил, всего лишь ~ 280 млн, но никак не 25 млрд согласно заявлению Павла Дурова. Даже если учитывать разного рода миниатюры 25 млрд не получается, максимум — 2 млрд файлов, но не фотографий!
Вычисляется это просто, загружаете сначала одну фотографию, затем ещё парочку в разных местах, для верного подсчёта. Фото в сообществах, публичных и личных страницах принадлежат одной и той же таблице в базе данных VK. Ранее удалённые идентификаторы используются повторно, иными словами, присваиваются вновь загружаемым фотографиям, таким образом, мы получаем цифру 278264994 фотографий в базе VK на 21:36 11 февраля 2012 г.
На серверах (cs****. vk.com/) из-за боязни дефрагментации, естественно их в разы больше, а уникальных ровно столько, сколько есть на самом деле. Цифра эта публичная и видна в URL-адресе.
Интересно, зачем Дурову было давать «слегка» завышенную информацию на конференции DLD в Мюнхене?
Поигравшись ещё встроенным просмотрщиком заметил одну немаловажную деталь. При загрузке сохраняется не только оригинальное изображение с рядом миниатюр, но и 4 варианта поворота фотографии. Опытным путем выяснил префиксы:
w_ — оригинал (при загрузке фотографий 1600х1200, 1920х1080, 5000х3328, 10000х6656 почему-то не создался)
x_ — миниатюра <= 604 пикселя по ширине
y_ — миниатюра <= 807 пикселей по ширине
z_ — миниатюра <= 1280 пикселей по ширине
Выявить предназначение 8-значного шестнадцатеричного числа пока не удалось. Однако, знаю точно, что это не часть md5. Доказательство на php.
Итого: 1 загруженная вами фотография равна 16 (при добавлении на стену — ещё больше) файлам на сервере ВКонтакте. Следовательно, слова Павла о 25 млрд файлах фотографий могут быть и не преувеличены, но не самих фотографий. Также делаю вывод, что ВКонтакте не сохраняет оригинал фотографии, а все загружаемые обрезает до 1280 пикселей по ширине.
Бонус. Информация о снимке (EXIF) при загрузке стирается. С какой целью? Сам сайт vk.com работает на nginx/1.0.11. Узнать можно добавив в URL-адрес любой страницы завершающий слэш, плюс, минус, любой другой знак, даже точку или запятую и вы увидите 404 ошибку, а можно еще проще, например так: vk.com/я.
Прошу не воспринимать эту публикацию как критику VK. Я с большим уважением отношусь к команде ВКонтакте и самому Павлу. Моё личное исследование не сошлось с публичными данными. Хотелось бы узнать, в чём же я ошибся или каковы причины были у руководства VK, чтобы так завышать цифры на конференции?
С уважением, пользователь VK, Серёжа Преловский.