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