Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Оптимальное хранение Image в БД MSSQL  (Прочитано 16821 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
zubr
Гость
« : 03-07-2008 08:50 » 

Собственно, вопрос не конкретно по MSSQL, думаю тип БД здесь не принципиален. Ситуация такова: Достаточно-большая клиент-серверная БД, работающая в локальной сети, должна хранить различную информацию, в том числе и фото. Как оптимальнее с точки зрения скорости работы БД, резервного копирования, безопасности (на случай слета диска, с возможностью последующего восстановления) хранить фото:
1-й вариант: хранить фото в файлах, а в БД линки на файлы
2-й вариант: хранить фото в отдельной от других данных таблице БД
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 03-07-2008 08:53 » 

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

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 03-07-2008 09:06 » new

Хммм...

Я бы сделал второй вариант. Обоснование - центральное хранение информации. Так перекрываются пункты "резервного копирования и безопасности". Иначе надо для КАЖДОГО бэкапа БД делать соответствующий бэкап ВСЕХ файлов. Запаришься управлять такой системой.
Но надо смотреть как часто изменяются файлы - в смысле содержимое файлов, сколько их, сколько одновременных пользователей у БД. Если очень часто, много, много, то стоит ли так нагружать БД, да и потянет ли она? Справится ли? Что будет, если например несколько пользователей захотят одновременно изменить один и тотже файл?  В таком случае может быть лучше применить какую-нить систему управления версиями? А ля SVN. И уже бекапить её в свою очередь.
« Последнее редактирование: 03-07-2008 09:08 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zubr
Гость
« Ответ #3 : 03-07-2008 09:21 » 

Пользователей у БД будет не много (не более 5 одновременно), фотки в основном будут добавляться, а не изменяться (хотя возможность редактирования присутствует). Но за счет фоток БД будет разрастаться на 2 гига в год. Меня смущает следующее - если слетит диск, вероятность что можно будет восстановить БД в каком случае выше, когда 1 но большой файл БД надо восстановить (2-й вариант) или не очень большой файл БД + тысячи файлов фоток (1-й вариант).
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 03-07-2008 09:52 » 

Вероятность в обоих случаях равна 50% - либо восстановишь, либо нет. Ага

В этом приколе есть доля правды. Если ты восстановишь БД из бэкапа, то восстановишь ВСЁ. С отдельными файлами такого нельзя гарантировать. Я имею ввиду, что восстановив БД, ты так же восстановишь ВСЕ отдельные файлы, именно к ней относящиеся. Кроме того это будте такой геморр. Но это конечно зависит от того, как ты их будешь сохранять, как часто, и какую версию потребуется восстановить. ЭТо кстати не обязательно должно произойти в результате сбойя харда. У юзеров, как известно, ручки ой какие шаловливые.

При уточнённых условиях я всё больше склоняюсь к хранению файлов в БД. 2Г в год это пустяк для БД. 5 юзеров - ваще ничто. Те я так понял - фото это сопутствующая инфорамация, а не основная? Как например БД для фотографов.
« Последнее редактирование: 03-07-2008 09:54 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #5 : 03-07-2008 10:45 » 

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

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
zubr
Гость
« Ответ #6 : 04-07-2008 06:23 » 

Цитата
Те я так понял - фото это сопутствующая инфорамация, а не основная? Как например БД для фотографов.
Да, это сопутствующая информация.

Я тоже склоняюсь к 2-му варианту. Тем более заказчик удаленный и с шаловливыми ручками. В период моего с ними сотрудничества у них уже система слетала (какой то юзер вируса занес), так пришлось им пошаговый хелп писать по установке MS SQL.

Всем спасибо.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 05-07-2008 10:25 » 

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

На работе имеется опыт подобного. Система была запущена еще до меня. Я предлагал начальнику поменять ее на хранение картинок в файлах, но он настоял на текущем решении. Итог: дапм базы все растет и растет и скоро перестанет влезать на DVD болванку. Приходится делать его инкрементальным, что снижает надежность хранения бекапов, т.к. при порче "нулевого" бекапа не удастся востановить базу из инкрементального. Выход: раз в год все равно делаю полный бекап.

Плюс хранения в БД: если клиент БД находится на другой машине, то ему нет необходимости иметь доступ к файловому архиву - это упрощает интерфейс.

Минус БД: нельзя просмотреть картинку без спец.написанной проги. В случае файлового хранения можно сделать любым просмотрщиком картинок.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines