powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли хранить содержимое файлов в полях базы данных?
25 сообщений из 43, страница 1 из 2
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030352
as111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Проектирую систему и вот тут встал вопрос где хранить файлы (документы) ?
Можно засунуть их в саму таблицу, а можно в виде файлов на жеском диске, а в базе хранить только пути.
Смотрел другие системы, есть и с такой реализацией и с такой.
База MS SQL Server.

Есть какие весткие доводы чтобы НЕ ХРАНИТЬ файлы в самой базе?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030384
RENaissance
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030575
as111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.

Посмотрел дискуссию - как всегда кончилось бросанием шапок друг в друга :-)

Плюну наверное на это дело, сделаю хранение в базе данных. Хоть один веский довод будет - мне так проще :-)
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030758
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всего хранить в базе, выделив отдельный tablespace под эту таблицу, желательно размещенный на другом диске.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030765
as111Добрый день!

Проектирую систему и вот тут встал вопрос где хранить файлы (документы) ?
Можно засунуть их в саму таблицу, а можно в виде файлов на жеском диске, а в базе хранить только пути.
Смотрел другие системы, есть и с такой реализацией и с такой.
База MS SQL Server.

Есть какие весткие доводы чтобы НЕ ХРАНИТЬ файлы в самой базе?
Веский довод "против" только один - размер такой таблицы в базе. Документы могут быть размером и в несколько мегабайт каждый (конечно, зависит от конкрентной задачи), тогда как пути - обычно намного менее 1 кБ .
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030856
as111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В среднем размер файлов около 1Мb. Хотя может колебаться в пределах 0,1-80Мb. Теоретически могут быть и больше, но это уже исключения из правил.
Их количество? Ну это будет архив небольшой конторы. Сейчас в архиве около 1 млн документов, но их кол-во не кто точно не знает.

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

Ну и мои наблюдения...
1. Системы монстры стараются хранить их как файлы. Опыт работы показывает, что администрирование такой системы это отдельная задача.
2. Средние системы стараются хранить в базе. Проще, наглядней, все в одном ящике. Нет проблем с вирусами, админами и.д. Как самый показательный пример MS SPPS.

Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой...
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34030934
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на MS SQL сервере файлы можно хранить в отдельной таблице, а сами таблицы на отдельном HDD. IMHO почти то же самое что "хранить ссылки".
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34031613
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
as111Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой...
Свои две копейки:
-Для клиентского приложения несколько сложнее обработать файл находящийся в БД
-Сложнее осуществлять поиск в файлах, особенно малораспространенных стантартов
+Архив документов возможно потребует хранение версий, а вот это намного проще организовать в БД
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34031743
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets as111Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой...
Свои две копейки:
-Для клиентского приложения несколько сложнее обработать файл находящийся в БД

==== нет - а) SELECT BLOB-поля б) сохранение бинарного потока из него в файл на клиенте = 3 строки кода.

-Сложнее осуществлять поиск в файлах, особенно малораспространенных стантартов

======== а) в SQL Server встроенные средства поиска б) этот пункт так-же для хранения файлов ВНЕ БД

+Архив документов возможно потребует хранение версий, а вот это намного проще организовать в БД
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34031885
as111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

Ну вроде решили, теперь с чистой совестью буду хранить файлы в базе :-)
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34255890
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы продолжить разговор с точки зрения путейца, т.е. если используется хранение в файловой системе по конкретным путя/путю, то как рациональнее? Или может назначит одну папку для хранения файлов и не заморачиваться? Или создать ограниченное их количество по типам лежащих там файлов, скажем /DOC/, /XLS/, /TXT/ ?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256047
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вообще, как поведет себя NTFS, если в папке 300-500тысяч файлов?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256071
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу выбора самого способа хранения - это предоствалено решать пользователю, ему доступны оба варианта, тогда вопрос оптимизации "путей" лучше бы как то оптимизировать, не предлагать же заниматься этим пользователю?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256110
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой!
Тигра, али я не прав?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256167
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для хранения 300-500к файлов в NTFS её надо будет потюнить на предмет выделения достаточного количества свободных allocation units, иначе систему начнёт очень забавно плющить...
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256178
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlДля хранения 300-500к файлов в NTFS её надо будет потюнить на предмет выделения достаточного количества свободных allocation units, иначе систему начнёт очень забавно плющить...
Я из программы могу (ради любимого юзера) настругать скока надо папок/подпапок, так это нужно делать? Почему?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256527
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограммиздищеИ чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой!
Тигра, али я не прав?
Да нет наверное - что тут делать в среднем звене? Наигрывать путь файла и отдавать его клиенту? Так можно и на клиенте тоже самое сделать.

