|
|
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть в БД около 100 тыс. клиентов. На каждого клиента есть сканы трех многостраничных документов (договоров) в формате PDF. Хранить 300 тыс. в БД накладно и неэффективно. Если хранить эти документы как файлы, то 300 тыс. файлов в каталоге многовато, можно разбить на каталоги для каждого клиента, но и 100 тыс. много. Переходить на другую СУБД уже нет возможности. У кого-нибудь м.б. была такая задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 22:14 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
SabracadabraЕсли хранить эти документы как файлы, то 300 тыс. файлов в каталоге многовато, можно разбить на каталоги для каждого клиента, но и 100 тыс. много.Конечно, много. Так ФС будет хорошо притормаживать. Обычно делают дерево каталогов с таким расчётом, чтоб в каждом каталоге находилось не более нескольких сотен элементов. Ну а в БД есть смысл хранить соответствие реального имени (и других атрибутов файла) к его пути в файловой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 22:29 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Спасибо,vkle! Это хорошая идея - сделать дерево каталогов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 22:32 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Сильно зависит от задачи. Если для этих данных нужны механизмы СУБД - репликация, транзакции, общий бэкап и т.д., то имеет смысл хранить в БД. Если ничего этого не нужно, то лучше в ФС. Лучше хранить в дереве каталогов с примерно равномерным размещением по листьевым каталогам, а в БД хранить относительный путь относительно условного корня этого дерева. Например, мы храним изображения товаров в 256 каталогах с именами от 00 до FF, где каталог вычисляется остатком от деления кода товара на 256 и переводом в 16-ричную систему. Если имена файлов уже являются некими номерами, то некоторые для именования каталогов используют первые 2-3 символа из имен файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 22:38 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, miksoft и vkle! Вы мне очень помогли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 23:10 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Sabracadabra, хранить файлы в бд и вне ее равно эффективно. все равно, будут ли страницы данных файлов принадлежать базе или файловой системе. как делать зависит от выбранного способа доступа к файлам и архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 08:48 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
MasterZiv, спасибо за ответ. Это понятно, просто мой выбор был за FS из-за непотребного в будущем размера файла данных БД MySQL, что привело бы к проблемам резервирования БД. Сканы договоров нет необходимости резервировать, т.к. это как бы дополнительный бонус в системе и не относится к ее основным функциям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 21:36 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
думаю что в базе хранить надо, чтоб не резервировать - в отдельной таблице, и пускай там mysql разбирается как это все хранить, индексировать, извлекать оно тебе надо с каталогами и фс заморачиваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 02:05 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
Sabracadabra, тут есть несколько аспектов — файл, если их хранить в фс будут доступны на клиентах в том случае, если они будут в каталоге фс сайта, можно и вне, но это некоторые сложности — хранить файлы в каталоге сайта тоже не есть хорошо. — делать бэкап базы очень проблематично, если в ней хранятся сами файлы. слишком большой объем. я рекомендую 1 вариант, в фс, но вне каталога сайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 07:36 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
https://habrahabr.ru/post/45966/ и еще на томм же хабре была более подробная статья о каком-то расширении ориентированного на работу с файлами в бд. На "с файлами бд", а " работу с файлами в бд". вам уже подусказали. файл на диск (НО тут нужно подумать где именно его хранить, так как ждиск больше 300 рпс не выдержит), а ссылку на файл в бд. --- ГДЕ хранить файл: Например из файла получаем мд5. мд5 сторку разбиваем на 4 или 8 меньших строк. например мд5 будет 015. разбиваем на 3 части. В результате путь для хранения файла будет состоять из 0 / 1 / 5.jpg Дерево каталогов (постараюсь объяснить так чтобы самому не запутаться в объяснении): Код: sql 1. 2. 3. директория 0 имеет поддиректории от 0 до f. каждая поддиректория тоже имеет поддиректории от 0 до f. и так глубже и глубже. НО это я основную идею пытаюсь передать. Хочу показать как использовать функц (в этом примере мд5) для распределения нагрузки на систему хранения данных в огромных проэктах. Поищите видео "Проблемы хранения больших объемов данных" -там об этом рассказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 18:03 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
ах, блин, о монтировании забыл. Вся эта иерархия как-то хитро монтируется. Нужно ОЧЕНЬ большие массивы дисков. вот смотрите: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 18:11 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
aliskin https://habrahabr.ru/post/45966/ и еще на томм же хабре была более подробная статья о каком-то расширении ориентированного на работу с файлами в бд. На "с файлами бд", а " работу с файлами в бд". вам уже подусказали. файл на диск (НО тут нужно подумать где именно его хранить, так как ждиск больше 300 рпс не выдержит), а ссылку на файл в бд. --- ГДЕ хранить файл: Например из файла получаем мд5. мд5 сторку разбиваем на 4 или 8 меньших строк. например мд5 будет 015. разбиваем на 3 части. В результате путь для хранения файла будет состоять из 0 / 1 / 5.jpg Дерево каталогов (постараюсь объяснить так чтобы самому не запутаться в объяснении): Код: sql 1. 2. 3. директория 0 имеет поддиректории от 0 до f. каждая поддиректория тоже имеет поддиректории от 0 до f. и так глубже и глубже. НО это я основную идею пытаюсь передать. Хочу показать как использовать функц (в этом примере мд5) для распределения нагрузки на систему хранения данных в огромных проэктах. Поищите видео "Проблемы хранения больших объемов данных" -там об этом рассказано. проблема на ровном месте. для этого лучше использовать не md5 - для формирования md5надо прочитать файл и обработать прочитанное. проще присваиивать имена в виде GUID , и промещать в папки, по первым 3/4/5 первым символам имени (GUID) формировать путь для поиска / записи просто а хранить в базе только имя файла, что автоматом сохраняет и путь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 19:46 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
можно и так. я очень плохо объяснил :( и видео не то что нужно указал. И, бл..., почему я не могу редактировать свои комментарии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 20:22 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
SabracadabraMasterZiv, спасибо за ответ. Это понятно, просто мой выбор был за FS из-за непотребного в будущем размера файла данных БД MySQL, что привело бы к проблемам резервирования БД. Сканы договоров нет необходимости резервировать, т.к. это как бы дополнительный бонус в системе и не относится к ее основным функциям. Не привело бы. В MySQL резервирование и так проблема, так что один фиг. а вот если хранить документы в FS, это -- куча файлов, что может быть проблемой, а если в БД -- это несколько файлов на всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 20:46 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
вадяSabracadabra, тут есть несколько аспектов — файл, если их хранить в фс будут доступны на клиентах в том случае, если они будут в каталоге фс сайта, можно и вне, но это некоторые сложности — хранить файлы в каталоге сайта тоже не есть хорошо. — делать бэкап базы очень проблематично, если в ней хранятся сами файлы. слишком большой объем. я рекомендую 1 вариант, в фс, но вне каталога сайта. Ты можешь не делать дампы тех частей БД, где хранятся файлы. В MySQL "дампы" делаются потаблично, так что всё более-менее ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 20:48 |
|
||
|
Хранение изображений в БД или в FS
|
|||
|---|---|---|---|
|
#18+
авторТы можешь не делать дампы тех частей БД, где хранятся файлы. В MySQL "дампы" делаются потаблично, так что всё более-менее ОК. помимо этого есть ещё неудобства.... поэтому не рекомендую хранение файлов в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2016, 21:02 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39210609&tid=1831821]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 493ms |

| 0 / 0 |
