powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли хранить содержимое файлов в полях базы данных?
43 сообщений из 43, показаны все 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
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257547
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и прошу поверить мне на слово - свой TEMP я знаю :) ... ибо XML приходящий с сервера приложений и выгружаемый в TEMP бывает "небезгрешен" паэтому ...
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257616
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 афтору темы
если уж остановишься на простом клиент-сервере (хотя вру - эта универсальный механизм) - введи в систему понятие "файловых шкафов" - в твоем случае это будут разные таблицы в БД ... соответсвенно ежедневные бэкапы необходимо нужно будет делать только с "активного" файлового шкафа ... ну и манипулируй ими переодически - сливай их допустим для создания "годового" и проч . ... возможностей для администрирования и проч. в этом случае - огромно
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257775
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чтобы клиент не видел путей, то тут уж точно БД - какое еще звено зачем приплетать.
Администрировать, бэкапить и т.д. точно лучше в БД.
Индексирование - ну тут разные возможности, в основном можно, про IB не говорим :)
Файл откроется сам - если великие проектировщики файловых приложений не знают, что в БД можно хранить расширение файла, при запросе файла юзером сохранить во временный файл на диске с таким же расширением и дернуть стандартный метод винды открытия файла соответствующим такому типу файлов приложением - тогда о чем разговор вообще?
При закрытии файла либо отслеживать это, либо явно жать кнопку сохранить файл.

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

-- Tygra's --
Мои фотогалереи тут
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257785
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus если уж остановишься на простом клиент-сервере (хотя вру - эта универсальный механизм) - введи в систему понятие "файловых шкафов" - в твоем случае это будут разные таблицы в БД ... соответсвенно ежедневные бэкапы необходимо нужно будет делать только с "активного" файлового шкафа ...
Бэкапы обычно со всей БД бэкапятся.
Это уж если хочется - да даже и нужно - делать отдельные БД по каким-то признакам. Годы, типы, отделы и т.д. Тогда и забыкапить легко будет, и поднять......

-- Tygra's --
Мои фотогалереи тут
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257811
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бэкапы обычно со всей БД бэкапятся.
"обычно" теряет всякий смысл когда идет речь о ежедневных бэкапах миллионов файлов "размером 0.1-80 Мб"
то уж если хочется - да даже и нужно - делать отдельные БД по каким-то признакам. Годы, типы, отделы и т.д. Тогда и забыкапить легко будет, и поднять......
я предложил самый простой и ненадуманный вариант бэкапа - включать в него родного только ту таблицу в которую загружают файлы ВСЕХ типов, ВСЕ отделы, в течение ВСЕГО времени определяемого и контролируемого администратором ... и тд и тп ... этот механизм вообщем-то де-факто ... придуман не мной ...
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34257954
HHD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HHD
Гость
А никто не задумывался о размере базы? Миллион файлов по 1Мб - это примерно 1Тб. Представьте, как тяжело администрировать такую базу. У нас сейчас стоит похожая задача, но там примерно 250Гб выходит, и вроде склоняемся к решению хранить пути в BFILE.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258012
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никто не задумывался о размере базы? Миллион файлов по 1Мб - это примерно 1Тб. Представьте, как тяжело администрировать такую базу.
истину глаголишь ... только лично я склоняюсь к среднему звену
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258150
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМиллион файлов по 1Мб - это примерно 1Тб. Представьте, как тяжело администрировать такую базу
Так в ФС не меньше получится! А то и больше, учтывая хвосты кластеров. И админить ФС с таким количеством файлов ничуть не легче. А размер MFT на такое кол-во файлов тоже не слабый получится.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258213
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, упоминали или нет еще один плюс хранения файлов в БД - возможность применения к данным встроенных механизмов СУБД. В частности - репликация, бэкап, управление правами доступа.
Это, конечно, реализуемо и в случае хранения файлов в ФС, но тогда придется использовать дополнительные интструменты и не всегда это легкореализуемо.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258700
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorK авторМиллион файлов по 1Мб - это примерно 1Тб. Представьте, как тяжело администрировать такую базу
Так в ФС не меньше получится! А то и больше, учтывая хвосты кластеров. И админить ФС с таким количеством файлов ничуть не легче. А размер MFT на такое кол-во файлов тоже не слабый получится.
Мдя..файловая система нехилая получается, если учесть, что каждому файлу папку надо создать, да все это уровней на 40..50 по иерархии папок, так что при 1 миллионе файлов, файловых объектов больше, т.е. + папки, чем больше таких объектов,тем больше кусочков кластеров. Если детально разграничены права в самой базе, то трубуется, чтобы данные админом файл-сервера права юзерам на соотв. папки/подпапки соответствовали тем,что в БД. Но с другой стороны, восстановление из бэкапа большой БД тоже проблема. Мне захотелось обременить этими проблемами самого пользователя, пусть решает сам, а софтина должна давать выбор.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258722
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне также кажется, что должно быть звено с интерфейсов, дающем возможность гулять по папкам сервера и вибирать файла(при соотв. правах), это должно быть доступно со стороны клиента, но он должен подключаться по TCP/HTTP
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34258789
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimus Бэкапы обычно со всей БД бэкапятся.
"обычно" теряет всякий смысл когда идет речь о ежедневных бэкапах миллионов файлов "размером 0.1-80 Мб"
то уж если хочется - да даже и нужно - делать отдельные БД по каким-то признакам. Годы, типы, отделы и т.д. Тогда и забыкапить легко будет, и поднять......
я предложил самый простой и ненадуманный вариант бэкапа - включать в него родного только ту таблицу в которую загружают файлы ВСЕХ типов, ВСЕ отделы, в течение ВСЕГО времени определяемого и контролируемого администратором ... и тд и тп ... этот механизм вообщем-то де-факто ... придуман не мной ...
Это если у вас есть возможность забыкапить отдельно одну таблицу - валяйте.
А если нет - чего бэкапить будете?
Потому и лучше сразу разделять и структуру всего этого сразу прописывать.

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

