Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
 О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
Расскажите, пожалуйста, о ваших случаях, когда централизованное хранение файлов документов в БД было сделано сперва в blob's, но потом из-за чего-то пришлось переделать на "внешнее" хранение (в файлах/каталогах файловой системы).

О проблемах, который послужили причиной переделки, и какой выигрыш был достигнут в результате.
26 май 20, 23:08    [22140137]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62424
Блог
ъъъъъ,

у меня ни разу не возникало такой необходимости. В принципе, представляю себе два возможных случая:

1. Файлы/картинки нужны на http сервере. Соответственно, их куда удобнее брать из файловой системы, нежели гнать через клиент и блобы.

2. Используется Oracle XE и размер базы не для картинок.

Но в обоих логично сразу использовать bfile.
27 май 20, 01:06    [22140191]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
ъъъъъ,

Ну на блобы всегда был лимит 2ГБ, чего не скажешь о файлах.
27 май 20, 01:17    [22140195]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
softwarer,

как и когда правильно - примерно понятно.

Интересны случаи перехода с одной архитектуры на другую, причины перехода и достигнутые результаты.
27 май 20, 01:26    [22140197]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
ъъъъъ
softwarer,

как и когда правильно - примерно понятно.

Интересны случаи перехода с одной архитектуры на другую, причины перехода и достигнутые результаты.
Был переход с блобов VARBINARY на FILESTREAM (SQL Server), читай блобы хранятся в файловой системе. Чтобы не кушало драгоценный SQL кэш, а запросы к блобам ходили мимо него. Ведь производительность таких запросов - не критична, а экономия главных ресусров - памяти очень даже.

Сообщение было отредактировано: 27 май 20, 01:38
27 май 20, 01:36    [22140198]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62424
Блог
Relic Hunter
Чтобы не кушало драгоценный SQL кэш

Это в смысле кэш запросов (планов запросов) или в смысле данных (содержимого этих блобов)?
27 май 20, 01:45    [22140203]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
Relic Hunter,

что в итоге изменилось?
27 май 20, 01:46    [22140204]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
softwarer
Relic Hunter
Чтобы не кушало драгоценный SQL кэш

Это в смысле кэш запросов (планов запросов) или в смысле данных (содержимого этих блобов)?
Не совсем правильно выразился. От кэша запросов никуда не деться, а вот блоков данных очень даже нужно (Data Buffer) и забивать их блобами в целом не хорошо.
27 май 20, 01:48    [22140205]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
ъъъъъ
Relic Hunter,

что в итоге изменилось?
В результе операции вставки/чтения блобов замедлились, чего и добивались. Зато возрасла скорость более важных запросов.
27 май 20, 01:50    [22140206]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
Relic Hunter
ъъъъъ
Relic Hunter,

что в итоге изменилось?
В результе операции вставки/чтения блобов замедлились, чего и добивались. Зато возрасла скорость более важных запросов.

Нифига себе оптимизация...
27 май 20, 01:53    [22140207]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62424
Блог
Relic Hunter
От кэша запросов никуда не деться, а вот блоков данных очень даже нужно (Data Buffer) и забивать их блобами в целом не хорошо.

Ясно. В Oracle это решается настройкой кэширования на уровне конкретного lob-поля в таблице. По умолчанию значение nocache (то есть блоки блоба не ложатся в buffer cache).
27 май 20, 01:55    [22140208]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
ъъъъъ
Relic Hunter
пропущено...
В результе операции вставки/чтения блобов замедлились, чего и добивались. Зато возрасла скорость более важных запросов.

Нифига себе оптимизация...
Не подготовленные люди не сразу понимают сути происходящего. Затем и нужны профессионалы))
27 май 20, 01:56    [22140209]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7311
softwarer
Relic Hunter
От кэша запросов никуда не деться, а вот блоков данных очень даже нужно (Data Buffer) и забивать их блобами в целом не хорошо.

Ясно. В Oracle это решается настройкой кэширования на уровне конкретного lob-поля в таблице. По умолчанию значение nocache (то есть блоки блоба не ложатся в buffer cache).
Ну так на то оно и значение по умолчанию и что его может изменить нехороший человек ("ридиска") ))
27 май 20, 01:59    [22140210]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62424
Блог
Relic Hunter,

ну почему же нехороший? Сервер вполне разумно говорит, что если некоторое lob-поле хранит небольшие и часто нужные данные - ставь ему cache и наслаждайся производительностью. А если ридиска имеет возможность править параметры хранения на продакшне - виноват не ридиска, а те, кто ему такую возможность предоставил.

P.S. Вот смысла значение cache reads я не очень понимаю. В этом режиме читаемые блобы кэшируются, а записываемые - нет. Может быть, это для какого-нибудь экстравагантного случая таблицы, в которой блобы из нескольких строчек постоянно читаются, а из остальных - часто пишутся и редко читаются.
27 май 20, 02:04    [22140211]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4678
ъъъъъ
Расскажите, пожалуйста, о ваших случаях, когда централизованное хранение файлов документов в БД было сделано сперва в blob's, но потом из-за чего-то пришлось переделать на "внешнее" хранение (в файлах/каталогах файловой системы).

О проблемах, который послужили причиной переделки, и какой выигрыш был достигнут в результате.


Когда блобы хранятся в одной бд с транзакционными данными, рано или поздно возникнет проблема. База вырастает и транзакции замедляются. Бекап вырастает в размере, что создает проблемы в администрировании.

В общем блобы надо держать в отдельной бд со своими настройками.

При хранении в файловой системе возникает проблема при большом кол-ве файлов в одной папке или большом числе файлов на диске.

Сейчас есть FileCatalog в MSSQL, который маппит БД с файловой системой.
27 май 20, 09:43    [22140306]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Hawkmoon
Member

Откуда:
Сообщений: 745
Relic Hunter
ъъъъъ
Relic Hunter,

что в итоге изменилось?
В результе операции вставки/чтения блобов замедлились, чего и добивались. Зато возрасла скорость более важных запросов.


Действительно, только профи оценит, "как красиво изменилась архитектура в результате падения производительности системы"
(система блобы-"картинки" стала отдавать медленнее. Все остальное быстрее - да, круто).

И клиент и начальник навряд ли оценит "едет медленнее, зато как жужжит!"
27 май 20, 09:53    [22140313]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Hawkmoon
Member

Откуда:
Сообщений: 745
ъъъъъ,

я пожалуй тут постою.
подожду ответов в метриках - примеров успехов, так сказать.
Об этом холиваре "картинки в БД vs картинки в FS" я слышал примерно 100500 раз начиная с 2011 года.
27 май 20, 09:55    [22140315]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4678
Hawkmoon
ъъъъъ,

я пожалуй тут постою.
подожду ответов в метриках - примеров успехов, так сказать.
Об этом холиваре "картинки в БД vs картинки в FS" я слышал примерно 100500 раз начиная с 2011 года.


Ваш знакомый знает толк в извращениях, в base64 кодировать и декодировать потом на каждый чих. Лучше бы мне это процессорное время подарил.

Давайте рассмотрим плюсы и минусы хранения ассетов (графики, скриптов, стилей) в БД, по сравнению с файлами на диске:


Плюсы:

Доступность из любого места проекта, без проксирования и использования сетевых файловых систем;
Возможность гарантированного хранения произвольных метаданных, без отрыва от файла;
Возможность организации файловой системы не в виде орграфа.
Пониженная нагрузка на физические диски (без учета возможного локального дискового кэша);
ACID, при условии реализации его базой данных.


Минусы:

Дополнительная машинерия для доступа к данным (отдачи клиенту, записи файлов администратором и т. д.);
Повышенная латентность, нагрузка на сеть и сервер БД;
Избыточная обработка, связанная с протоколом работы с БД (включая сериализацию данных), по сравнению с протоколом работы с файловой системой.
Отсутствие некоторых инструментов, например, sendfile(2) или mmap(2).
В абсолютном большинстве случаев, хранение и отдача ассетов сводится к неизменяемым файлам с хорошо определенными именами, прекрасно укладывающимся даже не в орграф, а в дерево. Отдача легковесным сервером типа nginx, за счет инструментов типа sendfile и кэширования (выполняется VFS-подсистемой ядра ОС), позволяет отдавать их с минимальными издержками, что и требуется для задачи.

