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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда: Москва
Сообщений: 4682
ъъъъъ
Расскажите, пожалуйста, о ваших случаях, когда централизованное хранение файлов документов в БД было сделано сперва в 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

Откуда: Москва
Сообщений: 4682
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
Сообщений: 62497
Блог
a_voronin
Бекап вырастает в размере, что создает проблемы в администрировании.

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

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

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

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

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

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

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


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

Откуда:
Сообщений: 797
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

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

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

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

На SSD фрагментация побоку.
27 май 20, 16:35    [22140648]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Hawkmoon
подожду ответов в метриках

Так-то да, по жизни достали по работе всевозможные "оптимизационные теоретики".
27 май 20, 16:37    [22140652]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
dimonz80
Member

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

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



Нет конечно, просто избавиться от "лишнего" уровня фрагментации в таблице БД
27 май 20, 16:44    [22140656]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

спасибо. На стенде уже тестировали новый вариант?
27 май 20, 17:04    [22140682]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
dimonz80
Member

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

спасибо. На стенде уже тестировали новый вариант?


А чего тестировать-то? Как http сервер файлы из ФС стримит?) даже субъективно видно, что быстрее
27 май 20, 17:27    [22140707]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

а откуда hhtp сервер появился?
27 май 20, 17:36    [22140717]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
dimonz80
Member

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

а откуда hhtp сервер появился?



3-хзвенка потому что
27 май 20, 17:38    [22140719]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
dimonz80
Member

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

а откуда hhtp сервер появился?



3-хзвенка потому что


да и кто будет отдавать файлы, которые не в БД
27 май 20, 17:39    [22140720]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
dimonz80
dimonz80
пропущено...



3-хзвенка потому что


да и кто будет отдавать файлы, которые не в БД

Ну поди догадайся, что у вас.
27 май 20, 17:42    [22140723]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

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

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


Я могу найти такое объяснение.

Сначала джун сделал хранение файлов в блобах.
Потом джун по-умнел и начал переделывать.
Или вернулся миддл/сеньёр из опуска, надавал подавану по шапке и заставил переделывать.

По сути.
Файловая система -- это специализированная БД для хранения файлов.
Она максимально соответствует всем требованиям работы с файлами, максимально эффективно это делает и существует овер дохрена инструментов для управления файлами.

СУБД создана для хранения структур данных, возможностей для работы с файлами в ней на порядки меньше, чем у файловой системы.

Выигрыш следует из вышеописанного.

Сообщение было отредактировано: 5 июн 20, 02:51
5 июн 20, 02:50    [22146042]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

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

Ну если там надо хранить какие-нибудь аватарки 32 на 32 пикселя, то почему бы и нет. И, к тому же, "блоб в БД", как уже упоминали, это не обязательно "блоб в самой БД" - есть ведь всякие сиквельные filestreams, монговские GridFS, или постресовские Large Objects.
5 июн 20, 05:45    [22146066]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

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


Я могу найти такое объяснение.

Сначала джун сделал хранение файлов в блобах.
Потом джун по-умнел и начал переделывать.
Или вернулся миддл/сеньёр из опуска, надавал подавану по шапке и заставил переделывать.

По сути.
Файловая система -- это специализированная БД для хранения файлов.
Она максимально соответствует всем требованиям работы с файлами, максимально эффективно это делает и существует овер дохрена инструментов для управления файлами.

СУБД создана для хранения структур данных, возможностей для работы с файлами в ней на порядки меньше, чем у файловой системы.

Выигрыш следует из вышеописанного.

Попробуйте сосредоточиться на вопросе, заданном в стартовом сообщении.
5 июн 20, 08:54    [22146118]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
fkthat
hVostt,

Ну если там надо хранить какие-нибудь аватарки 32 на 32 пикселя, то почему бы и нет. И, к тому же, "блоб в БД", как уже упоминали, это не обязательно "блоб в самой БД" - есть ведь всякие сиквельные filestreams, монговские GridFS, или постресовские Large Objects.


Это всё понятно :)
Конечно можно, в таком кейсе оно вроде как не выглядит проблемным.
Но опять же. Файловая система -- это уже база данных файлов.
Ни один GirdFS не дотягивает до FS как по возможностям, так и по скорости работы.
5 июн 20, 10:42    [22146214]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ъъъъъ
Попробуйте сосредоточиться на вопросе, заданном в стартовом сообщении.


Вопрос из разряда.

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

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

Я даже не понимаю кто всерьёз это будет оценивать.

Клеили на сопли, потом стали клеить на клей. Расскажите, какой выигрыш был достигнут?

Вы бы почитали обсуждения по этой теме, где все-все-все проблемы вам вдоль и поперёк раскрываются.
5 июн 20, 10:46    [22146218]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

если вам не нравится вопрос - это другое дело. Можете пожаловаться модератору.

Я не спрашивал о том, как лучше хранить картинки.

Зачем вы заливаете тему рассуждениями, не связанными с заданным вопросом?
5 июн 20, 11:49    [22146270]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3657
ъъъъъ
Интересны случаи перехода с одной архитектуры на другую, причины перехода и достигнутые результаты.

У меня тут назревает переход с "внешнее" хранение (в файлах/каталогах файловой системы) на куда-то в облако.
Необходимо выбрать (придумать) это самое облачное решение.
5 июн 20, 14:31    [22146390]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

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

если вам не нравится вопрос - это другое дело. Можете пожаловаться модератору.

Я не спрашивал о том, как лучше хранить картинки.

Зачем вы заливаете тему рассуждениями, не связанными с заданным вопросом?


Считаю, что напрямую связаны. Если вы так не считаете, можете пожаловаться модератору.

Почему у вас возник такой вопрос? Не с потолка же, правда? Но вы не делитесь информацией, возникли ли у вас проблемы, или у вас возник спор с коллегами. Просто просите конкретные результаты, понятно что в цифрах. Я бы мог поделиться информацией.

Но какой у вас вопрос, такой и ответ.
5 июн 20, 17:12    [22146517]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7318
Кратко по теме: мне всё равно кто и где хранит картинки.
5 июн 20, 18:17    [22146551]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Relic Hunter
Кратко по теме: мне всё равно кто и где хранит картинки.


Непонятно, почему всё свелось к картинкам :)
Ведь говорилось о документах.
6 июн 20, 01:55    [22146733]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
bochkov
Member

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

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

был у нас проект
сперва документы в файлах хранили а в таблице ссылки на них
трудно поддерживать, особенно если забываешь со временем, что и как устроено
то файлы потеряются, то ссылка в никуда
потом отказались, все в базе хранить стали
а чуть по позже все файлы свалил в одну таблицу
потому что бэкап делать удобнее
27 июн 20, 12:44    [22158175]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

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

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

facebook оптимизировали свой сервис после возросшей нагрузки:

Кэширование более часто используемых миниатюр изображений в памяти на оригинальных серверах для масштабируемости, надежности и производительности
Распределение их по CDN для уменьшения сетевых задержек
Возможно сделать еще лучше:
Хранение изображений в больших бинарных файлах (blob)
Сервис, отвечающий за фотографии имеет информацию о том, в каком файле и с каким отступом от начала расположена каждая фотография (по ее идентификатору)
Этот сервис в Facebook называется Haystack и он оказался в 10 раз эффективнее «простого» подхода и в 3 раза эффективнее «оптимизированного»



Архитектура хранения и отдачи фотографий в Badoo / Артем Денисов (Badoo)
ресайзинг и ватермарки - исключительно на лету, потому что потом, когда надо будет поменять, будешь рвать на себе волосы. По CPU там мелочь, по сравнению с I/O.
27 июн 20, 14:17    [22158222]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

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

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


Ну, случаи перехода "файлы" - > "блобы" мне известны, также известны причины и какие плюшки получили.

Я про обратные случаи спрашивал.
28 июн 20, 00:13    [22158446]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
miksoft
Member

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

О проблемах, который послужили причиной переделки, и какой выигрыш был достигнут в результате.
Переделывали для полуавтономных рабочих мест только для того, чтобы вписаться в лимиты на размер БД в Oracle XE.
Выигрыш - вписались в лимиты Oracle XE.
Проигрыш - лишний гемор при программировании репликации с основного сервера на эти рабочие места и увеличение времени генерации нового места, т.к. миллион маленьких файлов копируется ощутимо дольше одного большого даже на SSD.
28 июн 20, 00:24    [22158454]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
bochkov
потому что бэкап делать удобнее


что может быть проще и удобнее rsync?
28 июн 20, 00:25    [22158455]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
miksoft
Member

Откуда:
Сообщений: 38439
hVostt
что может быть проще и удобнее rsync?
отсутствие rsync-а.
28 июн 20, 00:27    [22158456]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
miksoft
hVostt
что может быть проще и удобнее rsync?
отсутствие rsync-а.


религия не позволяет? )
28 июн 20, 00:28    [22158457]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
miksoft
hVostt
что может быть проще и удобнее rsync?
отсутствие rsync-а.

28 июн 20, 00:29    [22158458]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
miksoft
Member

Откуда:
Сообщений: 38439
hVostt
miksoft
пропущено...
отсутствие rsync-а.


религия не позволяет? )
Нет, просто лишняя сущность.
28 июн 20, 00:30    [22158459]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Нет я понимаю откуда ноги растут у желания поместить всё в БД.
Сам через это проходил и не раз.
Решение хранить файлы в БД исходит банально, от неопытности и недальновидности.

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

Файловое хранилище легко можно сделать распределённым, его можно безболезненно мигрировать в облака, прикрутить http интерфейс, элементарно бекапить. Никаких проблем с производительностью, бекапами, и положительно влияет на надёжность системы.

ХЗ, чё тут обсуждать. Хоть бы конкретный кейс был какой, а не очередной конь в вакууме.

Сообщение было отредактировано: 28 июн 20, 00:39
28 июн 20, 00:41    [22158463]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
miksoft
Нет, просто лишняя сущность.


ну да, как же, я забыл бесконечная, бессмысленная и беспощадная война с "лишними сущностями"
28 июн 20, 00:43    [22158464]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62497
Блог
hVostt
Решение хранить файлы в БД исходит банально, от неопытности и недальновидности

Решение делать что-то вне БД исходит от незнания и неумения пользоваться возможностями БД.

hVostt
Никаких проблем с производительностью, бекапами

Про слово, например, "согласованность данных", Вам, наверное, и упоминать незачем.

Сообщение было отредактировано: 28 июн 20, 00:43
28 июн 20, 00:45    [22158465]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
hVostt
Решение хранить файлы в БД исходит банально, от неопытности и недальновидности

Решение делать что-то вне БД исходит от незнания и неумения пользоваться возможностями БД.


Простите, вы какую-то глупость сморозили. По-вашему всё надо делать в БД? Может отказаться от ОС? Будет только БД.

Попахивает гига-фанатизмом БД. В фанатичный спор не имею желания вступать. Любите всё делать в БД -- ваше право. Адекватные dba просто по шапке надают за "всё делать в БД" и на этом всё закончится.

softwarer
Про слово, например, "согласованность данных", Вам, наверное, и упоминать незачем.


А в чём проблема?

Сообщение было отредактировано: 28 июн 20, 00:49
28 июн 20, 00:50    [22158472]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
hVostt
Нет я понимаю откуда ноги растут у желания поместить всё в БД.
Сам через это проходил и не раз.
Решение хранить файлы в БД исходит банально, от неопытности и недальновидности.

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

Если не хочется копи-пасте - проходи мимо. Ну пожалуста.
28 июн 20, 00:56    [22158473]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62497
Блог
hVostt
Простите, вы какую-то глупость сморозили.

Просто высказывание, симметричное Вашему.

hVostt
А в чём проблема?

Если для Вас несогласованные данные - не проблема, то её, конечно, нет. В принципе, естественное требование к бэкапу - согласованность лежащих в нём (и поднимаемых в случае проблемы) данных. В ситуации, когда данные бэкапятся частями по отдельности друг от друга, о согласованности обычно можно забыть.
28 июн 20, 00:56    [22158474]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
hVostt
Простите, вы какую-то глупость сморозили.

Просто высказывание, симметричное Вашему.


Моё: не хранить файлы в БД
Ваше: ВСЁ делать в БД

У вас с логикой всё хорошо?
В каком месте тут симметрия?


softwarer
Если для Вас несогласованные данные - не проблема, то её, конечно, нет. В принципе, естественное требование к бэкапу - согласованность лежащих в нём (и поднимаемых в случае проблемы) данных. В ситуации, когда данные бэкапятся частями по отдельности друг от друга, о согласованности обычно можно забыть.


Вы по существу может быть скажете, в чём проблема конкретно с файлами?

Я правильно вас понимаю, если в программном комплексе (не дай-то бог!) имеется больше одной БД, о согласованности данных можно забыть?
28 июн 20, 01:00    [22158475]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ъъъъъ
Если не хочется копи-пасте - проходи мимо. Ну пожалуста.


В чём ваша проблема? Вы опять перепутали личный блог с публичным форумом? Я ведь даже не вам отвечаю. :)

Сообщение было отредактировано: 28 июн 20, 01:01
28 июн 20, 01:01    [22158476]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
hVostt
ъъъъъ
Если не хочется копи-пасте - проходи мимо. Ну пожалуста.


В чём ваша проблема? Вы опять перепутали личный блог с публичным форумом? :)


Проблема - в Вас, Единственном.
Вы приходите сюда - для чего? Чтобы рассказать о Вашем понимании красоты - но Ваши рассказы не имеет отношения к заданному вопросу.

