J'essaie d'évaluer les référentiels de contenu ( JSR28 ) comme Jackrabbit et ModeShape mais je dois avouer que je ne comprends pas quel problème se résout dans première place et même si c'est un bon choix pour le projet. Selon vous, quels cas sont la meilleure solution à appliquer? N'est-ce 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.
Les référentiels JCR sont différents des SGBDR, car un référentiel JCR:
Vous pouvez certainement créer tout ou partie de ces fonctionnalités dans votre propre application, mais cela s'éloigne probablement de l'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) sont vraiment nés du besoin d'une API standard et commune pour accéder à différents référentiels de contenu (voir JSR-17 et JSR-28 ).
Un autre exemple est les systèmes de gestion de documents, qui gèrent des fichiers électroniques (qui sont souvent des images de documents papier) et fournissent des recherches et des requêtes. Les DMS utilisent les référentiels depuis un certain temps.
Les systèmes de gestion des artefacts peuvent utiliser des référentiels pour gérer les 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 s'en moquent n'ont pas à les voir. Je sais Artifactory est une implémentation du référentiel Maven qui utilise JCR. Il existe également des référentiels pour la gestion des artefacts de service Web, des artefacts de service de données et des artefacts de test.
Mais les référentiels JCR ne sont pas destinés à gérer des fichiers. JCR utilise une notion simple d'une 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 qui sont autorisés sont entièrement dictés par les types de nœuds, qui peuvent être modifiés et mélangés selon les besoins, nœud par nœud. JCR prédéfinit certains types de nœuds intégrés qui sont généralement 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 les vôtres. 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 en charge facilement l'importation de contenu XML dans le référentiel, où chaque élément est mappé à un nœud et chaque attribut est mappé à 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 les informations de configuration (qui peuvent normalement être stockées dans plusieurs fichiers XML). JCR peut mettre à jour ces informations, autoriser l'accès à celles-ci à partir de plusieurs processus, activer les requêtes et les recherches, et notifier les applications lorsque le contenu change.
Il existe plusieurs bons aperçus de JCR avec plus de détails et d'exemples. En voici quelques-uns: