После изучения информации о JCR или СУБД и чтение других сообщений, я все еще не уверен, следует ли использовать JCR вместо JPA для системы управления документами, которая должна иметь дело с различными типами документов, очень большими файлами и многом. > одновременного доступа многих пользователей.
Моя главная причина рассмотреть JCR заключается в том, что документы для меня выглядят как содержимое, а спецификация уже имеет дело с некоторыми проблемами, которые возникают с этим — в основном меня интересуют хранение и управление версиями. Также я хотел бы как бы инкапсулировать материал документа в реализацию JCR и использовать JPA для всего остального, специфичного для приложения.
Может быть, кто-то может помочь мне с моими оставшимися вопросами:
- Как производительность чтения/запроса JCR связана с JPA (я знаю, что она должна сильно различаться в зависимости от реализации, но могут быть некоторые эмпирические правила)?
- Есть ли у кого-нибудь реальный опыт аналогичного использования с некоторыми конкретными реализациями JCR? Если да, то смешивали ли вы его с реляционной базой данных (JPA)?
- Стоит ли вводить JCR, учитывая преимущества файлового хранилища и управления версиями? (Вероятно, я перейду к своему собственному пользовательскому управлению доступом (JPA), и мне не понадобится дополнительная гибкость для введения новых свойств узла во время выполнения)
- Есть ли у кого-нибудь опыт в области решений для обеспечения целостности данных и резервного копирования?
ОБНОВЛЕНИЕ: несмотря на то, что на этот вопрос был дан подробный ответ, у кого-то может быть более критическое мнение о его использовании с более практической точки зрения. Лично меня все больше и больше беспокоят следующие вопросы, не связанные с техникой:
- Документация: у Jackrabbit плохая документация, его руководство по OCM содержит мертвый ссылка в первом абзаце, некоторые примеры поисковых запросов вызывают исключения по неизвестным причинам, есть ссылка TODO в очень простом руководстве, и его автономный сервер не работает должным образом в JDK8, который вообще не задокументирован.
- Зрелость: Jackrabbit Oak, похоже, все еще находится в стадии разработки, а другие решения выглядят либо заброшенными, либо передовыми.
- Сообщество: В отличие от JPA, исследование JCR приводит к гораздо меньшему количеству хитов. Это может стать настоящей проблемой, когда проектная группа, плохо знакомая с технологией, застревает в (тривиальных) проблемах.