Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Где лучше хранить файлы?


Автор: stmamont 19.3.2006, 22:56
Где лучше хранить файлы?
В БД или на сервере.

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

БД: MySQL && Oracle

Лично мне нравится больше идея хранения файлов в БД.
Но что насчет производительности БД?
Как обычно решается такой вопрос?

Автор: LSD 19.3.2006, 23:31
Цитата(stmamont @ 19.3.2006, 22:56 Найти цитируемый пост)
Но что насчет производительности БД?
Как обычно решается такой вопрос?

Более мощьным сервером smile

Все зависит от того что за данные, и как они будут обновляться (как часто, один пользователь или много и т.д.).

Автор: B2_Russia 19.3.2006, 23:53
Думаю тут нужно больше узнать о задаче.
Например, если планируется массовые операции над этими файлами (редактирование), то я бы советовал хранить их на диске, а в базе хранить только пути ессно...
Производительность определит структура самой БД

Автор: stmamont 19.3.2006, 23:57
Данные - любые, фото , видео, документы ворда.
Обновляться будут редко(чаще удаляться чем обновляться), несколько пользователей.
Добавляться новые файлы будут часто.

Автор: B2_Russia 20.3.2006, 00:07
Я бы хранил вне базы, и БД была бы легче (по объему) и файлики под рукой (хоть это и не требуется).

Автор: boevik 20.3.2006, 08:48
Если БД на сервере и хранить файлы на диске сервера, то надо дать доступ к серверу, через sharing или другим методом,
Кроме базы надо бекапить и файлы. Все это добавляет работы по поддержке сервера.
И с точки зрения security, не приветствуется возможность прямой записи на сервер.

Автор: stmamont 20.3.2006, 09:42
Вопрос security важен.
Именно поэтому не хочется хранить файлы на сервере...

Помню под ораклом делал именно что б в бд хранились...
А вот с Mysql не понятно. Сколько файлов или какой размер она потянет?

А если реализовывать так чтоб файлы были на сервере, то как это реализовать?
Всмысле, файлов много. Все в одну папку не покидаешь...
В разные папки значит. Имена присваивать = id записи которой файлы принадлежат...
Как то криво когда файлы на серваки.

Автор: LSD 20.3.2006, 10:50
Цитата(stmamont @ 20.3.2006, 09:42 Найти цитируемый пост)
А если реализовывать так чтоб файлы были на сервере, то как это реализовать?

Если данные хранить не в blob-ах, а в виде файлов. То тогда, тебе нужно организовывать файл сервер, или FTP или еще как, и тогда безопасность уже определяется им. В качестве имени можно использовать тот же ID.

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

Автор: stmamont 20.3.2006, 11:47
Зачем организовывать файл сервер??

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

Или с помощью файл сервера все это можно реализовать и гораздо проще???
И если да, то как?)

Автор: stmamont 20.3.2006, 17:08
Сейчас смотрю в сторону PgSql.
Думаю можно в ней хранить файлы, без последующих проблем.
Что скажете?

Автор: LSD 20.3.2006, 21:10
Цитата(stmamont @ 20.3.2006, 11:47 Найти цитируемый пост)
Или с помощью файл сервера все это можно реализовать и гораздо проще???

Это конечно все реализуется настройками сервера, вопрос только в том как ими управлять и идентифицировать пользователей. Честно говоря как пользователей БД, прикрутить к файл серверу не знаю.

Автор: beroal 21.3.2006, 10:55
Я думаю, что MySql в вопросе хранения файлов в самой базе не имеет никаких недостатков перед PostreSql. Единственный недостаток для обеих (а точнее, недостаток самого принципа) - то, что передаваемый файл будет выдаваться скриптом, следовательно, все данные будут перекачиваться через PHP. Это шибко замедляет работу. Но если сайт не рассчитан на большую нагрузку, тогда беспокоиться не о чём.
Хранить файлы в базе гораздо проще, чем на диске. Отпадают такие проблемы:
1) удалять файл, когда удаляется запись, а также по причине сбоев скрипта неудалённые файлы;
2) морока с правами на запись в специальный каталог (бывает такая фигня, что файлы, например, подброшенные в этот каталог через ftp, PHP перезаписать не может);
3) бэкап файлов вместе с бэкапом базы.

Автор: beartamer 21.3.2006, 11:16
Файлы надо хранить в CVS или аналогах (SVN)

Автор: stmamont 21.3.2006, 12:55
Предполагается большая нагрузка сайта.

Только определился хранить файлы в бд...

Неужели сильно замедлит скачивание файла отдача через скрипт?
Если да, то как это можно обойти?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)