Quand utiliser JCR (content repository) sur d'autres options?


J'essaie d'évaluer les référentiels de contenu ( JSR283) comme Jackrabbitet ModeShape mais je dois avouer que je ne comprends pas quel problème résout en premier lieu et même si c'est un bon choix pour le projet. Quels cas pensez-vous être la meilleure solution à appliquer? N'est pas la même chose que les bases de données relationnelles, sauf pour la taille? Pourquoi? Points supplémentaires pour pointer des exemples du monde réel.

Merci d'avance.

Author: Tom Anderson, 2010-10-11

1 answers

Les référentiels JCR sont différents des SGBDR, car un référentiel JCR:

  • est hiérarchique, ce qui vous permet d'organiser votre contenu dans une structure qui correspond étroitement à vos besoins et où les informations connexes sont souvent stockées les unes à côté des autres et donc facilement navigables
  • est flexible, permettant au contenu de s'adapter et d'évoluer, en utilisant un système de type nœud qui peut être complètement" schemaless " à restrictif complet (par exemple, comme une base de données relationnelle)
  • utilise une norme API Java (par exemple, javax.rjc)
  • résumés où les informations sont vraiment stockées: de nombreuses implémentations JCR peuvent stocker du contenu dans une variété de bases de données relationnelles et d'autres magasins, certaines peuvent exposer des magasins non-JCR via l'API JCR, et d'autres peuvent fédérer plusieurs magasins en un seul référentiel virtuel.
  • prend en charge les requêtes et la recherche en texte intégral hors de la boîte
  • prend en charge les événements, le verrouillage, la gestion des versions et d'autres fonctionnalités

Vous pouvez certainement construire tout ou partie de ces fonctionnalités dans votre propre application, mais que, probablement, s'éloigne de ce que votre objectif principal de votre application.

Quels types d'applications peuvent bénéficier de ces fonctionnalités? Les systèmes de gestion de contenu utilisent des référentiels depuis longtemps, et JCR (et Jackrabbit) est vraiment né du besoin d'une API standard commune pour accéder à différents référentiels de contenu (voir JSR-170 et JSR-283).

Un autre exemple sont les systèmes de gestion de documents, qui gèrent les fichiers électroniques (qui sont souvent des images de documents papier) et fournissent la recherche et la requête. Les DMSES utilisent des référentiels depuis un certain temps.

Les systèmes de gestion d'artefacts peuvent utiliser des référentiels pour gérer des artefacts numériques (souvent des fichiers) ainsi que des informations supplémentaires (métadonnées). JCR fonctionne très bien ici, car vous pouvez stocker les métadonnées au même emplacement que les fichiers: ceux qui comprennent ces propriétés supplémentaires peuvent les voir, ceux qui ne s'en soucient pas n'ont pas à les voir. Je sais Artifactory est une implémentation de référentiel Maven qui utilise JCR. Il existe également des référentiels pour gérer les artefacts de service Web, les artefacts de service de données et les artefacts de test.

Mais les référentiels JCR ne sont pas destinés à la gestion de fichiers. JCR utilise une notion simple de hiérarchie de nœuds, où les nœuds peuvent contenir des propriétés nommées (avec une ou plusieurs valeurs) et des enfants. Les propriétés et le nœud enfant autorisés sont entièrement dictés par les types de nœuds, qui peuvent être modifiés et mélangés en tant que de besoin sur un nœud par nœud de base. JCR prédéfinit certains types de nœuds intégrés qui sont couramment nécessaires, comme ceux utilisés pour représenter les fichiers et les dossiers dans le référentiel. Vous pouvez réutiliser ces types intégrés, les étendre, ou écrire votre propre. Beaucoup de gens préconisent d'utiliser des mixins presque comme des facettes ou des aspects, de sorte que si un nœud doit prendre une facette, vous pouvez simplement ajouter un mixin au nœud.

JCR a été conçu pour prendre facilement en charge l'importation de contenu XML dans le référentiel, où chaque élément est mappé à un nœud et chaque attribut est associé à un attribut. Et beaucoup de choses sont représentées en utilisant XML (ou YAML ou JSON), et tout cela peut facilement être représenté et stocké dans un référentiel JCR. Par exemple, considérons un référentiel JCR qui stocke des informations de configuration (qui peuvent normalement être stockées dans plusieurs fichiers XML). JCR peut mettre en version ces informations, autoriser l'accès à partir de plusieurs processus, activer l'interrogation et la recherche, et notifier l'application(s) lorsque le contenu changement.

Il existe plusieurs bons aperçus de JCR avec plus de détails et d'exemples. Quelques-uns de ces sont:

 80
Author: Randall Hauch, 2014-07-22 15:13:18