Задать вопрос

Архитектура хранения картинок

Есть несколько сотен тысяч картинок (все приличные:)))), под номерами от 1 до… Чтобы их удобней было обрабатывать я создал структуру папок, и файлы хранятся так:

файл 1131.jpg хратится в images/000000/00000/1000/1131.jpg
файл 2131.jpg хратится в images/000000/00000/2000/2131.jpg
файл 258131.jpg хратится в images/200000/50000/8000/258131.jpg
и т.д.

тем самым у меня в папке хранится по 1000 картинок. При этом, при синхронизации я не имею проблем по FTP их закачивать на сервер (часть серверов выводят только первые 2000 файлов из директории). Но вот чтобы писать и читать файлы из таких директорий сложно, надо сделать 3 деления, чтобы понять к какому разряду относится эта картинка.

А как вы храните большие объёмы файлов? И так чтобы удобно с ними по FTP работать?
  • Вопрос задан
  • 2781 просмотр
Подписаться 8 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
Wott
@Wott
ftp очень неудобный протокол вообще. Для каких-то операций я качаю архив, а потом `sudo cp -ruv `
И еще — мне кажется что id для картинки лишняя вещь — обычно я храню по имени файла по схеме 1:2 ( /n/am/name.jpg )
Ответ написан
casey
@casey
А почему бы вам не хранить путь к картинке там же, где вы храните имя файла? С одной стороны — денормализация конечно, с другой — вполне компромисс.
Ответ написан
toxicmt
@toxicmt
кофаундер Хекслета
я на эту тему статью писал habrahabr.ru/blogs/webdev/101654/
Ответ написан
Комментировать
casey
@casey
Требования взаимоисключающие :-) Когда большой объем + отказоустойчивость — это gridfs, hadoop, mofilefs. Ftp тут не очень вяжется :-)

По вашей задаче — напишите bash скриптик или обертки для функций на языке вашего проекта, чтобы операции с такими файлами были «прозрачными».
Ответ написан
Вместо деления использовать substr или что-то этом роде не быстрее будет?
Ответ написан
Комментировать
Inecs
@Inecs
Вот еще можно почитать https://sites.google.com/site/kamaikin/rabota-s-fajlami-1/teoria-hranenia-fajlov-na-servere
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы