2010-01-27 1 views
2

Учитывая, что имеется большая и активная база пользователей, где каждый пользователь хочет сохранить изображение профиля и некоторые дополнительные изображения или другие артефакты, существуют ли какие-либо библиотеки или фреймворки, которые позволяют легко хранить и запрашивать такие данные?Существуют ли библиотеки или компоненты, которые обрабатывают хранение и быстрый поиск пользовательского контента?

Эталонная реализация будет Haystack Photo Infrastructure.

Следующие характеристики важны

  • магазин Данные должен хорошо масштабируется: добавление ресурсы должны быть прозрачными для приложения, использующего хранилище (similar question был ответ со ссылкой на LinkedIn's Voldemort).
  • Возможность добавления некоторых метаданных вместе с хранимыми данными.
  • Метаданные могут быть запрошены с хорошей производительностью (например, хранятся в настраиваемом индексе, таком как Lucene/Solr).
  • клавиша быстрого доступа на основе и некоторые промежуточный слой кэширования

Любые рекомендации для библиотек или рамок, которые могут быть легко интегрированы в веб-приложения Java приветствуются.

Обновление: Благодарим вас за первые несколько ответов. Мне нужно более подробно рассказать о том, какие ответы ожидаются. Tobu's answer, хотя не связанный с java очень хороший (просто проголосовали). Можно реализовать решение с комбинацией доступа к файловой системе и БД и добавить некоторый уровень кэширования между ними, но я считаю это пустой тратой времени, если кто-то более квалифицированный, чем я, уже разработал, реализовал и запустил лучше решение. Что-то, основанное на решении с базовыми реализациями БД или JCR, хорошо подходит, но реализация другой инфраструктуры - это не то, что я хочу делать.

ответ

1

Мы отлично поработали с медиа-репозиторием из Fedora Commons (http://www.fedora-commons.org/), который позволяет хранить медиа-активы вместе со связанными с ними метаданными. У нас не было никаких проблем с масштабируемостью или настройкой, и не было трудным обмен базовым слоем хранения с тройным хранилищем (если это понадобится в вашем случае). Если вам нужно индексировать свои данные с помощью Solr, вы можете использовать предопределенное поле метаданных («RELS-EXT») для хранения данных на основе XML.

+0

Спасибо, Филипп, отличный вход! Мы обязательно попробуем это. – Kariem

0

Я чувствую, что ваши требования довольно близки к тому, что предоставляет база данных. Просто убедитесь, что дизайн таблиц соответствует вашим потребностям (например, вы могли бы иметь большие данные, такие как изображения в отдельной таблице из метаданных).

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

0

Apache Jackrabbit - полностью соответствующая реализация Репозитория контента для API технологии Java (JCR, указанного в JSR 170 и 283). Но у него есть некоторые проблемы с производительностью (по крайней мере, в двухлетней версии, которую я использую), лучший способ их преодоления - копирование статических изображений на веб-сервер. (Использование WebDAV, davfs и rsync)

0

Это зависит от количественной оценки «большой и активной базы пользователей» ...

80% веб-сайтов может просто использовать NoSQL схемы свободного подхода, как y_serial:

y_serial.py объекты модуля :: склад Python с SQLite

«Сериализация + в :: настойчивость несколько строк кодировать, комментировать и комментировать объекты Python в SQLite, а затем извлекать их хронологически по ключевым словам без какого-либо SQL. Самый полезный «стандартный» модуль для базы данных для хранения данных без схемы ».

http://yserial.sourceforge.net

Если фотографии и артефакты для каждого пользователя находятся под 2M сжаты, производительность должна быть хорошей.

Для оставшегося 20% использования случая, можно легко импортировать данные из yserial в Cassandra, который теперь используется Facebook, Digg и Twitter.

Смежные вопросы