Посоветуйте с организацией хранения большого кол-ва фотографий

12
Mutabors
На сайте с 17.09.2012
Offline
127
#11

3м фото, если полноразмерные, то объема тут 15тер получается. Для базы уже великовато. Тогда действительно только на папки, причем папки совершенно не нужно привязывать ни к дате ни к чему то еще. Рандомное имя и все. А ярлыки и всю прочую информацию включая даты добавления, модификации и т.д. уже в базе храните.

Самый продвинутый и надежный SSD хостинг рунета с изоляцией сайтов по 115 руб! (http://beget.ru/?id=332651) Контекстная реклама и продажи. Конкурентные и серые темы. Дорого! Не трать время на рутину! Ее сделают за копейки! (http://www.work-zilla.com?ref=143498)
G
На сайте с 16.02.2011
Offline
42
#12
Mutabors:
причем папки совершенно не нужно привязывать ни к дате ни к чему то еще. Рандомное имя и все.

в таком случае картинки будут лежать не равномерно, т.к. удаление 1000 картинок из папки ЙЦУКЕН никак не ставит её более приоритетной на закачку туда новой графики.

дани мапов:
Можно и так, а можно обойтись двумя счетчиками. В одном счетчике хранится номер текущей папки, куда загружаются файлы, в другом - число файлов в папке. При загрузке каждого файла, увеличиваем второй счетчик, когда число файлов достигнет 2000, увеличиваем первый и обнуляем второй, файлы начнут загружаться уже в новую папку. И так по циклу.

Это при загрузке, тут всё верно. а если, скажем, из папки 1 удалить 1000 файлов, ну и из папки 2 еще 500? счетчики будут продолжать плодить папки. при работе с массивом и добавлении файлов в наименее населенную папку, такого не произойдёт.

Хотя это уже технические нюансы)

V
На сайте с 05.08.2007
Offline
87
#13
R34-zevs:
Сайт должен хранить 3 миллиона фотографий. Фотографии добавляются/удаляются/заменяются. Подскажите, как лучше организовать хранение файлов? Стоит ли все хранить в одной папке, или хранить например по 2000 файлов в каждой папке, а потом создавать программно новую.
foxi:
можно брать первые 3 символа от md5 имени (или от самого файла) и этими 3 символами называть папку , тогда будет примерно равномерно распределено в 4096 папки.

R34-zevs, обратите внимание, например, как squid/nginx/eaccelerator и другие хранит свои дисковые кеши, и Вы сразу получите ответ на свой вопрос. Это одно, двух, реже, трех уровневая система папок на основе md5 от имени (или от самого файла), как уже отметил foxi. Думаю, этот вариант уже проверен теорией и практикой и тратить время на поиск чего другого - занятие сродни изобретению очередного велосипеда.

---

Виктор

С уважением, Victor (http://adm-lib.ru)
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#14

Поддерживаю систему с иерархией на основании md5.

В принципе особой разницы нет как делить фото, правильно замечено, главное что бы они в одну директорию все не попались, а так по 1-2-3 тысячи файлов на каталог - и думаю проблема будет решена.

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
SX
На сайте с 15.07.2008
Offline
79
#15

если с md5 то хеш хранить надо или на лету генерить?

если хранить - лишняя инфа место занимает... это же 3м фоток (а может же быть и больше)

ежели с лёту всё организовать - то тут уже встаёт вопрос сколько фоток на страницу будет выводить... сколько раз md5 будет вызываться.. если проект посещаемый - то это лишняя нагрузка..

дата же, я думаю, в БД хранится по-любому.. тут уже смотреть надо какой проект и что за/чьи фотки.. если фотки пользователей, можно из ID/логина папки делать, и уже в неё заливать фотку.. либо ../первая буква логина/логин/фотки/..

вариантов тыща, главное чтобы лишнего места не занимала инфа и на производительность не влияла :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий