Données

Stockages, schémas et projections

En bref : Neo4j porte le graphe consolidé ; les bases PostgreSQL, Redis et les index servent chaque composant ; le bus RabbitMQ n'est pas une source de vérité. Des données personnelles se trouvent dans au moins six stockages : la vitrine ne doit lire qu'un export filtré.

Cette annexe dit où une donnée est physiquement conservée. Le sens des entités est dans le modèle de données, les champs dans le dictionnaire.

Matrice des responsabilités

Statut : Confirmé dans le code et la configuration de déploiement de référence.

StockageContenuDonnées personnellesRôle et restauration
Neo4j (graphe)Personnes, structures, identifiants, notices, publications, contributions, revues, concepts, correctionsOui : noms, identifiants, rattachementsRéférence métier ; sauvegarde à l'arrêt
PostgreSQL du moissonneurCollectes, erreurs, notices normaliséesOui : noms et identifiants d'auteursHistorique de collecte
PostgreSQL de SoVisu+Copie des entités, masquage, rôles, actions en attente, dépôts HAL, emails, jetons ORCID chiffrésOui, dont jetonsCopie reconstruisible et états propres non reconstruisibles
PostgreSQL de l'Org RegistryROR, UAI, relations d'organisationsNonRéférentiel local
PostgreSQL de l'ordonnanceur (Airflow)Exécutions, variables, connexionsPossible (journaux)Utile à la reprise
PostgreSQL du service d'authentification (Keycloak)Comptes, rôles, sessionsOui, sensibleIdentité et accès
Redis de la passerelle d'annuaireVersions datées des personnes et structuresOui : fiches complètesDétection des changements ; persistant
Redis du moissonneurCache des API tiercesPossibleReconstructible
RabbitMQMessages en attenteOui, en transitTransport seulement
Elasticsearch du grapheNotices indexéesOui : auteursDésactivé dans le déploiement
Index OpenSearch (Vocab Search, Taxi)Vocabulaires, vecteurs de la taxonomie OpenAlexNonRecalculables
Export vitrineSous-ensemble public, filtré, datéLimité à la liste blancheProjection Saclay (extrait et comparatif du POC)

Neo4j : garanties du schéma

Au démarrage, le graphe crée des contraintes d'unicité sur les identifiants, un index plein texte sur les noms de personnes, des index sur les types de structures et un index vectoriel. Toutes les règles métier ne sont donc pas garanties par la base. Certaines contraintes ne sont créées qu'en édition Enterprise ; l'édition par défaut est Community. Une contrainte Enterprise vise en outre une relation que les requêtes n'utilisent pas. Statut : Confirmé.

Sur l'instance : édition Community, 27 contraintes, 33 index, aucune contrainte sur une relation. Statut : Observé sur instance (dev) (données observées). Les noms de nœuds observés y diffèrent en partie du code lu (modèle de données).

PostgreSQL SoVisuPlus : projection et état applicatif

À chaque avis de changement venu du bus, SoVisu+ relit l'entité dans Apollo et met à jour sa base. Cette base est donc une copie du graphe, enrichie de données propres à l'interface : masquage, rôles et périmètres, actions en attente d'envoi, jetons ORCID, dépôts HAL, emails. Statut : Confirmé.

La restauration doit séparer la copie reconstruisible des actions, secrets et dépôts non reconstruisibles. Sans règle de réconciliation, Neo4j et SoVisu+ peuvent diverger temporairement (livraison et rejeu).

Elasticsearch IKG

Statut : Confirmé dans le code, désactivé dans la configuration de déploiement. L'index ne reçoit une notice qu'à sa création, pas à sa mise à jour. Fraîcheur et retrait des notices : À confirmer. Ce n'est pas une référence alternative à Neo4j.

Index OpenSearch

  • Vocab Search : un index par vocabulaire, avec libellés multilingues et autocomplétion.
  • Taxi : index vectoriel de la taxonomie OpenAlex. Son moteur est annoncé comme retiré dans OpenSearch 3 : migration à prévoir. Son état d'import n'est pas conservé entre deux redémarrages : un redémarrage peut relancer le calcul (À confirmer).

Contrôles encore nécessaires

  • mesurer volumes et durées de rétention de chaque stockage ;
  • définir des sauvegardes cohérentes entre Neo4j, PostgreSQL, Redis, RabbitMQ et les fichiers HAL ;
  • séparer, dans le plan de reprise de SoVisu+, la copie reconstruisible des états propres ;
  • confirmer la persistance du cache du moissonneur, de Vocab Search et de l'état de Taxi.

Preuves principales

Les révisions sont centralisées dans Sources et preuves.

Last modified on