Как хранить медиа файлы?

89 views
Skip to first unread message

Greg

unread,
Nov 11, 2009, 2:27:54 AM11/11/09
to The Russia JBoss Seam user group
Пишу небольшую CMS и меня стал мучить вопрос как организовать хранение
медиа файлов. Вижу три варианта:

1. Хранить в файловой система
полюсы: можно организовать доступ по webdav, ftp
минусы: сложность в отслеживании, где и что задействовано
2. Использовать репозиторий Apache Jackrabbit, из минусов только то
что не когда с этим не работал
3. Хранить тупо в базе, но здесь меня терзают сомнения.

У кого какие будут мысли?

Anev

unread,
Nov 11, 2009, 2:39:02 AM11/11/09
to The Russia JBoss Seam user group
Я думаю в базе хранить не стоит, кто такой кролик Джек - не знаю.

А в чем сложность в отслеживании? в том, что к файловой системе имеют
доступ все кому не лень, не только через твое приложение?

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

maratische

unread,
Nov 11, 2009, 2:41:19 AM11/11/09
to The Russia JBoss Seam user group
У нас используется первый вариант в двух проектах.
в первом проекте все лежит в файловой системе и отдает их специальный
сервлет, так как необходимо проверить авторизацию пользователя, доступ
и тд.
во втором ни о каком уровне доступа речи не идет. (корпоративная
система обмена музыкой) и система просто знает на каком http сервере
что лежит и тупо редиректит запросы (аля торрент), соответственно шары
тупо святят в сетку в виде отдельныйх http серверов.

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

идея хранить гигабайты медиа контента в базе данных вызывает удивление
всегда, ибо тупому сервлету прочитать поток физического файла и
отдать поток в http/сокет/ftp/итд клиенту в разы быстрее, чем сначала
вытащить его из blob поля базы данных. (да я знаю про возможность
вытащить из базы данных напрямую и отдать пользователю потоком и тд,
но ВСЕ РАВНО база данных сделает больше работы, чем файловая система)

Greg

unread,
Nov 11, 2009, 2:43:25 AM11/11/09
to The Russia JBoss Seam user group
Тут есть одна проблема, чем отдавать эти файлы? Свой сервлет написать?
Я как то делал такое и наткнулся на багу которая заключалась в том что
в симе есть ajax4jsf фильтр который все ответы пропускает через себя,
и тогда получается что если я выдам файл на 700 метров то сервер ляжет
в OutOfMemory.

maratische

unread,
Nov 11, 2009, 2:45:58 AM11/11/09
to The Russia JBoss Seam user group
да, я отдаю файлы не средствами seam, а просто обычным http запросом
в seam авторизуешь пользователя, генеришь уникальный ключ доступа на
файл, который живет N времени, а потом тупо редиректишь на ОБЫЧНЫЙ
httpServlet, который отдает потоком файл

Григорий Ткачук

unread,
Nov 11, 2009, 3:28:48 AM11/11/09
to the-russia-jboss...@googlegroups.com
Вообщем пойду я писать свой сервлет. :) Всем огромное спасибо.

11 ноября 2009 г. 15:45 пользователь maratische <marat...@gmail.com> написал:



--
С уважением, Григорий Ткачук
Reply all
Reply to author
Forward
0 new messages