Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранение изображений в БД или в FS / 16 сообщений из 16, страница 1 из 1
07.04.2016, 22:14
    #39210601
Sabracadabra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Добрый день! Есть в БД около 100 тыс. клиентов. На каждого клиента есть сканы трех многостраничных документов (договоров) в формате PDF. Хранить 300 тыс. в БД накладно и неэффективно. Если хранить эти документы как файлы, то 300 тыс. файлов в каталоге многовато, можно разбить на каталоги для каждого клиента, но и 100 тыс. много. Переходить на другую СУБД уже нет возможности. У кого-нибудь м.б. была такая задача?
...
Рейтинг: 0 / 0
07.04.2016, 22:29
    #39210609
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
SabracadabraЕсли хранить эти документы как файлы, то 300 тыс. файлов в каталоге многовато, можно разбить на каталоги для каждого клиента, но и 100 тыс. много.Конечно, много. Так ФС будет хорошо притормаживать. Обычно делают дерево каталогов с таким расчётом, чтоб в каждом каталоге находилось не более нескольких сотен элементов. Ну а в БД есть смысл хранить соответствие реального имени (и других атрибутов файла) к его пути в файловой системе.
...
Рейтинг: 0 / 0
07.04.2016, 22:32
    #39210610
Sabracadabra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Спасибо,vkle! Это хорошая идея - сделать дерево каталогов.
...
Рейтинг: 0 / 0
07.04.2016, 22:38
    #39210613
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Сильно зависит от задачи.
Если для этих данных нужны механизмы СУБД - репликация, транзакции, общий бэкап и т.д., то имеет смысл хранить в БД.
Если ничего этого не нужно, то лучше в ФС. Лучше хранить в дереве каталогов с примерно равномерным размещением по листьевым каталогам, а в БД хранить относительный путь относительно условного корня этого дерева.

Например, мы храним изображения товаров в 256 каталогах с именами от 00 до FF, где каталог вычисляется остатком от деления кода товара на 256 и переводом в 16-ричную систему.
Если имена файлов уже являются некими номерами, то некоторые для именования каталогов используют первые 2-3 символа из имен файлов.
...
Рейтинг: 0 / 0
07.04.2016, 23:10
    #39210625
Sabracadabra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Спасибо большое, miksoft и vkle! Вы мне очень помогли.
...
Рейтинг: 0 / 0
08.04.2016, 08:48
    #39210720
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Sabracadabra,
хранить файлы в бд и вне ее равно эффективно.
все равно, будут ли страницы данных файлов принадлежать базе или файловой системе.
как делать зависит от выбранного способа доступа к файлам и архитектуры.
...
Рейтинг: 0 / 0
08.04.2016, 21:36
    #39211484
Sabracadabra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
MasterZiv, спасибо за ответ. Это понятно, просто мой выбор был за FS из-за непотребного в будущем размера файла данных БД MySQL, что привело бы к проблемам резервирования БД. Сканы договоров нет необходимости резервировать, т.к. это как бы дополнительный бонус в системе и не относится к ее основным функциям.
...
Рейтинг: 0 / 0
10.04.2016, 02:05
    #39211823
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
думаю что в базе хранить надо,
чтоб не резервировать - в отдельной таблице,
и пускай там mysql разбирается как это все хранить, индексировать, извлекать
оно тебе надо с каталогами и фс заморачиваться?
...
Рейтинг: 0 / 0
10.04.2016, 07:36
    #39211845
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
Sabracadabra,
тут есть несколько аспектов
— файл, если их хранить в фс будут доступны на клиентах в том случае, если они будут
в каталоге фс сайта, можно и вне, но это некоторые сложности
— хранить файлы в каталоге сайта тоже не есть хорошо.
— делать бэкап базы очень проблематично, если в ней хранятся сами файлы.
слишком большой объем.
я рекомендую 1 вариант, в фс, но вне каталога сайта.
...
Рейтинг: 0 / 0
09.05.2016, 18:03
    #39231900
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
https://habrahabr.ru/post/45966/

и еще на томм же хабре была более подробная статья о каком-то расширении ориентированного на работу с файлами в бд. На "с файлами бд", а " работу с файлами в бд".
вам уже подусказали. файл на диск (НО тут нужно подумать где именно его хранить, так как ждиск больше 300 рпс не выдержит), а ссылку на файл в бд.

---
ГДЕ хранить файл: Например из файла получаем мд5. мд5 сторку разбиваем на 4 или 8 меньших строк.

например мд5 будет 015. разбиваем на 3 части. В результате путь для хранения файла будет состоять из 0 / 1 / 5.jpg

Дерево каталогов (постараюсь объяснить так чтобы самому не запутаться в объяснении):
Код: sql
1.
2.
3.
1 символ пути    _0_                      1                   2 3 5 ... f 
2 символ пути     0 _1_   .   .   .   f                     0...f
3 символ пути        0 1 2 3 4 _5_ ...f


директория 0 имеет поддиректории от 0 до f. каждая поддиректория тоже имеет поддиректории от 0 до f. и так глубже и глубже. НО это я основную идею пытаюсь передать. Хочу показать как использовать функц (в этом примере мд5) для распределения нагрузки на систему хранения данных в огромных проэктах. Поищите видео "Проблемы хранения больших объемов данных" -там об этом рассказано.
...
Рейтинг: 0 / 0
09.05.2016, 18:11
    #39231901
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
ах, блин, о монтировании забыл. Вся эта иерархия как-то хитро монтируется. Нужно ОЧЕНЬ большие массивы дисков.
вот смотрите:
YouTube Video
...
Рейтинг: 0 / 0
09.05.2016, 19:46
    #39231935
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
aliskin https://habrahabr.ru/post/45966/

и еще на томм же хабре была более подробная статья о каком-то расширении ориентированного на работу с файлами в бд. На "с файлами бд", а " работу с файлами в бд".
вам уже подусказали. файл на диск (НО тут нужно подумать где именно его хранить, так как ждиск больше 300 рпс не выдержит), а ссылку на файл в бд.

---
ГДЕ хранить файл: Например из файла получаем мд5. мд5 сторку разбиваем на 4 или 8 меньших строк.

например мд5 будет 015. разбиваем на 3 части. В результате путь для хранения файла будет состоять из 0 / 1 / 5.jpg

Дерево каталогов (постараюсь объяснить так чтобы самому не запутаться в объяснении):
Код: sql
1.
2.
3.
1 символ пути    _0_                      1                   2 3 5 ... f 
2 символ пути     0 _1_   .   .   .   f                     0...f
3 символ пути        0 1 2 3 4 _5_ ...f


директория 0 имеет поддиректории от 0 до f. каждая поддиректория тоже имеет поддиректории от 0 до f. и так глубже и глубже. НО это я основную идею пытаюсь передать. Хочу показать как использовать функц (в этом примере мд5) для распределения нагрузки на систему хранения данных в огромных проэктах. Поищите видео "Проблемы хранения больших объемов данных" -там об этом рассказано.
проблема на ровном месте.
для этого лучше использовать не md5 - для формирования md5надо прочитать файл и обработать прочитанное.
проще присваиивать имена в виде GUID , и промещать в папки, по первым 3/4/5 первым символам имени (GUID)
формировать путь для поиска / записи просто
а хранить в базе только имя файла, что автоматом сохраняет и путь
...
Рейтинг: 0 / 0
09.05.2016, 20:22
    #39231950
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
можно и так. я очень плохо объяснил :( и видео не то что нужно указал.

И, бл..., почему я не могу редактировать свои комментарии?
...
Рейтинг: 0 / 0
09.05.2016, 20:46
    #39231957
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
SabracadabraMasterZiv, спасибо за ответ. Это понятно, просто мой выбор был за FS из-за непотребного в будущем размера файла данных БД MySQL, что привело бы к проблемам резервирования БД. Сканы договоров нет необходимости резервировать, т.к. это как бы дополнительный бонус в системе и не относится к ее основным функциям.

Не привело бы.
В MySQL резервирование и так проблема, так что один фиг.
а вот если хранить документы в FS, это -- куча файлов, что может быть проблемой, а если в БД -- это несколько файлов на всех.
...
Рейтинг: 0 / 0
09.05.2016, 20:48
    #39231959
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
вадяSabracadabra,
тут есть несколько аспектов
— файл, если их хранить в фс будут доступны на клиентах в том случае, если они будут
в каталоге фс сайта, можно и вне, но это некоторые сложности
— хранить файлы в каталоге сайта тоже не есть хорошо.
— делать бэкап базы очень проблематично, если в ней хранятся сами файлы.
слишком большой объем.
я рекомендую 1 вариант, в фс, но вне каталога сайта.

Ты можешь не делать дампы тех частей БД, где хранятся файлы.
В MySQL "дампы" делаются потаблично, так что всё более-менее ОК.
...
Рейтинг: 0 / 0
09.05.2016, 21:02
    #39231962
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение изображений в БД или в FS
авторТы можешь не делать дампы тех частей БД, где хранятся файлы.
В MySQL "дампы" делаются потаблично, так что всё более-менее ОК.
помимо этого есть ещё неудобства....
поэтому не рекомендую хранение файлов в базе.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранение изображений в БД или в FS / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]