powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / О хранении картинок в блобах
25 сообщений из 135, страница 5 из 6
О хранении картинок в блобах
    #39974347
fkthat
Алексей Роза
так зачем тогда фейсбук так сделал?

Сделал как?

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

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

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

Кэширование более часто используемых миниатюр изображений в памяти на оригинальных серверах для масштабируемости, надежности и производительности
Распределение их по CDN для уменьшения сетевых задержек
Возможно сделать еще лучше:
Хранение изображений в больших бинарных файлах (blob)
Сервис, отвечающий за фотографии имеет информацию о том, в каком файле и с каким отступом от начала расположена каждая фотография (по ее идентификатору)
Этот сервис в Facebook называется Haystack и он оказался в 10 раз эффективнее «простого» подхода и в 3 раза эффективнее «оптимизированного»
YouTube Video
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974377
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>mad_nazgul, сегодня, 07:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22158772][22158772]
>Э-э-э никак…
<
Э-э-э …
1. Сотрудник как сущность - очевидность.
2. Часть атрибутов хранится в базе (суррогатный ключ, ФИО, Дата рождения и т.п.) - очевидно.
3. Атрибут "Личное дело" - реальность. Но может хранится в файловой системы.
4. Атрибут "Личное дело" содержит информацию в формате MS Word.
5. Сущности "Сотрудник" не важно, что о ней известно базе данных или файловой системе.


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

А так. Если хранить файлы в BLOB-ах, то на них трудно натравить системы полнотекстового поиска.
Если же файла хранятся в файловой системе. То можно с помощью сторонних инструментов вытащить информацию, чтобы по ней искать.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974445
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 18:49 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159221][22159221]
>Сохранять обе версии файла, последняя версия будет того, кто последний сохранил.
<
Нет.
Сохранена должна быть отредактированная копия оригинала файла, который находится на файловом сервере. Отредактированная копия становится оригиналом.


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

Что значит "нет"?
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974475
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
Хранение изображений в больших бинарных файлах (blob)

Ты считаешь, что это означает, что фейсбук хранит их как varbinary(max) в БД? LOL.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974511
fkthat
Алексей Роза
Хранение изображений в больших бинарных файлах (blob)

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

да не, просто в 2 ночи надо спать, а не на форумах писать
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974555
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 10:46 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159495][22159495]
>И в чём противоречие с тем, что я сказал?
<
Рассмотрим ситуацию:
Вася и Петя загрузили оригинал информационного файла и начали редактировать каждый свою часть.
Вася шустрый и быстренько закончил своё дело, сохранив свою работу в на сервере. Оригинал изменился.
Петя пошёл попить чайку и свою работу закончил после Васи. Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974604
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.

Ну, если ты знаешь способ, как мержить файлы совершенно произвольного формата, то я снимаю шляпу.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974625
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 10:46 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159495][22159495]
>И в чём противоречие с тем, что я сказал?
<
Рассмотрим ситуацию:
Вася и Петя загрузили оригинал информационного файла и начали редактировать каждый свою часть.
Вася шустрый и быстренько закончил своё дело, сохранив свою работу в на сервере. Оригинал изменился.
Петя пошёл попить чайку и свою работу закончил после Васи. Но он не может сохранить свою отредактированную копию в качестве оригинала, ибо будет потеря информации Васи.


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

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

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

Так дела не делаются.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974629
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

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

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

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

В любом случае, блокировка тут не нужна, так как она в вашем решении легко обходится пользователем, и дорого обходится бизнесу. Решение довольно херовое.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974650
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974654
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Решение довольно херовое.

Особенно такая блокировка, когда Вася может заблокировать файл и уехать в отпуск на месяц на Красное море (или вообще уволиться, помереть, или в тюрьму сесть). В доисторические времена, когда еще работали с MS Source Safe сталкивались с таким :)
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974680
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить


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

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

Идеальное решение -- мержинг, автоматический или ручной.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974683
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Решение довольно херовое.

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


Какие-то старые версии SVN сразу вспоминаются )
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974714
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:26 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159734][22159734]
>И пошёл Вася бить лицо Пете, так как из-за него он не может сохранить результат своей работы, правильно? :)
<
Не понимаю.
Информационная система работает с сущностями. Каждая сущность обязательно имеет суррогатный ключ и timestamp для реализации оптимистической блокировки. Также, одним из атрибутов сущности может быть файл.
Вася и Петя, как минимум имеют <pk_Entity, timestamp>.
Петя в процессе попытки переписать отредактированную им копию на сервер, проверяет методом UPDATE тот факт, что он правил копию, соответствующую оригиналу (оригинал сущности не изменился). Если ок, заменяет оригинал файла своей отредактированной копией, с изменением timestamp.
Далее, проснулся Вася и отредактировал файл и пытается проверить свою копию на соответствие оригинала. Получает не штатную ситуацию, но с новым timestamp. Он может плюнуть на всё и повторить перепись своей отредактированной копии с потерей работы Пети. Может поступить более аккуратно - повторно загрузить оригинал, что содержит изменения Пети.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974723
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Он может плюнуть на всё и повторить перепись своей отредактированной копии с потерей работы Пети. Может поступить более аккуратно - повторно загрузить оригинал, что содержит изменения Пети.


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

Поэтому, как я уже говорил, хранение версий файлов решают эту проблему на корню. И нафиг ваша блокировка там уже не нужна.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974724
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Не понимаю.


Это очевидно. Вы же не имеете желания рассматривать любые решения, способы разработки, кроме того, что смогли осилить. А что осилили, поднимаете на флаг, как достижение уровня открытия Америки.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974725
hVostt
Алексей Роза
сразу как Петя сохранил документ Васе всплывает уведомление (в идеале через websocket), что документ изменён и его надо перезагрузить


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

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

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

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

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

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

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

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

...где п.2 это практически точная копия моего варианта и таки там есть блокировка (Васе заблокирована возможность сохранить документ поверх Пети).
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974726
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
и вот тут я запутался...
этот мержинг?
авторMerge — оператор языка SQL, который позволяет слить данные одной таблицы с данными другой таблицы. При слиянии таблиц проверяется условие, и если оно истинно, то выполняется Update, а если нет - Insert.


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

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


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

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


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

Петя не потеряет своих изменений ни при каких обстоятельствах, что бы там какой Вася не делал.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974749
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Какие-то старые версии SVN сразу вспоминаются )

SVN, кажись, уже от рождения был безблокировочником. Впрочем, сейчас, в эру Git, все эти SS/SVN/TFS уже все вспоминаются как лютый ужас.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974764
hVostt
В описанной мною схеме нет блокировки. Вася никогда не может перезатереть изменения Пети, так как все изменения сохраняются отдельными версиями. Просто актуальна всегда самая последняя версия.

ну т.е. все увидят только изменения Васи. А Петя может до усрачки гордиться своими изменениями, но их так никто и не увидит...
пока он их не пересохранит!
тогда Васины изменения пойдут на хер, а Петины изменения увидят все...
пока Вася их не пересохранит!
тогда Петины изменения пойдут на хер, а Васины изменения увидят все...
пока Петя их не пересохранит!
...
где конец этой истории?
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974766
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 17:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159888][22159888]
>Поэтому, как я уже говорил, хранение версий файлов решают эту проблему на корню.
<
Клиент редактирует файл на локальном компе. Поэтому всегда может сделать копию своей работы.
Потом, я не знаю, сколько пользователей может редактировать файл. И все их версии надо хранить? И потом искать?
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974774
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
ну т.е. все увидят только изменения Васи. А Петя может до усрачки гордиться своими изменениями, но их так никто и не увидит...
пока он их не пересохранит!
тогда Васины изменения пойдут на хер, а Петины изменения увидят все...
пока Вася их не пересохранит!
тогда Петины изменения пойдут на хер, а Васины изменения увидят все...
пока Петя их не пересохранит!
...
где конец этой истории?


Все увидят все изменения всех людей. Как бы об этом и речь.
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974775
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Клиент редактирует файл на локальном компе. Поэтому всегда может сделать копию своей работы.


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


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


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

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

Вылазьте из танка )
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974805
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 20:13 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325775&msg=22159951][22159951]
>...Он из без ваших соплей может всё в экселях/вордах сделать и в папку расшаренную сохранить
<
Он понятия не имеет о расшаренных папках
...
Рейтинг: 0 / 0
О хранении картинок в блобах
    #39974832
hVostt
Все увидят все изменения всех людей. Как бы об этом и речь.

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

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

Во1, мы тупо сохраняем всем разные версии (даже без оглядки на сохранение одновременно открытых документов)? Или сохраняем только те, которые одновременно 2-3-5 челов редактировало?
во2, как теперь будет выглядеть форма сохранения паспорта? Там под каждым инпутом будут вылазить все остальные варианты?
в3, какая именно версия будет актуальной то - самое главное?
...
Рейтинг: 0 / 0
25 сообщений из 135, страница 5 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / О хранении картинок в блобах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]