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