Я бы делал хранение в БД - со всех сторон преимущества, удобство и упрощение. Сделал один раз и забыл.

-- Tygra's --
Мои фотогалереи тут
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256613
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra ПрограммиздищеИ чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой!
Тигра, али я не прав?
Да нет наверное - что тут делать в среднем звене? Наигрывать путь файла и отдавать его клиенту? Так можно и на клиенте тоже самое сделать.

Я бы делал хранение в БД - со всех сторон преимущества, удобство и упрощение. Сделал один раз и забыл.

-- Tygra's --
Мои фотогалереи тут
Среднее звено должно обеспечивать передачу файла туда и обратно, не прибегая ни к каким шарам.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34256623
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше, чтобы был выбор,т.е. файлы не особо здоровенные, пользователь будет класть в БД, а что-нибудь типа DVD фильнов - на внешнее устройство.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257232
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вставлю и я свои две копейки. Вообще, данный вопрос, как и все прочие, надо рассматривать в контексте задачи и применяемых инструментов. Если рассуждать абстрактно-субъективно, то я сторонник хранения файлов в файловой системе, а не в БД. Основных причин тому несколько.

1. Удобство сопровождения / администрирования. Мало приятного возиться с блобами в стандартных админских тулзах типа ms sql enterprise manager, IBExpert и иже с ними.

2. Индексирование содержимого файлов. Не все серверы БД умеют это хорошо делать. Я понимаю, что тут речь про ms sql у которого, вероятно, с этим все хорошо. Но есть, например, Firebird и прочие, у которых с этим вообще никак. Зато есть сторонние продукты, типа встроенного в винду Indexing Service или локального Google и т.д., которые с задачей индексирования и поиска файлов разных форматов справляются на ура. А состыковать их с сервером БД - дело техники.

3. Открывает файлы из БД и складывает их туда, как правило, пользователь со своей рабочей станции. А там, в большинстве случаев, винда и ее приложения. В случае хранения файлов в БД придется как-то описывать, что же там за файл внутри и чем его открывать. И где это нечто брать на клиентской машине. В конечном итоге получим и проблему "Save as...", которая описывалась по приведенной тут ссылке, и проблему сохранения временного файла на локальной машине пользователя. При хранении на сервере в файловой системе не сильно сложно реализовать открытие файла прямо с него родимого командой "start ИмяДокумента" - и пускай винда сама разбирается, что там ей подсунули и чем это открыть. (соглашусь, что такое поведение можно эмулировать и при хранении файлов в БД, но, как говорится, "нафига козе баян" или зачем усложнять себе жизнь). Кстати, и проблемы просмотра любимого 5GB видеоролика не возникнет - все уже написано за нас. :)

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

В общем, базе - базово, а файловой системе - файлово. :)
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257235
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограммиздищеСреднее звено должно обеспечивать передачу файла туда и обратно, не прибегая ни к каким шарам.не очень понятно, как это возможно без шар, в общем случае? точнее, что это будет за среднее звено, которое подсунуло ворду файл (и куда подсунуло, кстати? во временный каталог на клиенте?), а затем, когда пользователь нажал "save", сохранило его куда надо в бд. а если это не ворд, а фотошоп / корел / акробат / ... ? будем в среднем звене держать на каждое такое пользовательское приложение свою поддержку?

похоже, я безнадежно отстал от жизни и чего-то не знаю в современных технологиях? :)
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257239
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограммиздищеХотелось бы продолжить разговор с точки зрения путейца, т.е. если используется хранение в файловой системе по конкретным путя/путю, то как рациональнее? Или может назначит одну папку для хранения файлов и не заморачиваться? Или создать ограниченное их количество по типам лежащих там файлов, скажем /DOC/, /XLS/, /TXT/ ?мы храним по-простому: есть одна папка, назовем ее file-storage, а в ней на каждый файл заводится своя папка с именем, совпадающим с id-файла, который (id) используется в бд для привязки данного файла к прочим объектам. в этой id-папке лежит файл с тем оригинальным именем, которое было задано пользователем.