Я не модератор, я пытаюсь удержать тему в рамках заданного вопроса.
28 июн 20, 01:06    [22158478]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

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

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

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


Пока иных случаев не было названо. Ну, один ещё, но он немного мутный.
28 июн 20, 01:08    [22158479]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ъъъъъ
Я не модератор, я пытаюсь удержать тему в рамках заданного вопроса.


Тема называется о хранении картинок в блобах. Покажите, где я вышел за рамки.

Сообщение было отредактировано: 28 июн 20, 01:07
28 июн 20, 01:08    [22158480]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
hVostt
...Я не помню, чтобы вас назначили местным оценщиком, что входит, а что не входит в рамки заданного вопроса.

Обсуждается хранение файлов. Всё могли и хотели сказать по вашему вопросу, уже сказали. Что вам не нравится? Чего вы добиваетесь не пойму?

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

Если Вам нечего сказать по теме - не засоряйте её, пожалуйста.
28 июн 20, 01:12    [22158482]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ъъъъъ
Member

Откуда:
Сообщений: 797
hVostt
ъъъъъ
Я не модератор, я пытаюсь удержать тему в рамках заданного вопроса.


Тема называется о хранении картинок в блобах. Покажите, где я вышел за рамки.

Тема как-то называется, да, а Вы - источник шума в этой теме. Я - об этом.
28 июн 20, 01:13    [22158483]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62497
Блог
hVostt
Моё: не хранить файлы в БД

Ваше про неопытность и недальновидность.

hVostt
Вы по существу может быть скажете, в чём проблема конкретно с файлами?

Странный вопрос. Файлы - один из типов данных. С тем же успехом Вы могли бы спросить "в чём проблема конкретно со строками".

(начиная понимать) Или для Вас файлы - это не данные, а так, какая-то неважная фигня сбоку припёку?

hVostt
Я правильно вас понимаю, если в программном комплексе (не дай-то бог!) имеется больше одной БД, о согласованности данных можно забыть?

Зависит от того, есть ли связи между данными из этих БД и как эти связи устроены и поддерживаются.
28 июн 20, 01:14    [22158484]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ъъъъъ
hVostt
...Я не помню, чтобы вас назначили местным оценщиком, что входит, а что не входит в рамки заданного вопроса.

Обсуждается хранение файлов. Всё могли и хотели сказать по вашему вопросу, уже сказали. Что вам не нравится? Чего вы добиваетесь не пойму?

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

Если Вам нечего сказать по теме - не засоряйте её, пожалуйста.


Кому и чем я мешаю рассказать о своём опыте? Много рассказали за месяц?
Форум и создан для того, чтобы потрепаться. В этом его сакральный смысл.
Он не создан для того, чтобы вы тут создали тему и наводили в ней свои порядки.
28 июн 20, 01:15    [22158485]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
hVostt
Вы по существу может быть скажете, в чём проблема конкретно с файлами?

Странный вопрос. Файлы - один из типов данных. С тем же успехом Вы могли бы спросить "в чём проблема конкретно со строками".

(начиная понимать) Или для Вас файлы - это не данные, а так, какая-то неважная фигня сбоку припёку?


Файлы это бинарное содержимое. К которому не применяются никакие инструменты и правила работы с данными в БД.

Но вы не ответили на вопрос. Можете сказать, какая проблема в согласованности данных применительно к файлам, которые не хранятся в БД?


softwarer
hVostt
Я правильно вас понимаю, если в программном комплексе (не дай-то бог!) имеется больше одной БД, о согласованности данных можно забыть?

Зависит от того, есть ли связи между данными из этих БД и как эти связи устроены и поддерживаются.


Ну вот есть БД в MS SQL, также используется MongoDB и хранилище данных, доступное через HTTP (хз, что там на бекенде).

Прощай согласованность? :)
28 июн 20, 01:19    [22158487]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ъъъъъ
Тема как-то называется, да, а Вы - источник шума в этой теме. Я - об этом.


Не связывайте созданную тему на форуме со своим личным пространством, и всё будет хорошо :)
28 июн 20, 01:25    [22158488]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 62497
Блог
hVostt
Файлы это бинарное содержимое.

blob - это бинарное содержимое. Лежит он в виде сегмента в БД или в виде отдельного файла, доступного из БД - это техническая деталь.

hVostt
Но вы не ответили на вопрос. Можете сказать, какая проблема в согласованности данных применительно к файлам, которые не хранятся в БД?

Что значит "какая"? Просто в результате восстановления они имеют все шансы быть не согласованными с данными, которые лежат в БД.

Ну например, делал я систему для бюро кредитных историй. То есть банк формирует XML с довольно ответственными данными. Этот XML приезжает ко мне, я его обрабатываю. И допустим, как последний дурак, кладу его вне базы в виде файла на диске и бэкаплю эти файлы независимо и отдельно. Случается ЧП. Администраторы бегут за бэкапами, и в итоге БД поднята по состоянию на 28.06.2020 1:24, а файлы - по состоянию на 28.06.2020 1:18 (либо наоборот). Что в результате? Ну тут уже начинается веселье. Какие-то приехавшие кредитные истории потеряны и не обработаны, какие-то сформированные ответы потеряны и не отправлены. А через пять лет прибегает очень сердитый чувак и начинает спрашивать: почему это по вашим данным у меня был пропущенный платёж и мне теперь не дают нового кредита, хотя я всё всегда платил вовремя и вот у меня банковская выписка?

hVostt
Ну вот есть БД в MS SQL, также используется MongoDB и хранилище данных, доступное через HTTP (хз, что там на бекенде).

Прощай согласованность? :)

Судя по этой фразе, Вы не поняли моего ответа. Просто вообще не поняли. Не вижу смысла продолжать.
28 июн 20, 01:32    [22158490]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
Что значит "какая"? Просто в результате восстановления они имеют все шансы быть не согласованными с данными, которые лежат в БД.

Ну например, делал я систему для бюро кредитных историй. То есть банк формирует XML с довольно ответственными данными. Этот XML приезжает ко мне, я его обрабатываю. И допустим, как последний дурак, кладу его вне базы в виде файла на диске и бэкаплю эти файлы независимо и отдельно. Случается ЧП. Администраторы бегут за бэкапами, и в итоге БД поднята по состоянию на 28.06.2020 1:24, а файлы - по состоянию на 28.06.2020 1:18 (либо наоборот). Что в результате? Ну тут уже начинается веселье. Какие-то приехавшие кредитные истории потеряны и не обработаны, какие-то сформированные ответы потеряны и не отправлены. А через пять лет прибегает очень сердитый чувак и начинает спрашивать: почему это по вашим данным у меня был пропущенный платёж и мне теперь не дают нового кредита, хотя я всё всегда платил вовремя и вот у меня банковская выписка?


Благодарю за пример, это по крайне мере проясняет причину ваших опасений.
И это причина кроется -- как я уже сказал ранее, в вашем отсутствии опыта. В этом ничего зазорного нет, не нужно воспринимать это как критику, или в негативном ключе.

Хранилище файловой системы не "откатывается". Файлы складываются в хранилище и больше ничего с ними не делается. Крайний случай, это отказ всех дисков из рейд-массива. В таком случае хранилище восстанавливается из бекапа, но не "откатывается". Бекап обычно происходит на лету, файл пишется в хранилище, а из хранилища сразу летит в бекап, или пишется в два места.

Поэтому описанная вами ситуация никак не может случиться.
28 июн 20, 01:46    [22158495]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
hVostt
Ну вот есть БД в MS SQL, также используется MongoDB и хранилище данных, доступное через HTTP (хз, что там на бекенде).

Прощай согласованность? :)

Судя по этой фразе, Вы не поняли моего ответа. Просто вообще не поняли. Не вижу смысла продолжать.


Ну... я задал конкретный вопрос. А получил какую-то лирику в духе "вы моей музыки не понимаете". Что сложного в моём вопросе?
28 июн 20, 01:48    [22158496]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
softwarer
И допустим, как последний дурак, кладу его вне базы в виде файла на диске


Я обязательно покажу это нашим дба. Получается, уже не первая крупная компания, где работают одни дураки
28 июн 20, 01:50    [22158497]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

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

На самом деле, насколько я помню, в случае MSSQL filestreams блобы как раз и хранятся в виде отдельных файлов на диске, с той только разницей, что расположением этих файлов управляет не приложение, а сам MSSQL. А со стороны АПИ эти блобы просто видны как обычная сетевая папка.
28 июн 20, 03:40    [22158500]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
Ну вот есть БД в MS SQL, также используется MongoDB и хранилище данных, доступное через HTTP (хз, что там на бекенде).
Прощай согласованность? :)

а микросервисы наверное вообще живут одноразовой жизнью.
если чё упало, просто выкидывают.
28 июн 20, 10:14    [22158529]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
fkthat
hVostt,

На самом деле, насколько я помню, в случае MSSQL filestreams блобы как раз и хранятся в виде отдельных файлов на диске, с той только разницей, что расположением этих файлов управляет не приложение, а сам MSSQL. А со стороны АПИ эти блобы просто видны как обычная сетевая папка.


FILESTREAM, да. Конечно лучше, чем хранение в блобах. Но опять же, ради чего эти заморочки, если хранение файлов в файловой системе это абсолютно нативное решение, очень быстро и эффективно -- для работы с файлами используются функции ядра ОС, проще просто некуда, а также отделение хранения файлов от БД с данными повышает общую надежность системы. Основное правило у дба, любую лишнюю нагрузку, которую можно снять с БД -- нужно снять.

Есть конечно спорные на мой взгляд правила про маленькие файлы до XX килобайт, которые типа эффективнее хранить в БД. Но ИМХО, бред это, на практике никакого выигрыша нет. В моей практике я его не видал. Но может в отдельных кейсах это работает.
28 июн 20, 15:41    [22158599]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
[quot hVostt#22158599]
fkthat
Но опять же, ради чего эти заморочки

Например, интегрированные с БД бекапы, безопасность и транзакции. Лучшая защита целостности в случае если кроме самого блоба на диске в БД хранятся связанные с ним данные (а обычно так оно и есть).
28 июн 20, 17:40    [22158620]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 15:41 [22158599]
>...Основное правило у дба, любую лишнюю нагрузку, которую можно снять с БД -- нужно снять…
<
Как Вы работаете с сущностью, часть информации которой находится в БД, а другая часть - в файловой системе.
Где редактируется файл?
Как реализуется UPDATE?
28 июн 20, 19:22    [22158657]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5363
ВМоисеев
>hVostt, сегодня, 15:41 [22158599]
>...Основное правило у дба, любую лишнюю нагрузку, которую можно снять с БД -- нужно снять…
<
Как Вы работаете с сущностью, часть информации которой находится в БД, а другая часть - в файловой системе.
Где редактируется файл?
Как реализуется UPDATE?


Э-э-э никак, т.к. сущности РМД в файле не хранятся.
Файл это набор байтов, о структуре которого БД ничего не знает.
Поэтому для БД что ссылка на файл в файловой системе, что BLOB, в некотором смысле одно и то же.
В некоторых случаях, хранение ссылки может быть "понятнее" для БД, если есть значащая файловая иерархия.
Грубо говоря индекс по ссылке будет чуть оптимальнее, чем по чистому BLOB'у.

Делать же из БД систему контроля версий (это я про бекапы).
Не самая лучшая идея.
Т.к. для этого есть более удобные инструменты, например git.
Которые дают гораздо больше возможностей, чем простые бекапы.

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

Если же мы говорим о xml и/или json типах, то там не все так однозначно.
Но к теме данного топика не относиться.
29 июн 20, 07:26    [22158772]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Как Вы работаете с сущностью, часть информации которой находится в БД, а другая часть - в файловой системе.


С данными работают с помощью SQL, файлы сохраняют в файловой системе и затем считывают оттуда.


ВМоисеев
Где редактируется файл?


Нигде, файл не редактируется. Если нужно обновить файл, загружается новый файл, а старый помечается как более не нужный. Периодически проводится очистка файлового хранилища от ненужных и старых файлов.


ВМоисеев
Как реализуется UPDATE?


В этом нет смысла.

Сообщение было отредактировано: 29 июн 20, 09:47
29 июн 20, 09:49    [22158831]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>mad_nazgul, сегодня, 07:26 [22158772]
>Э-э-э никак…
<
Э-э-э …
1. Сотрудник как сущность - очевидность.
2. Часть атрибутов хранится в базе (суррогатный ключ, ФИО, Дата рождения и т.п.) - очевидно.
3. Атрибут "Личное дело" - реальность. Но может хранится в файловой системы.
4. Атрибут "Личное дело" содержит информацию в формате MS Word.
5. Сущности "Сотрудник" не важно, что о ней известно базе данных или файловой системе.
29 июн 20, 09:50    [22158832]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 09:49 [22158831]
>...В этом нет смысла.
<
Может быть и так.
Но я рассуждаю несколько иначе.
1. Необходимые атрибуты сущности должны быть отражены в панельном гриде.
2. К необходимым полям относятся и информационные файлы.
3. см. слайд.
Щелчок по полю "Файлы" строки конкретной сущности реализует загрузку панели выбора файлового документа. У меня файловый документ либо текст, либо слайд.
"Личные данные" редактируются MS Word. Предварительно документ загружается из файлового сервера на локальный комп. По завершению документ может быть сохранен. Меня интересует последовательность шагов сохранения.

К сообщению приложен файл. Размер - 40Kb
29 июн 20, 10:26    [22158852]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Изопропил
Member

Откуда:
Сообщений: 31497
ВМоисеев
. Меня интересует последовательность шагов сохранения.

какая ещё последовательность - пишется новая версия файла,
старые автоматически не удаляются

Сообщение было отредактировано: 29 июн 20, 13:31
29 июн 20, 13:32    [22159024]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>Изопропил, сегодня, 13:32 [22159024]
>какая ещё последовательность…
<
Многопользовательская среда, оптимистическая блокировка
29 июн 20, 15:07    [22159111]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Но я рассуждаю несколько иначе.


А я то не рассуждаю, вполне конкретно говорю :)