-- Tygra's --
Мои фотогалереи тут
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34259103
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограммиздищеМне также кажется, что должно быть звено с интерфейсов, дающем возможность гулять по папкам сервера и вибирать файла(при соотв. правах), это должно быть доступно со стороны клиента, но он должен подключаться по TCP/HTTP
Тема собсно навеяна тем, что допустим пользователь имеет полные права, клиентская программа запущена за пределами LAN, а пользователь собирается некоторые файлы к базе прицепить/отцепить, может быть ничё и не надо писать, пусть ему возможность доступа к файлам админ обеспечивает?
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34259870
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограммиздищеМдя..файловая система нехилая получается, если учесть, что каждому файлу папку надо создать, да все это уровней на 40..50 по иерархии папок, так что при 1 миллионе файлов, файловых объектов больше, т.е. + папки, чем больше таких объектов,тем больше кусочков кластеров.а давайте-ка для начала определимся, зачем нам вообще файлы в БД? :) ну то есть тупо переносить какую-либо иерархию файлов в базу, по аналогии со структурой каталогов на диске - на мой взгляд просто ни к чему (мягко говоря). приведу пример: есть договор с поставщиком на тему свежих помидоров. кому-то из юзеров удобнее видеть документ в разделе "договоры с поставщиками", а кому-то - "договоры про помидоры" (извините за каламбур). :) но документ-то (или файл, если угодно) в обоих случаях один и тот же.

а средств борьбы с миллионами файлов на одном диске/разделе/каталоге на уровне той же ос windows server есть несколько - и линки на уровне ntfs, и dfs тот же, да и всякие софт/хард продукты третьих фирм пачками продаются наверняка (я давно не изучал сей вопрос).

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

кстати, всеми [не]любимый ms office (да и не только он, по-моему) имеет механизм атрибутов документов, встроенных в сам файл (document properties). засунув такой документ в блоб мы автоматически лишаем себя удовольствия поиска по таким атрибутам (думаю, что только у ms sql server есть такая возможность, если вообще есть). а если не лишаем, то получаем достаточно большой гемор по поддержке работы с этими атрибутами на серверной части разрабатываемого софта. другими словами, имея файл на диске мы имеем вагон существующих стандартных средств для работы с ним, а засунув его в блоб, в большинстве случаев, приходится эти средства реализовывать самостоятельно. либо на каждый чих вытаскивать файл из блоба на диск и делать там с ним что-то. а ради чего? просто ради того, чтобы все лежало в n-томовом файле бд? честно, не понимаю.

