Идеи по реализации VFS
-
05-07-2019 - |
Вопрос
У меня есть мультимедийные файлы и их метаданные, хранящиеся в СУБД (на самом деле сами медиафайлы хранятся в ФС, но не будем на этом останавливаться).
Я хотел бы представить представление этой информации в файловой системе, чтобы пользователи могли работать с базой данных с помощью проводника Windows и подобных инструментов.Я хочу, чтобы этот доступ был доступен только для чтения, что, я считаю, значительно упростит ситуацию.
В принципе, чего я хочу добиться:
- Имейте разные представления, используя разные критерии метаданных (т.е.например, есть /by_author/{artist}/{record}/{audiofiles} и /by_record/{record}/{audiofiles}).
- Иметь прозрачное перекодирование (возможно, кэшированное) медиафайлов (т.е./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 кажутся наиболее удачными.На свежем воздухе выглядит очень красиво, но очень сложно заставить его работать.Милтон кажется проще, а семантика WebDAV может работать даже лучше...но я не совсем уверен.
Мысли, идеи?
Алекс
редактировать:Сейчас проект полузаброшен (то есть было бы здорово этим заняться, но сейчас нет на это времени).Я думаю, что я бы написал свою VFS как расширение commons-vfs, а затем адаптировал commons-vfs к Milton, Dokan, Fuse и т. д.
Решение
Я бы выбрал WebDAV.А много меньше кода и четко определенные стандарты