Что такое определение содержимого хранилища?

Я использую Apache JackRabbit для хранения изображений для моего приложения. Я только начал использовать это, и у меня все еще есть некоторые вопросы без ответа:

  1. В чем разница между хранилищем содержимого и базой данных?

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

  3. Хранилища контента всегда организованы в иерархии?

Я борюсь с определением того, что делает хранилище контента.

2 ответа

Я использую Apache JackRabbit для хранения изображений для моего приложения.

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

В чем разница между хранилищем содержимого и базой данных?

База данных предназначена для структурированных данных, к которым вы хотите получить транзакционный доступ. Репозиторий контента в основном для документов, где вам может понадобиться, например, управление версиями, иерархия, владение,...

Можете ли вы использовать хранилище контента для сохранения всех данных приложения вместо базы данных?

Да, но ты не должен.

Хранилища контента всегда организованы в иерархии?

Как это организовать, решать только вам, но обычно так и делают.

В качестве примера я сейчас использую четыре хранилища данных:

  1. Файловая система, для изображений и других статических ресурсов.
  2. База данных для структурированных транзакционных данных.
  3. Сервер LDAP, для пользовательских данных.
  4. Репозиторий JCR для документов, управления версиями, иерархии, доступа к WebDAV и т. Д.

Если вы разрешите бесстыдный плагин, моя статья " Java Content Repository - лучшее из обоих миров" может помочь понять, что такое репозиторий контента.

В спецификации JSR 283 репозиторий содержимого Java определяется как

абстрактная модель и Java API для хранения данных и связанных служб, обычно используемые контент-ориентированными приложениями.

Таким образом, можно сказать, что это система хранения, которая лучше всего подходит для контент-ориентированных приложений, например, в качестве серверной части для веб-сайтов. Он больше похож на иерархические и объектные базы данных, чем на реляционные базы данных, и мы часто называем его "файловая система на стероидах", что означает, что он хорошо подходит для хранения файлов, но делает гораздо больше. "Связанные сервисы" в приведенном выше определении довольно разнообразны и включают управление версиями, наблюдение, детальный контроль доступа, структурированный и полнотекстовый поиск - многие вещи, которые вам нужны при работе с контентом.

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

Другие вопросы по тегам