ВМоисеев
2. К необходимым полям относятся и информационные файлы.


Никуда ваши файлы не делись. В БД нужно записать информацию о приложенных файлах. Речь шла о хранении содержимого файлов.

ВМоисеев
3. см. слайд.


К сожалению, ничего не понятно.


ВМоисеев
Щелчок по полю "Файлы" строки конкретной сущности реализует загрузку панели выбора файлового документа. У меня файловый документ либо текст, либо слайд.
"Личные данные" редактируются MS Word. Предварительно документ загружается из файлового сервера на локальный комп. По завершению документ может быть сохранен. Меня интересует последовательность шагов сохранения.


Присвоили файлу уникальный идентификатор, сохранили файл в хранилище, сохранили в БД атрибут, содержащий уникальный идентификатор. Всё.
29 июн 20, 15:11    [22159115]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Многопользовательская среда, оптимистическая блокировка


При чём тут ваша блокировка вообще?

Вообще абсолютно наплевать какая блокировка, хоть оптимистичная, хоть либеральная, хоть космическая, хоть паранормальная.. Как это влияет на процесс? Зачем об этом говорить-то? :)
29 июн 20, 15:12    [22159117]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
hVostt
Присвоили файлу уникальный идентификатор, сохранили файл в хранилище, сохранили в БД атрибут, содержащий уникальный идентификатор. Всё.

Дровбек в том, что имеем в результате два отдельных хранилища, согласованность которых управляется только самим приложением. По известному закону рано или поздно с этим пойдут косяки. Разумеется, хранить блобы прямо в ФС будет всегда как минимум не медленнее, чем как-либо в БД, но, лично я, все же, изначально начал бы с БД, сделал бы нагрузочное тестирование, и только потом, если бы производительность не устраивала, то рассмотрел бы вариант с ФС.
29 июн 20, 16:16    [22159151]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
fkthat
Разумеется, хранить блобы прямо в ФС будет всегда как минимум не медленнее, чем как-либо в БД

это с чего это не медленнее? каждый раз I/O диска дёргать.
29 июн 20, 17:22    [22159178]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
fkthat
Дровбек в том, что имеем в результате два отдельных хранилища, согласованность которых управляется только самим приложением. По известному закону рано или поздно с этим пойдут косяки. Разумеется, хранить блобы прямо в ФС будет всегда как минимум не медленнее, чем как-либо в БД, но, лично я, все же, изначально начал бы с БД, сделал бы нагрузочное тестирование, и только потом, если бы производительность не устраивала, то рассмотрел бы вариант с ФС.


Нагрузочное тестирование мы проводили.
Проводили и другие оценки.

По всем параметрам без исключения выигрывают файлы в файловой системе.

Единственная проблема, которая беспокоит самые лучшие умы человечества -- это ACID.
Однако, нужно сделать всё конкретно через жопу, чтобы словить проблемы согласованности.
Я с такими проблемами при работе с файлами не сталкивался.
29 июн 20, 18:10    [22159198]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Изопропил
Member

Откуда:
Сообщений: 31497
fkthat
Дровбек в том, что имеем в результате два отдельных хранилища, согласованность которых управляется только самим приложением.

Согласованность может обеспечиваться диспетчером ресурсов
29 июн 20, 18:10    [22159199]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 15:12 [22159117]
>...Вообще абсолютно наплевать какая блокировка...
<
Это как посмотреть.
Вася и Петя на локальных компьютерах, каждый на своём, редактируют экземпляры файла. Надо хранить результаты. Как?
29 июн 20, 18:24    [22159208]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Это как посмотреть.
Вася и Петя на локальных компьютерах, каждый на своём, редактируют экземпляры файла. Надо хранить результаты. Как?


Сохранять обе версии файла, последняя версия будет того, кто последний сохранил.
Никакой блокировки вообще, все счастливы и довольны, данные не потеряны, работа выполнена.
29 июн 20, 18:49    [22159221]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Изопропил
Member

Откуда:
Сообщений: 31497
ВМоисеев
Вася и Петя на локальных компьютерах, каждый на своём, редактируют экземпляры файла. Надо хранить результаты. Как?

Двухфазный коммит

Сообщение было отредактировано: 29 июн 20, 18:55
29 июн 20, 18:57    [22159224]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Изопропил
fkthat
Дровбек в том, что имеем в результате два отдельных хранилища, согласованность которых управляется только самим приложением.

Согласованность может обеспечиваться диспетчером ресурсов

Чтобы работать с двумя сервисами из-под диспетчера ресурсов, типа MSDTC надо чтобы они оба его поддерживали. Файловая система этого сама по себе не делает.
29 июн 20, 19:29    [22159234]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Алексей Роза
это с чего это не медленнее? каждый раз I/O диска дёргать.

А БД что не с того же диска контент блоба читает? К тому же еще блобы хранимые прямо в БД при чтении очень быстро засрут весь кеш сиквела, поэтому, например, те же FILESTREAM используют не кеш сиквела, а кеш самой OS.
29 июн 20, 19:33    [22159236]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
fkthat
А БД что не с того же диска контент блоба читает?

да, но она всё кеширует.
т.е. второй запрос будет уже из памяти.
конечно при большом кол-ве юзеров шанс, что оба прочитают одно и тоже - мал

Сообщение было отредактировано: 29 июн 20, 20:18
29 июн 20, 20:18    [22159249]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Алексей Роза

да, но она всё кеширует.

ФС тоже кеширует. И, как я уже писал - кешировать большие блобы в кеше сиквела это не очень хорошая идея
29 июн 20, 21:55    [22159271]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 18:49 [22159221]
>Сохранять обе версии файла, последняя версия будет того, кто последний сохранил.
<
Нет.
Сохранена должна быть отредактированная копия оригинала файла, который находится на файловом сервере. Отредактированная копия становится оригиналом.
29 июн 20, 23:45    [22159315]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
fkthat
Алексей Роза

да, но она всё кеширует.

ФС тоже кеширует. И, как я уже писал - кешировать большие блобы в кеше сиквела это не очень хорошая идея

так зачем тогда фейсбук так сделал?
30 июн 20, 00:33    [22159337]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Алексей Роза
так зачем тогда фейсбук так сделал?

Сделал как?
30 июн 20, 01:50    [22159348]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
fkthat
Алексей Роза
так зачем тогда фейсбук так сделал?

Сделал как?

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

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

facebook оптимизировали свой сервис после возросшей нагрузки:

Кэширование более часто используемых миниатюр изображений в памяти на оригинальных серверах для масштабируемости, надежности и производительности
Распределение их по CDN для уменьшения сетевых задержек
Возможно сделать еще лучше:
Хранение изображений в больших бинарных файлах (blob)
Сервис, отвечающий за фотографии имеет информацию о том, в каком файле и с каким отступом от начала расположена каждая фотография (по ее идентификатору)
Этот сервис в Facebook называется Haystack и он оказался в 10 раз эффективнее «простого» подхода и в 3 раза эффективнее «оптимизированного»

Архитектура хранения и отдачи фотографий в Badoo / Артем Денисов (Badoo)
ресайзинг и ватермарки - исключительно на лету, потому что потом, когда надо будет поменять, будешь рвать на себе волосы. По CPU там мелочь, по сравнению с I/O.

и фейсбук, и байда
у байды, кстати:
320kk users
400k regs/day
3000 servers (!)
70k rps

Сообщение было отредактировано: 30 июн 20, 02:20
30 июн 20, 02:19    [22159356]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5363
ВМоисеев
>mad_nazgul, сегодня, 07:26 [22158772]
>Э-э-э никак…
<
Э-э-э …
1. Сотрудник как сущность - очевидность.
2. Часть атрибутов хранится в базе (суррогатный ключ, ФИО, Дата рождения и т.п.) - очевидно.
3. Атрибут "Личное дело" - реальность. Но может хранится в файловой системы.
4. Атрибут "Личное дело" содержит информацию в формате MS Word.
5. Сущности "Сотрудник" не важно, что о ней известно базе данных или файловой системе.


С пункта 3, уже БД все равно, что лежит в поле. Ссылка на файл или BLOB.
Т.к. На самом деле личное дело можно разбить на составляющие.
Например - форма Т1, которая хорошо ложиться на РМД.
Автобиография - это тест, можно засунуть в CLOB, а потом оттуда запросом вытащить информацию (во всех актуальных БД есть полнотекстовый поиск)
Информация о рабочей книжке и военном билете, так же может быть разбита на части, которые "ложатся на РМД".

А так. Если хранить файлы в BLOB-ах, то на них трудно натравить системы полнотекстового поиска.
Если же файла хранятся в файловой системе. То можно с помощью сторонних инструментов вытащить информацию, чтобы по ней искать.
30 июн 20, 07:31    [22159396]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
>hVostt, сегодня, 18:49 [22159221]
>Сохранять обе версии файла, последняя версия будет того, кто последний сохранил.
<
Нет.
Сохранена должна быть отредактированная копия оригинала файла, который находится на файловом сервере. Отредактированная копия становится оригиналом.


И в чём противоречие с тем, что я сказал?

Что значит "нет"?
30 июн 20, 10:46    [22159495]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Алексей Роза
Хранение изображений в больших бинарных файлах (blob)

Ты считаешь, что это означает, что фейсбук хранит их как varbinary(max) в БД? LOL.
30 июн 20, 11:38    [22159534]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
fkthat
Алексей Роза
Хранение изображений в больших бинарных файлах (blob)

Ты считаешь, что это означает, что фейсбук хранит их как varbinary(max) в БД? LOL.

да не, просто в 2 ночи надо спать, а не на форумах писать
30 июн 20, 12:28    [22159587]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 10:46 [22159495]
>И в чём противоречие с тем, что я сказал?
<
Рассмотрим ситуацию:
Вася и Петя загрузили оригинал информационного файла и начали редактировать каждый свою часть.
Вася шустрый и быстренько закончил своё дело, сохранив свою работу в на сервере. Оригинал изменился.
Петя пошёл попить чайку и свою работу закончил после Васи. Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.
30 июн 20, 13:35    [22159648]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
ВМоисеев
Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.

Ну, если ты знаешь способ, как мержить файлы совершенно произвольного формата, то я снимаю шляпу.
30 июн 20, 14:49    [22159704]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
>hVostt, сегодня, 10:46 [22159495]
>И в чём противоречие с тем, что я сказал?
<
Рассмотрим ситуацию:
Вася и Петя загрузили оригинал информационного файла и начали редактировать каждый свою часть.
Вася шустрый и быстренько закончил своё дело, сохранив свою работу в на сервере. Оригинал изменился.
Петя пошёл попить чайку и свою работу закончил после Васи. Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.


И пошёл Вася бить лицо Пете, так как из-за него он не может сохранить результат своей работы, правильно? :)

Если вы не можете смержить результат, это ваша проблема. Вы своей неспособностью решить задачу закрываете блокировкой и переносите проблему на пользователей. И никакой возможности снизить боль и проблему у вас не предусмотрено.

Лучше не упоминать, что у вас оптимистичная блокировка, так как вы говорите по сути -- я создал проблему для пользователей и горжусь этим :)

Так дела не делаются.
30 июн 20, 15:26    [22159734]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев,

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

Вася при сохранении должен получить уведомление, что до него уже вносились правки и принять решение из вариантов:

1. Вася сохраняет свою версию, которая становится последней, и говорит Пете, чтобы перенёс свои правки в его версию
2. Вася открывает предыдущую версию, сравнивает со своей и переносит руками чужие правки в свою версию

В любом случае, блокировка тут не нужна, так как она в вашем решении легко обходится пользователем, и дорого обходится бизнесу. Решение довольно херовое.
30 июн 20, 15:29    [22159738]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить

Сообщение было отредактировано: 30 июн 20, 15:54
30 июн 20, 15:56    [22159774]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
hVostt
Решение довольно херовое.

Особенно такая блокировка, когда Вася может заблокировать файл и уехать в отпуск на месяц на Красное море (или вообще уволиться, помереть, или в тюрьму сесть). В доисторические времена, когда еще работали с MS Source Safe сталкивались с таким :)
30 июн 20, 15:58    [22159778]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить


Решение хорошее, но это уже рюшки-плюшки. Т.е. как дополнительное улучшение. Вопрос сохранения это не отменяет.

Явных преимуществ оптимистичной блокировки перед пессимистичной в данном кейсе нет. Хранение версий решает проблему сохранения изменений. Уведомления решают проблему сокрытия изменений.

Идеальное решение -- мержинг, автоматический или ручной.

Сообщение было отредактировано: 30 июн 20, 16:43
30 июн 20, 16:44    [22159826]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
fkthat
hVostt
Решение довольно херовое.

Особенно такая блокировка, когда Вася может заблокировать файл и уехать в отпуск на месяц на Красное море (или вообще уволиться, помереть, или в тюрьму сесть). В доисторические времена, когда еще работали с MS Source Safe сталкивались с таким :)


