79 votes

Quand utiliser le JCR (content repository) plutôt que d'autres options ?

J'essaie d'évaluer les référentiels de contenu ( JSR283 ) comme Lièvre y ModeShape mais je dois avouer que je ne comprends pas ce que le problème résout en premier lieu et même si c'est un bon choix pour le projet. Dans quels cas pensez-vous qu'il s'agit de la meilleure solution à appliquer ? N'est-ce pas la même chose que les bases de données relationnelles, à l'exception de la taille ? Pourquoi ? Points supplémentaires si vous donnez des exemples concrets.

Merci d'avance.

9 votes

Je ne suis sans doute pas le seul à aimer savoir ce que sont les choses, ce qu'elles font et quand et pourquoi je pourrais vouloir les utiliser, juste au cas où je rencontrerais un problème qui s'y prêterait bien.

1 votes

Il serait utile que quelqu'un explique en quoi un référentiel de contenu est différent d'un service d'annuaire (LDAP). Qu'en est-il de la différence avec une base de données NoSQL ?

89voto

Randall Hauch Points 3231

RJC référentiels sont différents de RDBMSes, car un RJC référentiel:

  • est hiérarchique, permettant d'organiser votre contenu dans une structure qui correspond le mieux à vos besoins et de l'information est souvent stocké près de l'autre et donc facile à naviguer
  • est flexible, ce qui permet au contenu de s'adapter et d'évoluer, à l'aide d'un nœud de type de système peut être complètement "schemaless" à plein restrictives (par exemple, comme une base de données relationnelle)
  • utilise un standard de l'API Java (par exemple, javax.rjc)
  • les résumés, où l'information est vraiment stockés: beaucoup de RJC implémentations peuvent stocker du contenu dans une variété de bases de données relationnelles et d'autres magasins, certains peuvent exposer les non-RJC les magasins à travers le RJC API, et certains peuvent fédérer plusieurs magasins en un seul référentiel virtuel.
  • prend en charge les requêtes et la recherche de texte intégral de la boîte
  • prend en charge les événements, de blocage, de 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? Systèmes de gestion de contenu ont utilisé des référentiels pour une longue période, et des RJC (et Jackrabbit) est née de la nécessité d'une commune, la norme API pour accéder aux différents référentiels de contenu (voir la JSR-170 et JSR-283).

Un autre exemple sont les systèmes de gestion de documents, gestion de fichiers électroniques (qui sont souvent des images de documents papier) et fournir la recherche et de la requête. DMSes ont utilisé des référentiels pour un certain temps.

Artefact systèmes de gestion d'utilisation des référentiels pour gérer les artefacts numériques (souvent des fichiers) ainsi que d'autres informations (métadonnées). RJC fonctionne très bien ici, parce que vous pouvez stocker les métadonnées dans le même emplacement que les fichiers: ceux qui comprennent ces propriétés supplémentaires peuvent les voir, ceux qui ne se soucient pas de ne pas avoir à les voir. Je sais Artifactory est un référentiel de mise en œuvre qui utilise des RJC. Il y a aussi des référentiels pour la gestion du service web artefacts, le service de données d'artefacts, et de tester des artefacts.

Mais RJC référentiels ne sont pas pour la gestion de fichiers. RJC utilise un simple notion 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 les enfants. Les propriétés et les nœuds enfants qui sont autorisées sont entièrement dicté par les types de nœuds, qui peuvent être modifiés et mixtes en tant que de besoin sur un nœud par nœud. RJC prédéfinit certains intégrés dans les différents types de nœuds qui sont souvent nécessaires, comme celles utilisées pour représenter des fichiers et des 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 l'aide de mixin presque comme les facettes ou les aspects, de sorte que si un nœud a besoin de prendre sur une facette, vous pouvez simplement ajouter un mixin pour le nœud.

JCR a été conçu pour facilement prendre en charge l'importation de XML contenu dans le dépôt, où chaque élément est associé à un nœud et chaque attribut est associé à un attribut. Et beaucoup de choses est représenté en XML ou YAML ou JSON), et tout cela peut facilement être représenté et stockées dans un RJC référentiel. Considérez, par exemple, un RJC référentiel stocke les informations de configuration (qui peut normalement être stockées dans de multiples fichiers XML). RJC pouvez version que l'information, permettre l'accès à partir de plusieurs processus, de permettre l'interrogation et la recherche, et en informer la ou les demande(s) lors des modifications de contenu.

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

0 votes

Introducing the Java Content Repository API par Titus Barik <-- le lien est cassé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X