ПрограммиздищеМне также кажется, что должно быть звено с интерфейсов, дающем возможность гулять по папкам сервера и вибирать файла(при соотв. правах), это должно быть доступно со стороны клиента, но он должен подключаться по TCP/HTTPучитывая вышесказанное, на сервере будет достаточно одноуровневой (ну или двухуровневой, смотря как считать) иерархии папок, ибо клиентское приложение не должно иметь прямой доступ в это хранилище ни под каким соусом. вся сопутствующая информация должна лежать в бд, в полях соответствующих таблиц. и, таким образом, дело клиентского приложения показать это юзеру в надлежащем виде - в виде папок, деревьев или еще как-нибудь.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34260571
Фотография Программиздище
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНе знаю, упоминали или нет еще один плюс хранения файлов в БД - возможность применения к данным встроенных механизмов СУБД. В частности - репликация, бэкап, управление правами доступа.
Это, конечно, реализуемо и в случае хранения файлов в ФС, но тогда придется использовать дополнительные интструменты и не всегда это легкореализуемо.
Такой подход обычно подвергают критике как недостаточно извращенный.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34260844
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программиздище miksoftНе знаю, упоминали или нет еще один плюс хранения файлов в БД - возможность применения к данным встроенных механизмов СУБД. В частности - репликация, бэкап, управление правами доступа.
Это, конечно, реализуемо и в случае хранения файлов в ФС, но тогда придется использовать дополнительные интструменты и не всегда это легкореализуемо.
Такой подход обычно подвергают критике как недостаточно извращенный.Поизвращаться нам и в других областях возможностей предостаточно :)

Кстати, вспомнил еще один плюс за храБД - транзакционность. Т.е. гарантия, что документ и запись с его атрибутами будут наличествовать или отсутстовать одновременно и будут соответствовать друг другу.
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34261003
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я фигею.
Тут не клон файловой системы обсуждают, а конкретную задачу - для какой-то системы нужно хранить файлы. Договора ли это, спецификации или рисунки - фиолетово, просто должны каким-то образом файлыы быть "привязаны" к системе.
Поэтому никого не волнуют какие-то десятки миллионов просто каких-то файлов, лежащих без причины на террабайтах дисков.
В связи с этим многократные упоминания об индексации текстов и уж тем более о проблеме поиска по атрибутам идут лесом, даже бегут. Но дляя интереса, вы уж попробуйте поискать по тексту или по атрибутам .doc какие-то файлы самим вордом на ваших миллионах файлов - наверное жутко быстро и эффективно будет, так???

И так, определились - проблемы поиска по тексту и свойствам файлов у нас нет. Есть собственный классификатор для этих дел, который развивается в любую нужную сторону.
Есть задача - привязать договора к поставщикам (например).
Привязали. Храним файлы в БД.
Чего имеем из плюсов:
- легкое бэкапирование
- легкое манипулирование
- возможность простой репликации куда хочешь
- и самое главное, полная независимость от сетки : нам не нужны ни пути, смапленные на файловое хранилище, ни вечная проблема переноса-переименования-переконфигурации серверов, сети и т.д., ни вообще коннект к любому файл-серверу и т.п. Файлы всегда с нами в системе, даже если вы сидите через VPN, десять провайдеров или вообще на локальном IP - файлы тут, не нужен никакой путь никуда, вообще плевать, где и какая сеть. Это самое главное. И эта система расширяема в любые стороны на сколько хошь.

Минусов нет
Минусы только при размещении файлов в файловой системе. Одни минусы.

=========
Vadim Kruglikа давайте-ка для начала определимся, зачем нам вообще файлы в БД? :) ну то есть тупо переносить какую-либо иерархию файлов в базу, по аналогии со структурой каталогов на диске - на мой взгляд просто ни к чему (мягко говоря).
Выше все сказано
автор приведу пример: есть договор с поставщиком на тему свежих помидоров. кому-то из юзеров удобнее видеть документ в разделе "договоры с поставщиками", а кому-то - "договоры про помидоры" (извините за каламбур). :) но документ-то (или файл, если угодно) в обоих случаях один и тот же.
И причем тут БД?
автора средств борьбы с миллионами файлов на одном диске/разделе/каталоге на уровне той же ос windows server есть несколько - и линки на уровне ntfs, и dfs тот же, да и всякие софт/хард продукты третьих фирм пачками продаются наверняка (я давно не изучал сей вопрос).
А в случае с БД все уже решено, не надо никаких третьих фирм и т.д.
авторфайл в бд, фактически, нужен как некий блоб, для которого в бд хранятся атрибуты для разных целей (поиска, сортировки, группировки, выстраивания в разные иерархии и т. д.). хранить его в поле блоб или на диске - это вопрос различных удобств. на мой взгляд, хранение на диске более удобно (причины я описывал выше).
Файл нам нужен как файл.
А причин для фс я не нашел ни у кого - нашел только незнание возможностей СУБД.
авторкстати, всеми [не]любимый ms office (да и не только он, по-моему) имеет механизм атрибутов документов, встроенных в сам файл (document properties). засунув такой документ в блоб мы автоматически лишаем себя удовольствия поиска по таким атрибутам (думаю, что только у ms sql server есть такая возможность, если вообще есть).
Нам этих удовольствий и не надо. :))
авторлибо на каждый чих вытаскивать файл из блоба на диск и делать там с ним что-то. а ради чего? просто ради того, чтобы все лежало в n-томовом файле бд? честно, не понимаю.
Ради того, чтобы не было проблем, мной выше описанных (которыми не страдает БД).

