Когда использовать JCR (репозиторий контента) по сравнению с другими вариантами?

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

Заранее спасибо.


person Ither    schedule 11.10.2010    source источник
comment
Сомневаюсь, что я единственный, кто любит знать, что это за штука, что она делает, и когда / почему я могу ее использовать, на всякий случай, если я столкнусь с проблемой, которая подойдет для этого.   -  person cHao    schedule 12.10.2010
comment
Было бы полезно, если бы кто-нибудь объяснил, чем репозиторий контента отличается от службы каталогов (LDAP). Чем он отличается от базы данных NoSQL?   -  person Ryan    schedule 13.07.2016


Ответы (1)


Репозитории JCR отличаются от СУБД, потому что репозиторий JCR:

  • является иерархическим, что позволяет вам организовать свой контент в структуре, которая точно соответствует вашим потребностям, и где связанная информация часто хранится близко друг к другу и, таким образом, легко перемещается
  • является гибким, позволяя контенту адаптироваться и развиваться, используя систему типов узлов, которая может быть полностью бессистемной или полностью ограничительной (например, как реляционная база данных)
  • использует стандартный Java API (например, javax.jcr)
  • абстракции, в которых действительно хранится информация: многие реализации JCR могут хранить контент в различных реляционных базах данных и других хранилищах, некоторые могут предоставлять не-JCR хранилища через JCR API, а некоторые могут объединять несколько хранилищ в один виртуальный репозиторий.
  • поддерживает запросы и полнотекстовый поиск из коробки
  • поддерживает события, блокировку, управление версиями и другие функции

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

Какие приложения могут извлечь выгоду из этих функций? Системы управления контентом уже давно используют репозитории, и JCR (и Jackrabbit) действительно выросли из потребности в общем стандартном API для доступа к различным репозиториям контента (см. JSR-170 и JSR-283).

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

Системы управления артефактами могут использовать репозитории для управления цифровыми артефактами (часто файлами) вместе с дополнительной информацией (метаданными). JCR здесь отлично работает, потому что вы можете хранить метаданные в том же месте, что и файлы: те, кто понимает эти дополнительные свойства, могут их видеть, а те, кому все равно, не должны их видеть. Я знаю, что Artifactory - это реализация репозитория Maven, в которой используется JCR. Существуют также репозитории для управления артефактами веб-служб, артефактами служб данных и тестовыми артефактами.

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

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

Есть несколько хороших обзоров JCR с более подробной информацией и примерами. Вот некоторые из них:

person Randall Hauch    schedule 11.10.2010
comment
Представляем Java Content Repository API от Титуса Барика ‹- ссылка не работает. - person Adam Arold; 22.07.2014