Коли використовувати JCR (сховище вмісту) над іншими параметрами?


77

Я намагаюся оцінити сховища вмісту ( JSR283 ), такі як Jackrabbit та ModeShape, але я повинен визнати, що я не розумію, яка проблема вирішується в першу чергу, і навіть якщо це хороший вибір для проекту. Як ви вважаєте, які випадки є найкращим рішенням для застосування? Хіба це не те саме, що реляційні бази даних, крім розміру? Чому? Додаткові бали для наведення прикладів із реального світу.

Заздалегідь спасибі.


9
Я сумніваюся, що я єдиний, хто любить знати, що таке речі і що він робить, і коли / чому я, можливо, захочу його використовувати, про всяк випадок, коли я зіткнуся з проблемою, яка йому підходить.
cHao

1
Було б корисно, якби хтось пояснив, чим сховище вмісту відрізняється від служби каталогів (LDAP). А як щодо того, чим вона відрізняється від бази даних NoSQL?
Райан

Відповіді:


88

Сховища JCR відрізняються від RDBMS, оскільки сховище JCR:

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

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

Які програми можуть скористатися цими функціями? Системи управління вмістом використовували сховища протягом тривалого часу, і 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 з більш детальною інформацією та прикладами. Деякі з них:


Представляючи API репозиторію вмісту Java від Тита Баріка <- посилання порушено.
Адам Арольд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.