Программиздище miksoftНе знаю, упоминали или нет еще один плюс хранения файлов в БД - возможность применения к данным встроенных механизмов СУБД. В частности - репликация, бэкап, управление правами доступа.
Это, конечно, реализуемо и в случае хранения файлов в ФС, но тогда придется использовать дополнительные интструменты и не всегда это легкореализуемо.
Такой подход обычно подвергают критике как недостаточно извращенный.
И обычно критикуют те, кто СУБД в глаза не видел.

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

-- Tygra's --
Мои фотогалереи тут
...
Рейтинг: 0 / 0
Стоит ли хранить содержимое файлов в полях базы данных?
    #34266580
Vadim Kruglik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygraНо дляя интереса, вы уж попробуйте поискать по тексту или по атрибутам .doc какие-то файлы самим вордом на ваших миллионах файлов - наверное жутко быстро и эффективно будет, так??? вы не поверите, но именно так и будет. быстро и эффективно. ибо будет использован построенный предварительно индекс. кстати, что за термин "самим вордом" - мне непонятно, ибо поиск осуществляет не он сам, точнее, поиск идет при использовании некоего api к некоему индексатору. а кто уж юзает этот апи - ворд или свой собственный софт - по барабану.

tygraИ так, определились - проблемы поиска по тексту и свойствам файлов у нас нет. Есть собственный классификатор для этих дел, который развивается в любую нужную сторону.известная ошибка разработчика. сегодня нет такой задачи, завтра возникла. будем переписывать систему? опять же, а если файлов уже есть сотня-другая тысяч? будем срочно разрабатывать классификатор, писать приблуду, которая по контенту файла будет его описывать по этому классификатору. зачем, если есть стандартные средства и пользователи смогут искать свои файлы сразу?
tygraЕсть задача - привязать договора к поставщикам (например).
Привязали. Храним файлы в БД.
Чего имеем из плюсов:
- легкое бэкапирование
- легкое манипулирование
- возможность простой репликации куда хочешьпо первым двум пунктам ну совершенно не понимаю, чем легче бэкапить базу или пачку файлов? особенно если файлы - гиговые мувики, которые не изменяются. верю, что возможно в конкретных реализациях некоторых конкретных субд это легко решается, но в общем случае ведь это не так.

tygra- и самое главное, полная независимость от сетки : нам не нужны ни пути, смапленные на файловое хранилищезато нужны пути на клиенте, куда складывать файл при работе с ним. или функционал в третьем слое, который будет, например, показывать тот же гиговый мувик, отслеживать "прокрутку" и т. д. между прочим, пути на сервере тоже особо не нужны. точнее, не нужно раздувать из этого такую проблему, ибо путей там два: один к общему хранилищу внутри системы, а второй - к каталогу с домашними каталогами пользователей системы, которые генерятся по определенным правилам.
tygraни вечная проблема переноса-переименования-переконфигурации серверов, сети и т.д., ни вообще коннект к любому файл-серверу и т.п. Файлы всегда с нами в системе, даже если вы сидите через VPN, десять провайдеров или вообще на локальном IP - файлы тут, не нужен никакой путь никуда, вообще плевать, где и какая сеть.вы что-нибудь про, например, WebDAV слышали? Становится также пофигу, за какими там vpn/fw/etc лежит файлик. кстати, MS Office его отлично понимает.

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

кстати, основной аргумент-то вы и поскипали. повторюсь, на всякий случай: имея файл на диске мы имеем вагон существующих стандартных средств для работы с ним, а засунув его в блоб, в большинстве случаев, приходится эти средства реализовывать самостоятельно.
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли хранить содержимое файлов в полях базы данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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