Какие-то старые версии SVN сразу вспоминаются )
30 июн 20, 16:46    [22159829]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 15:26 [22159734]
>И пошёл Вася бить лицо Пете, так как из-за него он не может сохранить результат своей работы, правильно? :)
<
Не понимаю.
Информационная система работает с сущностями. Каждая сущность обязательно имеет суррогатный ключ и timestamp для реализации оптимистической блокировки. Также, одним из атрибутов сущности может быть файл.
Вася и Петя, как минимум имеют <pk_Entity, timestamp>.
Петя в процессе попытки переписать отредактированную им копию на сервер, проверяет методом UPDATE тот факт, что он правил копию, соответствующую оригиналу (оригинал сущности не изменился). Если ок, заменяет оригинал файла своей отредактированной копией, с изменением timestamp.
Далее, проснулся Вася и отредактировал файл и пытается проверить свою копию на соответствие оригинала. Получает не штатную ситуацию, но с новым timestamp. Он может плюнуть на всё и повторить перепись своей отредактированной копии с потерей работы Пети. Может поступить более аккуратно - повторно загрузить оригинал, что содержит изменения Пети.
30 июн 20, 17:38    [22159873]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Он может плюнуть на всё и повторить перепись своей отредактированной копии с потерей работы Пети. Может поступить более аккуратно - повторно загрузить оригинал, что содержит изменения Пети.


А если Вася случайно повторил, или не понял, Петя всё равно придёт бить Васе морду.

Поэтому, как я уже говорил, хранение версий файлов решают эту проблему на корню. И нафиг ваша блокировка там уже не нужна.
30 июн 20, 17:58    [22159888]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Не понимаю.


Это очевидно. Вы же не имеете желания рассматривать любые решения, способы разработки, кроме того, что смогли осилить. А что осилили, поднимаете на флаг, как достижение уровня открытия Америки.
30 июн 20, 17:59    [22159890]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить


Решение хорошее, но это уже рюшки-плюшки. Т.е. как дополнительное улучшение. Вопрос сохранения это не отменяет.

Явных преимуществ оптимистичной блокировки перед пессимистичной в данном кейсе нет. Хранение версий решает проблему сохранения изменений. Уведомления решают проблему сокрытия изменений.

Идеальное решение -- мержинг, автоматический или ручной.

и вот тут я запутался...
этот мержинг?
автор
Merge — оператор языка SQL, который позволяет слить данные одной таблицы с данными другой таблицы. При слиянии таблиц проверяется условие, и если оно истинно, то выполняется Update, а если нет - Insert.

Пару страниц назад ты говорил, что UPDATE не нужен.
А прям перед моим постом ты писал:
hVostt
ВМоисеев,

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

Вася при сохранении должен получить уведомление, что до него уже вносились правки и принять решение из вариантов:

1. Вася сохраняет свою версию, которая становится последней, и говорит Пете, чтобы перенёс свои правки в его версию
2. Вася открывает предыдущую версию, сравнивает со своей и переносит руками чужие правки в свою версию

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

...где п.2 это практически точная копия моего варианта и таки там есть блокировка (Васе заблокирована возможность сохранить документ поверх Пети).
30 июн 20, 18:01    [22159891]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза
и вот тут я запутался...
этот мержинг?
автор
Merge — оператор языка SQL, который позволяет слить данные одной таблицы с данными другой таблицы. При слиянии таблиц проверяется условие, и если оно истинно, то выполняется Update, а если нет - Insert.


Не... слияние изменений. Вася одну часть отредактировал, Петя другую. При сохранении происходит попытка слить изменения, если нет конфликтов, которые нужно устранять вручную.

Алексей Роза
Пару страниц назад ты говорил, что UPDATE не нужен.


UPDATE файлов не нужен.

Алексей Роза
...где п.2 это практически точная копия моего варианта и таки там есть блокировка (Васе заблокирована возможность сохранить документ поверх Пети).


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

Петя не потеряет своих изменений ни при каких обстоятельствах, что бы там какой Вася не делал.

Сообщение было отредактировано: 30 июн 20, 18:04
30 июн 20, 18:06    [22159892]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
hVostt
Какие-то старые версии SVN сразу вспоминаются )

SVN, кажись, уже от рождения был безблокировочником. Впрочем, сейчас, в эру Git, все эти SS/SVN/TFS уже все вспоминаются как лютый ужас.
30 июн 20, 18:49    [22159918]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
В описанной мною схеме нет блокировки. Вася никогда не может перезатереть изменения Пети, так как все изменения сохраняются отдельными версиями. Просто актуальна всегда самая последняя версия.

ну т.е. все увидят только изменения Васи. А Петя может до усрачки гордиться своими изменениями, но их так никто и не увидит...
пока он их не пересохранит!
тогда Васины изменения пойдут на хер, а Петины изменения увидят все...
пока Вася их не пересохранит!
тогда Петины изменения пойдут на хер, а Васины изменения увидят все...
пока Петя их не пересохранит!
...
где конец этой истории?
30 июн 20, 19:23    [22159935]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 17:58 [22159888]
>Поэтому, как я уже говорил, хранение версий файлов решают эту проблему на корню.
<
Клиент редактирует файл на локальном компе. Поэтому всегда может сделать копию своей работы.
Потом, я не знаю, сколько пользователей может редактировать файл. И все их версии надо хранить? И потом искать?
30 июн 20, 19:24    [22159937]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза
ну т.е. все увидят только изменения Васи. А Петя может до усрачки гордиться своими изменениями, но их так никто и не увидит...
пока он их не пересохранит!
тогда Васины изменения пойдут на хер, а Петины изменения увидят все...
пока Вася их не пересохранит!
тогда Петины изменения пойдут на хер, а Васины изменения увидят все...
пока Петя их не пересохранит!
...
где конец этой истории?


Все увидят все изменения всех людей. Как бы об этом и речь.
30 июн 20, 20:10    [22159950]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ВМоисеев
Клиент редактирует файл на локальном компе. Поэтому всегда может сделать копию своей работы.


Раз вы так рассуждаете... И нафиг тогда ваше ПО ему упало? Он из без ваших соплей может всё в экселях/вордах сделать и в папку расшаренную сохранить. Нужна ли ему какая-то кривая приблуда, которая ему только мешает жить? Если уж на то пошло :)


ВМоисеев
Потом, я не знаю, сколько пользователей может редактировать файл. И все их версии надо хранить? И потом искать?


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

В ERP/CRM системах сохраняются версии, это давно обычное дело.

Вылазьте из танка )
30 июн 20, 20:13    [22159951]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>hVostt, сегодня, 20:13 [22159951]
>...Он из без ваших соплей может всё в экселях/вордах сделать и в папку расшаренную сохранить
<
Он понятия не имеет о расшаренных папках
30 июн 20, 22:40    [22160003]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
Все увидят все изменения всех людей. Как бы об этом и речь.

