Что именно определяет репозиторий контента?

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

  1. В чем разница между репозиторием контента и базой данных?

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

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

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


person LuckyLuke    schedule 20.12.2013    source источник
comment
Помогает ли это: - stackoverflow.com/questions/3908584/?   -  person Rahul Tripathi    schedule 21.12.2013


Ответы (2)


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

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

В чем разница между репозиторием контента и базой данных?

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

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

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

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

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

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

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

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

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

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

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

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

person Bertrand Delacretaz    schedule 23.12.2013
comment
Это может иметь место в отношении JCR, но, к сожалению, я имею дело только с реализацией Jckrabbit, которая по какой-то причине наложила совершенно новый API на API JCR, и который я обнаружил откровенно невозможным для интеграции как единый источник. И я, конечно, не готов отказаться от транзакций SQL и свойств ACID для транзакций значений в пользу всего, что я могу найти в любом репозитории контента. - person user207421; 23.12.2013
comment
Какой новый API вы имеете в виду? Apache Jackrabbit является эталонной реализацией для JSR 170 и 283, поэтому он полностью поддерживает JCR. - person Bertrand Delacretaz; 23.12.2013
comment
Я имею в виду, например, все дополнительные разрешения, которые они добавили, которые не совсем соответствуют разрешениям JCR. NB Я не утверждал, что он не поддерживает JCR. - person user207421; 24.12.2013
comment
Хорошо, спасибо за разъяснение. Что касается варианта использования @LuckyLuke для хранения изображений и других данных, дополнительные разрешения могут не иметь значения. - person Bertrand Delacretaz; 24.12.2013