Идеи для реализации VFS

У меня мультимедийные файлы и их метаданные хранятся в РСУБД (на самом деле, собственно медиафайлы хранятся в ФС, но не будем на этом останавливаться).

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

В принципе, чего я хочу добиться, так это:

  • Иметь разные представления, используя разные критерии метаданных (например, иметь /by_author/{исполнитель}/{запись}/{аудиофайлы} и /by_record/{запись}/{аудиофайлы}).
  • Иметь прозрачное перекодирование (возможно, кеширование) медиафайлов (например, /wav/{wavfile}, /mp3/192/{mp3file), /mp3/320/{mp3file} и т. д.)
  • Прозрачная генерация метаданных в разных форматах (скажем, Excel, XML в разных схемах и т. д.)

Я делаю это на Java, кстати.

Мои проблемы здесь двусторонние:

1)

Каков хороший способ реализовать «модель»? Я баловался с некоторыми интерфейсами и реализациями Repository, Asset, FileAsset, ContainerAsset, но в конечном итоге они не кажутся правильными.

Меня интересует возможность делегировать разные части файловой системы отдельному коду (т.е. /{artist}/{record} и /{record} части FS реализованы с разным кодом, и они оба делегируют один и тот же код для создайте материал {record}/xxx).

2)

Какая лучшая альтернатива "разоблачению" этой модели? Как я вижу, есть несколько вариантов:

  • Fuse для Java и Dokan для Java. Мне нужно было бы реализовать две разные обертки, так что это немного больше работы...
  • Используйте реализацию SMB в Alfresco и просто представьте VFS как общий ресурс Samba.
  • Используйте Milton (реализация WebDAV для контейнеров сервлетов) и либо используйте встроенную в ОС поддержку WebDAV, либо используйте что-то вроде Fuse DAV FS, чтобы повторно представить его как FS.

Из них Fuse/Dokan кажутся наиболее подходящими. Alfresco выглядит очень красиво, но очень сложно заставить его работать. Milton кажется проще, а семантика WebDAV может работать даже лучше... но я не совсем уверен.

Мысли, идеи?

Алекс

редактировать: проект сейчас полузаброшен (то есть было бы круто сделать это, но сейчас нет на это времени). Думаю, я бы написал свою VFS как расширение commons-vfs, а затем адаптировал commons-vfs к Milton, Dokan, Fuse и т. д.


person alex    schedule 26.11.2009    source источник
comment
Когда я прочитал ваши требования, я сразу подумал о совместном использовании alfresco SMB. Конечно, это немного сложнее, чем webdav, но, если не рассматривать его подробно, что в нем такого сложного? Я предполагаю, что это очень сложно внутри, так как у SMB есть много краеугольных камней, но для пользователей это должно быть просто.   -  person David Roussel    schedule 27.11.2009
comment
Просто запускать сервер - это чудовищно... это и общее отсутствие документов полностью меня отвергли...   -  person alex    schedule 27.11.2009


Ответы (1)


Я бы пошел с WebDAV. Намного меньше кода и четко определенные стандарты

person Javier    schedule 26.11.2009
comment
Да, я действительно склонялся к WebDAV. Есть ли у вас опыт? Например, для перекодированных файлов я бы не знал размер файла без перекодирования... Я бы предположил, что WebDAV наименее проблематичен для таких вещей... - person alex; 27.11.2009
comment
да, я давно реализовал большую часть этого на Lua. Я не помню многих подробностей, кроме того, что единственной сложной частью RFC была семантика блокировки. - person Javier; 27.11.2009
comment
проблема с webdav, он не поддерживается, как настоящая файловая система в Windows или Mac OS. Конечно, поисковик/исследователь может получить к нему доступ, но это может быть немного запутанным. - person David Roussel; 27.11.2009
comment
в Mac WebDAV — это настоящая смонтированная ФС. для windows есть некоторые сторонние решения, не уверен, что они бесплатны или нет - person Javier; 27.11.2009
comment
@DavidRoussel на самом деле, в Windows это так. Вы можете смонтировать (сопоставив сетевой диск) диск WebDAV. Только что закончил тестирование проекта в Windows 10, все еще работает как шарм - person topherg; 10.08.2015
comment
Когда я сказал, что это не настоящая файловая система, я имел в виду, что вы не можете войти в нее из командной строки и получить к ней доступ, как к обычным файлам. По крайней мере, вы не могли вернуться, когда я писал комментарий, так как в 2009 году не было ни Windows 10, ни Windows 8. - person David Roussel; 10.08.2015
comment
к сожалению, я бы убрал часть моего ответа с четко определенными стандартами ... недавно попытался установить сервер лучше, чем FTP, с WebDAV ... огромный кошмар, пытающийся поддерживать более одного клиента. - person Javier; 10.08.2015