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

12
R34-zevs
На сайте с 15.07.2006
Offline
238
600

Сайт должен хранить 3 миллиона фотографий. Фотографии добавляются/удаляются/заменяются. Подскажите, как лучше организовать хранение файлов? Стоит ли все хранить в одной папке, или хранить например по 2000 файлов в каждой папке, а потом создавать программно новую.

Агентство недвижимости Фабрика Жилья (http://xn--80aacvicll3bzbzgqb.xn--p1ai/)
Mik Foxi
На сайте с 02.03.2011
Offline
1215
#1

3 млн файлов это мелочи. разбейте их по папкам, например 3000 папок по 1000 фоток = 3 млн.

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
R34-zevs
На сайте с 15.07.2006
Offline
238
#2

foxi, да, но они у нас со временем будут расти, т.е. предлагаете каждый раз создавать папку и помещать туда строго 1000 файлов?

SX
На сайте с 15.07.2008
Offline
79
#3

как интенсивно будут добавляться фотографии?

можно по дате разбить...

название папки - текущая дата.. 2013-12-04 или

папка в папке - ../2013/12/04/.. ну или как удобнее.. :)

можно строго по 1000, можно больше... главное чтоб не все в 1 папку :)

C
На сайте с 04.02.2005
Offline
291
#4

Также нужно учитывать источник фотографий.

Пользователи, оперативная съемка, прочее.

Mik Foxi
На сайте с 02.03.2011
Offline
1215
#5

можно как предложил SpaceX по дате, можно строго по тыще, можно брать первые 3 символа от md5 имени (или от самого файла) и этими 3 символами называть папку , тогда будет примерно равномерно распределено в 4096 папки.

дани мапов
На сайте с 06.09.2012
Offline
204
#6

Я бы сделал строго 2000 в папке, по моему самый лучший вариант.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
IL
На сайте с 20.04.2007
Offline
435
#7
дани мапов:
Я бы сделал строго 2000 в папке, по моему самый лучший вариант.

вот строго-строго? А если кто-нибудь удалит фотку? :D

p.s. вариант с несколькими уровнями вложенности.. примерно так:

11/31/1131blablabl.jpg

12/25/1225blablabl.jpg

по первым символам от любого хэша - выше про md5 упоминалось (последним от microtime) для равномерности итд.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
дани мапов
На сайте с 06.09.2012
Offline
204
#8
ivan-lev:
вот строго-строго? А если кто-нибудь удалит фотку? :D

Не так написал, имелось в виду, чтобы одинаковое число в каждой папке было. Ну удалит и удалит, лишь бы не добавил :)

G
На сайте с 16.02.2011
Offline
42
#9

для того, чтоб равномерно по папкам распределять, потребуется массив(табличка в БД) вида ключ=>значение. ключ - имя папки, значение - количество файлов.

при добавлении соответственно выбирать папку с наименьшим количеством файлов.

дани мапов
На сайте с 06.09.2012
Offline
204
#10
glukon:
для того, чтоб равномерно по папкам распределять, потребуется массив(табличка в БД) вида ключ=>значение. ключ - имя папки, значение - количество файлов.
при добавлении соответственно выбирать папку с наименьшим количеством файлов.

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

12

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