что-то наверное спать пора - нет четкости фраз, путанно изъясняюсь уже... :)
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257403
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой!
что имеете протифф? в описываемом случае - электронный архив - имхо приемлемой альтернативы нет ... из своего опыта: время создание бэкапов БД (ORACLE) и их размер ... напрягает ...
не очень понятно, как это возможно без шар, в общем случае? точнее, что это будет за среднее звено, которое подсунуло ворду файл (и куда подсунуло, кстати? во временный каталог на клиенте?), а затем, когда пользователь нажал "save", сохранило его куда надо в бд. а если это не ворд, а фотошоп / корел / акробат / ... ? будем в среднем звене держать на каждое такое пользовательское приложение свою поддержку?

похоже, я безнадежно отстал от жизни и чего-то не знаю в современных технологиях? :)
дык среднее звено именно для этого ... чтобы шар не было ...
1. каталог выгрузки файла - настройка пользователя на клиенте (по-умолчанию путь для временных файлов винды)
2. "когда пользователь нажал "save"" - сохранение "обычное" ... да и зачем по другому? - а. это с подавляющей вероятностью лишь промужуточное состояние документа - зачем его "выкладывать" на средний слой (исключение - если пользователь планирует работать на другом компе - ну эта фсе элементарно реализуется) б. фсякие "автосохранение" (например WORD) - эта становится смешным ... те загрузка-выгрузка (+загрузка в "родные" приложения) собственно файлов с/на среднее звено - с интерфейса приложения когда "явная", когда - нет - фсе реализуемо ... далее для приложений поддерживающих OLE по желанию оформляешь необходимый функционал по "сохранению" (а при большом желании и выгрузку) на сервере в "родные" меню и панели ... для этого ты, разумеется, должен оформлять свое приложение как OLE-сервер и прописывать в нем внешние интерфейсы ... простейший пример - 1С-архив ... но это - по желанию
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257487
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NSFuimusдык среднее звено именно для этого ... чтобы шар не было ...
1. каталог выгрузки файла - настройка пользователя на клиенте (по-умолчанию путь для временных файлов винды)а зачем так стремиться, чтобы шар не было? по мне так удобнее для сопровождения и проще для написания системы один раз сделать эти шары при создании пользователя в системе, отдать на них права средствами ОС и не париться, что в локальном temp-каталоге пользователя накапливается [конфеденциальная] информация, а он об этом и не подозревает (вы давно заглядывали в свой temp-каталог? там много интересного можно обнаружить ;) ). это раз.

NSFuimus2. "когда пользователь нажал "save"" - сохранение "обычное" ... да и зачем по другому? - а. это с подавляющей вероятностью лишь промужуточное состояние документа - зачем его "выкладывать" на средний слой (исключение - если пользователь планирует работать на другом компе - ну эта фсе элементарно реализуется) б. фсякие "автосохранение" (например WORD) - эта становится смешным ... те загрузка-выгрузка (+загрузка в "родные" приложения) собственно файлов с/на среднее звено - с интерфейса приложения когда "явная", когда - нет - фсе реализуемо ... далее для приложений поддерживающих OLE по желанию оформляешь необходимый функционал по "сохранению" (а при большом желании и выгрузку) на сервере в "родные" меню и панели ... для этого ты, разумеется, должен оформлять свое приложение как OLE-сервер и прописывать в нем внешние интерфейсы ... простейший пример - 1С-архив ... но это - по желаниювот я и говорю, если я вас правильно понял, то на каждое внешнее приложение придется городить свой функционал. либо со стороны среднего слоя, либо со стороны внешнего приложения. либо с обеих сторон сразу. а зачем его городить, если можно сделать шару и легкую поддержку со стороны серверной и клиентской частей системы, не зависящую от типов документов? это два.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257531
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвот я и говорю, если я вас правильно понял, то на каждое внешнее приложение придется городить свой функционал. либо со стороны среднего слоя, либо со стороны внешнего
:) ниправильно поняли ... написал - по желанию с интерфейса программы загрузка "родных" для конкретного файла приложений - через shellexecute(Ex) ... все навороты с OLE - всего лишь навороты ... но имейте ввиду, что понятие "законченное приложение" включает в себя наличие у него неких внешних интерфейсов обеспечивающих доступ к его функциональности из-вне ...
сопровождать приложение - одно, а обеспечивать разграниченный доступ к документам в том числе "коммерческая тайна" - эта софсем другое ... эта три :)
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли хранить содержимое файлов в полях базы данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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