У меня мультимедийные файлы и их метаданные хранятся в РСУБД (на самом деле, собственно медиафайлы хранятся в ФС, но не будем на этом останавливаться).
Я хотел бы представить представление этой информации в файловой системе, чтобы пользователи могли работать с базой данных с помощью проводника 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 и т. д.