Большинство плюсов, при этом, достаточно условны, т.к. БД в большом ряде случаев будут проигрывать по сравнению с более специализированными инструментами (например, GlusterFS или MooseFS) или композитными (БД для метаданных, традиционная ФС для данных) решениями.

Итого: следует считать, смысла в базе данных для хранения ассетов нет. Если возникает редкий случай, когда он появляется — вы об этом узнаете. Взято https://ru.stackoverflow.com/questions/112730/Способы-хранения-картинок
27 май 20, 10:54    [22140353]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62424
Блог
a_voronin
Бекап вырастает в размере, что создает проблемы в администрировании.

Когда нужно восстановить систему после сбоя и внезапно оказывается, что части нужных данных просто нет, это создаёт куда большие проблемы в администрировании.
27 май 20, 12:53    [22140428]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Hawkmoon
Member

Откуда:
Сообщений: 745
a_voronin,

об этом и так все знают.
не надо это доказывать.

Вопрос топик-стартера же не в этом. А "кто реально отказывался от хранения в БД и перекладывал в файлы и к чему это привело в цифрах?"
Как - не интересно. Интересно к чему привело. А мне еще интересно - и сколько это стоило в человекоднях.
27 май 20, 13:52    [22140475]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4678
Hawkmoon
a_voronin,

об этом и так все знают.
не надо это доказывать.

Вопрос топик-стартера же не в этом. А "кто реально отказывался от хранения в БД и перекладывал в файлы и к чему это привело в цифрах?"
Как - не интересно. Интересно к чему привело. А мне еще интересно - и сколько это стоило в человекоднях.


Отказались от хранения Excel в той же БД, что и остальные данные. Сделали 2 Бд. Заняло 1 человекодень. Загрузка данных ускорилась, но точно не мерила.
27 май 20, 15:08    [22140536]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
a_voronin
Когда блобы хранятся в одной бд с транзакционными данными, рано или поздно

Спасибо, но к вопросу ваш ответ не имеет никакого отношения.
27 май 20, 15:46    [22140581]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
dimonz80
Member

Откуда:
Сообщений: 209
ъъъъъ
Расскажите, пожалуйста, о ваших случаях, когда централизованное хранение файлов документов в БД было сделано сперва в blob's, но потом из-за чего-то пришлось переделать на "внешнее" хранение (в файлах/каталогах файловой системы).

О проблемах, который послужили причиной переделки, и какой выигрыш был достигнут в результате.


Миграция хранения файлов из БД в ФС только планируется. База Postgresql 10, файлы хранятся как BLOB. Файлы в основном не очень большие, несколько Мб (сканы в PDF по большей части). Файлов около 100 тыс. Сначала планировалось, что файлы удаляться не будут. При таком раскладе (кроме повышенного расхода дискового пространства) проблем не должно было возникнуть, т. к. физически, точнее на уровне таблицы с блобами файлы хранятся "подряд" идущими блоками и доступ на стенде размером в 100 Гб был более чем приемлемый (Postgressql хранит блобы в спец таблице pg_largeobject, порубленными по 2 Кб на кортеж) . Однако ситуация изменилась, когда понадобилось удалять файлы, т.к. в середине таблицы появились "дыры", в которые стали записываться куски новых файлов, а другие куски которые не влезли - в конец и скорость доступа начала понемногу деградировать, т.к. считать файл "последовательно" уже не получается.

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

Как-то так.
27 май 20, 15:51    [22140589]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
dimonz80,

Вы планируете использовать ФС, в которой не бывает фрагментации?
27 май 20, 16:33    [22140645]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2654
ъъъъъ
Вы планируете использовать ФС, в которой не бывает фрагментации?

На SSD фрагментация побоку.
27 май 20, 16:35    [22140648]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить