Учитывая случай наличия большой и активной пользовательской базы, где каждый пользователь хочет сохранить изображение профиля и некоторые дополнительные изображения или другие артефакты, существуют ли какие-либо библиотеки или структуры, которые позволяют легко хранить и запрашивать такие данные?
Эталонной реализацией будет Haystack Photo Инфраструктура Facebook .
Важны следующие характеристики
- Хранилище данных должно хорошо масштабироваться: добавление ресурсов должно быть прозрачным для приложения, использующего хранилище ( аналогичный вопрос получил ответ, относящийся к Волдеморту LinkedIn ).
- Возможность добавлять метаданные вместе с хранимыми данными.
- Метаданные могут запрашиваться с хорошей производительностью (например, храниться в настраиваемом индексе, таком как Lucene / Solr).
- Быстрый доступ на основе ключей и некоторый промежуточный уровень кэширования
Приветствуются любые рекомендации по библиотекам или инфраструктурам, которые могут быть легко интегрированы в веб-приложение Java.
Обновление : спасибо за первые несколько ответов. Я должен вдаваться в подробности о том, какие ответы ожидаются. Ответ Тобу , хотя не связанный с Java, очень хорош (только что проголосовал). Можно реализовать решение с сочетанием доступа к файловой системе и БД и добавить некоторый промежуточный уровень кэширования, но я считаю, что это пустая трата времени, если кто-то более квалифицированный, чем я, уже спроектировал, внедрил и выполнил лучший решение. Что-то, основанное на решении с базовыми реализациями DB или JCR, хорошо подходит, но реализация другой инфраструктуры - это не то, что я хочу делать.