|
|
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Проектирую систему и вот тут встал вопрос где хранить файлы (документы) ? Можно засунуть их в саму таблицу, а можно в виде файлов на жеском диске, а в базе хранить только пути. Смотрел другие системы, есть и с такой реализацией и с такой. База MS SQL Server. Есть какие весткие доводы чтобы НЕ ХРАНИТЬ файлы в самой базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 06:54 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 07:57 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Посмотрел дискуссию - как всегда кончилось бросанием шапок друг в друга :-) Плюну наверное на это дело, сделаю хранение в базе данных. Хоть один веский довод будет - мне так проще :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:53 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Лучше всего хранить в базе, выделив отдельный tablespace под эту таблицу, желательно размещенный на другом диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 10:52 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
as111Добрый день! Проектирую систему и вот тут встал вопрос где хранить файлы (документы) ? Можно засунуть их в саму таблицу, а можно в виде файлов на жеском диске, а в базе хранить только пути. Смотрел другие системы, есть и с такой реализацией и с такой. База MS SQL Server. Есть какие весткие доводы чтобы НЕ ХРАНИТЬ файлы в самой базе? Веский довод "против" только один - размер такой таблицы в базе. Документы могут быть размером и в несколько мегабайт каждый (конечно, зависит от конкрентной задачи), тогда как пути - обычно намного менее 1 кБ . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 10:54 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
В среднем размер файлов около 1Мb. Хотя может колебаться в пределах 0,1-80Мb. Теоретически могут быть и больше, но это уже исключения из правил. Их количество? Ну это будет архив небольшой конторы. Сейчас в архиве около 1 млн документов, но их кол-во не кто точно не знает. Разные пространства для файлов, да, наверное это актуально. Еще плюсы, что их можно проиндексировать в базе, правда со сканированными документами этот фокус не пройдет... Ну и мои наблюдения... 1. Системы монстры стараются хранить их как файлы. Опыт работы показывает, что администрирование такой системы это отдельная задача. 2. Средние системы стараются хранить в базе. Проще, наглядней, все в одном ящике. Нет проблем с вирусами, админами и.д. Как самый показательный пример MS SPPS. Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 11:15 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
на MS SQL сервере файлы можно хранить в отдельной таблице, а сами таблицы на отдельном HDD. IMHO почти то же самое что "хранить ссылки". ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 11:31 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
as111Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой... Свои две копейки: -Для клиентского приложения несколько сложнее обработать файл находящийся в БД -Сложнее осуществлять поиск в файлах, особенно малораспространенных стантартов +Архив документов возможно потребует хранение версий, а вот это намного проще организовать в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:54 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Estets as111Т.е. получается, что с хранением система получается гибче масштабируемей и т.д., но сама система получается громозкой... Свои две копейки: -Для клиентского приложения несколько сложнее обработать файл находящийся в БД ==== нет - а) SELECT BLOB-поля б) сохранение бинарного потока из него в файл на клиенте = 3 строки кода. -Сложнее осуществлять поиск в файлах, особенно малораспространенных стантартов ======== а) в SQL Server встроенные средства поиска б) этот пункт так-же для хранения файлов ВНЕ БД +Архив документов возможно потребует хранение версий, а вот это намного проще организовать в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:16 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Ну вроде решили, теперь с чистой совестью буду хранить файлы в базе :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:46 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Хотелось бы продолжить разговор с точки зрения путейца, т.е. если используется хранение в файловой системе по конкретным путя/путю, то как рациональнее? Или может назначит одну папку для хранения файлов и не заморачиваться? Или создать ограниченное их количество по типам лежащих там файлов, скажем /DOC/, /XLS/, /TXT/ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 14:49 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Ну вообще, как поведет себя NTFS, если в папке 300-500тысяч файлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 15:22 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
По поводу выбора самого способа хранения - это предоствалено решать пользователю, ему доступны оба варианта, тогда вопрос оптимизации "путей" лучше бы как то оптимизировать, не предлагать же заниматься этим пользователю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 15:27 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
И чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой! Тигра, али я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 15:39 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Для хранения 300-500к файлов в NTFS её надо будет потюнить на предмет выделения достаточного количества свободных allocation units, иначе систему начнёт очень забавно плющить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 15:52 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
DocAlДля хранения 300-500к файлов в NTFS её надо будет потюнить на предмет выделения достаточного количества свободных allocation units, иначе систему начнёт очень забавно плющить... Я из программы могу (ради любимого юзера) настругать скока надо папок/подпапок, так это нужно делать? Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 15:54 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
ПрограммиздищеИ чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой! Тигра, али я не прав? Да нет наверное - что тут делать в среднем звене? Наигрывать путь файла и отдавать его клиенту? Так можно и на клиенте тоже самое сделать. Я бы делал хранение в БД - со всех сторон преимущества, удобство и упрощение. Сделал один раз и забыл. -- Tygra's -- Мои фотогалереи тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 17:14 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
tygra ПрограммиздищеИ чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой! Тигра, али я не прав? Да нет наверное - что тут делать в среднем звене? Наигрывать путь файла и отдавать его клиенту? Так можно и на клиенте тоже самое сделать. Я бы делал хранение в БД - со всех сторон преимущества, удобство и упрощение. Сделал один раз и забыл. -- Tygra's -- Мои фотогалереи тут Среднее звено должно обеспечивать передачу файла туда и обратно, не прибегая ни к каким шарам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 17:35 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Лучше, чтобы был выбор,т.е. файлы не особо здоровенные, пользователь будет класть в БД, а что-нибудь типа DVD фильнов - на внешнее устройство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 17:37 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
Вставлю и я свои две копейки. Вообще, данный вопрос, как и все прочие, надо рассматривать в контексте задачи и применяемых инструментов. Если рассуждать абстрактно-субъективно, то я сторонник хранения файлов в файловой системе, а не в БД. Основных причин тому несколько. 1. Удобство сопровождения / администрирования. Мало приятного возиться с блобами в стандартных админских тулзах типа ms sql enterprise manager, IBExpert и иже с ними. 2. Индексирование содержимого файлов. Не все серверы БД умеют это хорошо делать. Я понимаю, что тут речь про ms sql у которого, вероятно, с этим все хорошо. Но есть, например, Firebird и прочие, у которых с этим вообще никак. Зато есть сторонние продукты, типа встроенного в винду Indexing Service или локального Google и т.д., которые с задачей индексирования и поиска файлов разных форматов справляются на ура. А состыковать их с сервером БД - дело техники. 3. Открывает файлы из БД и складывает их туда, как правило, пользователь со своей рабочей станции. А там, в большинстве случаев, винда и ее приложения. В случае хранения файлов в БД придется как-то описывать, что же там за файл внутри и чем его открывать. И где это нечто брать на клиентской машине. В конечном итоге получим и проблему "Save as...", которая описывалась по приведенной тут ссылке, и проблему сохранения временного файла на локальной машине пользователя. При хранении на сервере в файловой системе не сильно сложно реализовать открытие файла прямо с него родимого командой "start ИмяДокумента" - и пускай винда сама разбирается, что там ей подсунули и чем это открыть. (соглашусь, что такое поведение можно эмулировать и при хранении файлов в БД, но, как говорится, "нафига козе баян" или зачем усложнять себе жизнь). Кстати, и проблемы просмотра любимого 5GB видеоролика не возникнет - все уже написано за нас. :) Не так давно в очередной раз покумекав над очередной подобной задачкой, мы остановились на старом-добром методе хранения файлов в файловой системе. Да, и со стандартным бэкапом проблем меньше, особенно на огромных и редко изменяющихся файлах типа видеозаписей. В общем, базе - базово, а файловой системе - файлово. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 00:06 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
ПрограммиздищеСреднее звено должно обеспечивать передачу файла туда и обратно, не прибегая ни к каким шарам.не очень понятно, как это возможно без шар, в общем случае? точнее, что это будет за среднее звено, которое подсунуло ворду файл (и куда подсунуло, кстати? во временный каталог на клиенте?), а затем, когда пользователь нажал "save", сохранило его куда надо в бд. а если это не ворд, а фотошоп / корел / акробат / ... ? будем в среднем звене держать на каждое такое пользовательское приложение свою поддержку? похоже, я безнадежно отстал от жизни и чего-то не знаю в современных технологиях? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 00:13 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
ПрограммиздищеХотелось бы продолжить разговор с точки зрения путейца, т.е. если используется хранение в файловой системе по конкретным путя/путю, то как рациональнее? Или может назначит одну папку для хранения файлов и не заморачиваться? Или создать ограниченное их количество по типам лежащих там файлов, скажем /DOC/, /XLS/, /TXT/ ?мы храним по-простому: есть одна папка, назовем ее file-storage, а в ней на каждый файл заводится своя папка с именем, совпадающим с id-файла, который (id) используется в бд для привязки данного файла к прочим объектам. в этой id-папке лежит файл с тем оригинальным именем, которое было задано пользователем. что-то наверное спать пора - нет четкости фраз, путанно изъясняюсь уже... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 00:19 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
И чтой то вопрос с путями начинает откровенно попахивать 3-х звёнкой! что имеете протифф? в описываемом случае - электронный архив - имхо приемлемой альтернативы нет ... из своего опыта: время создание бэкапов БД (ORACLE) и их размер ... напрягает ... не очень понятно, как это возможно без шар, в общем случае? точнее, что это будет за среднее звено, которое подсунуло ворду файл (и куда подсунуло, кстати? во временный каталог на клиенте?), а затем, когда пользователь нажал "save", сохранило его куда надо в бд. а если это не ворд, а фотошоп / корел / акробат / ... ? будем в среднем звене держать на каждое такое пользовательское приложение свою поддержку? похоже, я безнадежно отстал от жизни и чего-то не знаю в современных технологиях? :) дык среднее звено именно для этого ... чтобы шар не было ... 1. каталог выгрузки файла - настройка пользователя на клиенте (по-умолчанию путь для временных файлов винды) 2. "когда пользователь нажал "save"" - сохранение "обычное" ... да и зачем по другому? - а. это с подавляющей вероятностью лишь промужуточное состояние документа - зачем его "выкладывать" на средний слой (исключение - если пользователь планирует работать на другом компе - ну эта фсе элементарно реализуется) б. фсякие "автосохранение" (например WORD) - эта становится смешным ... те загрузка-выгрузка (+загрузка в "родные" приложения) собственно файлов с/на среднее звено - с интерфейса приложения когда "явная", когда - нет - фсе реализуемо ... далее для приложений поддерживающих OLE по желанию оформляешь необходимый функционал по "сохранению" (а при большом желании и выгрузку) на сервере в "родные" меню и панели ... для этого ты, разумеется, должен оформлять свое приложение как OLE-сервер и прописывать в нем внешние интерфейсы ... простейший пример - 1С-архив ... но это - по желанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 08:16 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
NSFuimusдык среднее звено именно для этого ... чтобы шар не было ... 1. каталог выгрузки файла - настройка пользователя на клиенте (по-умолчанию путь для временных файлов винды)а зачем так стремиться, чтобы шар не было? по мне так удобнее для сопровождения и проще для написания системы один раз сделать эти шары при создании пользователя в системе, отдать на них права средствами ОС и не париться, что в локальном temp-каталоге пользователя накапливается [конфеденциальная] информация, а он об этом и не подозревает (вы давно заглядывали в свой temp-каталог? там много интересного можно обнаружить ;) ). это раз. NSFuimus2. "когда пользователь нажал "save"" - сохранение "обычное" ... да и зачем по другому? - а. это с подавляющей вероятностью лишь промужуточное состояние документа - зачем его "выкладывать" на средний слой (исключение - если пользователь планирует работать на другом компе - ну эта фсе элементарно реализуется) б. фсякие "автосохранение" (например WORD) - эта становится смешным ... те загрузка-выгрузка (+загрузка в "родные" приложения) собственно файлов с/на среднее звено - с интерфейса приложения когда "явная", когда - нет - фсе реализуемо ... далее для приложений поддерживающих OLE по желанию оформляешь необходимый функционал по "сохранению" (а при большом желании и выгрузку) на сервере в "родные" меню и панели ... для этого ты, разумеется, должен оформлять свое приложение как OLE-сервер и прописывать в нем внешние интерфейсы ... простейший пример - 1С-архив ... но это - по желаниювот я и говорю, если я вас правильно понял, то на каждое внешнее приложение придется городить свой функционал. либо со стороны среднего слоя, либо со стороны внешнего приложения. либо с обеих сторон сразу. а зачем его городить, если можно сделать шару и легкую поддержку со стороны серверной и клиентской частей системы, не зависящую от типов документов? это два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 09:05 |
|
||
|
Стоит ли хранить содержимое файлов в полях базы данных?
|
|||
|---|---|---|---|
|
#18+
авторвот я и говорю, если я вас правильно понял, то на каждое внешнее приложение придется городить свой функционал. либо со стороны среднего слоя, либо со стороны внешнего :) ниправильно поняли ... написал - по желанию с интерфейса программы загрузка "родных" для конкретного файла приложений - через shellexecute(Ex) ... все навороты с OLE - всего лишь навороты ... но имейте ввиду, что понятие "законченное приложение" включает в себя наличие у него неких внешних интерфейсов обеспечивающих доступ к его функциональности из-вне ... сопровождать приложение - одно, а обеспечивать разграниченный доступ к документам в том числе "коммерческая тайна" - эта софсем другое ... эта три :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 09:22 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34255890&tid=1544784]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 496ms |

| 0 / 0 |