hVostt
В ERP/CRM системах сохраняются версии, это давно обычное дело.
Вылазьте из танка )

Пардон за толстую броню, но я всё ещё слабо представляю, как это должно выглядеть...
Даже при том, что с CRM знаком не по наслышке.
Допустим, у меня форма по заполнению паспорта.
Вася заполнил, сохранил.
Петя заполнил, сохранил.
Коля заполнил, сохранил.
Да кто угодно заполнил, сохранил.

Во1, мы тупо сохраняем всем разные версии (даже без оглядки на сохранение одновременно открытых документов)? Или сохраняем только те, которые одновременно 2-3-5 челов редактировало?
во2, как теперь будет выглядеть форма сохранения паспорта? Там под каждым инпутом будут вылазить все остальные варианты?
в3, какая именно версия будет актуальной то - самое главное?
1 июл 20, 08:35    [22160079]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ChA
Member

Откуда: Москва
Сообщений: 11001
Всё время появляются какие-то новые версии, условия всё время меняются, ответы усложняются, возникают новые варианты, ищутся какие-то абстрактные абсолютные решения. Решение должно идти от конкретной задачи, её постановки и бюджета, а не произвольных фантазий на все случаи жизни в духе "а если бы он вёз патроны". Вообще непонятно, зачем задача версионности, если таковая возникнет, должна решаться на уровне базы данных, а не специальных приложений для синхронизации изменений и отслеживания версий. Пусть разработчики таких приложений и ломают головы в каком виде и где хранить их данные, хоть в БД, хоть в файловой системе, у которых в таком случае основная задача обеспечить сохранность этих данных.
1 июл 20, 12:32    [22160148]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
ChA
Всё время появляются какие-то новые версии, условия всё время меняются, ответы усложняются, возникают новые варианты, ищутся какие-то абстрактные абсолютные решения. Решение должно идти от конкретной задачи, её постановки и бюджета, а не произвольных фантазий на все случаи жизни в духе "а если бы он вёз патроны". Вообще непонятно, зачем задача версионности, если таковая возникнет, должна решаться на уровне базы данных, а не специальных приложений для синхронизации изменений и отслеживания версий. Пусть разработчики таких приложений и ломают головы в каком виде и где хранить их данные, хоть в БД, хоть в файловой системе, у которых в таком случае основная задача обеспечить сохранность этих данных.


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

Как раз бюджет всегда является ограничением. Отсюда растут ноги у бест пректикс и т.д.
2 июл 20, 00:13    [22160465]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза
Пардон за толстую броню, но я всё ещё слабо представляю, как это должно выглядеть...
Даже при том, что с CRM знаком не по наслышке.
Допустим, у меня форма по заполнению паспорта.
Вася заполнил, сохранил.
Петя заполнил, сохранил.
Коля заполнил, сохранил.
Да кто угодно заполнил, сохранил.

Во1, мы тупо сохраняем всем разные версии (даже без оглядки на сохранение одновременно открытых документов)? Или сохраняем только те, которые одновременно 2-3-5 челов редактировало?
во2, как теперь будет выглядеть форма сохранения паспорта? Там под каждым инпутом будут вылазить все остальные варианты?
в3, какая именно версия будет актуальной то - самое главное?


Вариантов решения масса. Версии позволяют не терять изменения. Потеря изменений -- страшный и обидный результат работы с ПО. Как минимум в ПО добавляют аудит изменений.

В любых сценариях актуальная версия та, которая была сохранена последней. При любой блокировке, любых решениях. Как работать с изменениями -- вопрос UX.

Ещё учитывать контекст задачи. Как например у ВМоисеева, его "оптимистичная блокировка", которой он так гордится, с вероятностью 99,9% нафиг никому не нужна в принципе. Её наличие или отсутствие вряд ли кто-либо когда-то заметит, кроме него самого.

При работе с форматируемыми документами два варианта применяются в настоящее время:
1. Версии
2. Совместное редактирование онлайн

Сообщение было отредактировано: 2 июл 20, 00:22
2 июл 20, 00:24    [22160469]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
2. Совместное редактирование онлайн

а это не то, о чём я писал?
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить
2 июл 20, 00:38    [22160474]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза
hVostt
2. Совместное редактирование онлайн

а это не то, о чём я писал?
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить


Нет, совместное редактирование, это когда вы сразу видите изменения, которые вносят другие пользователи. Можете попрактиковаться в на гугл документах, например.

Уведомление вам чем поможет? Ну вот вы заполняете некую форму. Потратили кучу времени, а тут вылазит уведомление, что какой-то там Вася уже внёс какие-то свои изменения.

И, как говорится, и чо? )) Что теперь делать? Свои изменения сохранять -- сыкотно, Вася придёт и ругаться будет. Отказываться от своих изменений обидно. Что делать?
2 июл 20, 01:43    [22160486]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
hVostt
Member

Откуда:
Сообщений: 17820
Алексей Роза,

Вообще предлагаю создать отдельную тему, если это вам интересно обсудить. Тут и правда зафлудили не по теме...
2 июл 20, 01:44    [22160487]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2320
>Алексей Роза, сегодня, 00:38 [22160474]
>сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить
<
Согласен. Вася должен знать, что отредактировал копию не актуального оригинала файла. И сохранять его копию в качестве оригинала не совсем правильно.
Но как он узнает об этом печальном событии?
Откуда Петя знает, что надо сообщать Васе, Коле …?
Я пытаюсь сделать тоже, что и Вы. Но в процессе попытки переписи копии в оригинал.
Мне не надо знать, кто ещё возможно редактирует свою копию оригинала.
Клиент получает сообщение, что его отредактированная копия не соответствует актуальному оригиналу.
Что клиент будет делать в этом случае - лучший вариант, он заново считает оригинал на свой комп и повторно введет изменения.
Вопрос, каков объем изменений?
Если большой, то имеет смысл сделать (возможно автоматически) копию копии, но на рабочем компе.
2 июл 20, 10:14    [22160624]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Алексей Роза
Member [заблокирован]

Откуда: РФ
Сообщений: 414
hVostt
Алексей Роза,

Вообще предлагаю создать отдельную тему, если это вам интересно обсудить. Тут и правда зафлудили не по теме...

давайте продолжать тут
2 июл 20, 10:38    [22160645]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
fkthat
Member

Откуда:
Сообщений: 2729
Кстати, совершенно не упомянули такую тему, как репликация, шардинг и т.п., что те же sql filestream и mongodb gridfs умеют.
6 июл 20, 11:40    [22162607]     Ответить | Цитировать Сообщить модератору
 Re: О хранении картинок в блобах  [new]
Изопропил
Member

Откуда:
Сообщений: 31497
В случае репликации все замки, вебсокеты и прочая дребедень идут лесом
6 июл 20, 14:28    [22162780]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6      [все]
Все форумы / Проектирование БД Ответить