Skip to main content

Base de données

Quatre types de bases de données sont utilisées suivant la structuration des données.

  • Pour les données relationnelles : PostgreSQL
  • Pour les données faiblement structurées : MongoDB
  • Pour les données avec de forte relation : Neo4J
  • Pour les données de recherche : OpenSearch

Modèles de données

Le modèle de données est détaillé dans la partie Développement.

De façon générale, la base de données Neo4j est utilisé pour l'annuaire :

  • des établissements
  • des professeurs
  • des élèves
  • des groupes d'élèves

Connexion

Les bases de données sont connectés par les ports habituels.

Base de donnéesDescriptionPort habituel
PostgreSQLDonnées relationnelles5432
MongoDBDonnées faiblement structurées27017
Neo4jDonnées avec de fortes relations7474 (HTTP), 7687 (Bolt)
OpenSearchDonnées de recherche9200 (HTTP), 9300 (Transport)

Ce tableau correspond aux ports standards utilisés par ces bases de données, mais il est possible d'adapter pour chaque modules ces valeurs.

Neo4J

La base de données Neo4J peut être consultée avec un navigateur avec l'url de connection à la base de données Neo4J

bolt://localhost:7474

Il est également possible de lancer la commande suivante si Neo4j a été lancé dans un container :

docker exec -it <neo4j-container-id> /var/lib/neo4j/bin/cypher-shell -u neo4j -p openentpwd

Indexes

Chaque base de données est indexé permettant de garantir les performances.

Indexes Neo4j

Voici les indexes disponibles pour Neo4J

idnamestatepopulationPercenttypeentityTypelabelsOrTypespropertiesindexProviderowningConstraintlastReadreadCount
83backup_in_outgoing_indexONLINE100.0RANGENODE["Backup"]["IN_OUTGOING"]range-1.0nullnull0
68constraint_16e87745ONLINE100.0RANGENODE["Functions"]["externalId"]range-1.0constraint_16e87745null0
72constraint_1a1b5fdbONLINE100.0RANGENODE["Class"]["externalId"]range-1.0constraint_1a1b5fdbnull0
53constraint_1f126c75ONLINE100.0RANGENODE["User"]["login"]range-1.0constraint_1f126c75null0
18constraint_2345d732ONLINE100.0RANGENODE["UserBook"]["userid"]range-1.0constraint_2345d732null0
20constraint_2a537299ONLINE100.0RANGENODE["Subject"]["id"]range-1.0constraint_2a537299null0
32constraint_30f07e21ONLINE100.0RANGENODE["User"]["IDPN"]range-1.0constraint_30f07e21null0
74constraint_36211a13ONLINE100.0RANGENODE["Group"]["id"]range-1.0constraint_36211a13null0
6constraint_3f6d12faONLINE100.0RANGENODE["Action"]["name"]range-1.0constraint_3f6d12fa2024-07-25T11:41:56.048000000Z4
35constraint_4539fc8cONLINE100.0RANGENODE["Structure"]["id"]range-1.0constraint_4539fc8cnull0
56constraint_48c65121ONLINE100.0RANGENODE["Profile"]["id"]range-1.0constraint_48c65121null0
24constraint_49fb5ab8ONLINE100.0RANGENODE["FunctionalGroup"]["externalId"]range-1.0constraint_49fb5ab8null0
37constraint_51a1f181ONLINE100.0RANGENODE["Structure"]["externalId"]range-1.0constraint_51a1f181null0
58constraint_570d4b5bONLINE100.0RANGENODE["Profile"]["externalId"]range-1.0constraint_570d4b5bnull0
47constraint_5c6f2735ONLINE100.0RANGENODE["Module"]["externalId"]range-1.0constraint_5c6f2735null0
45constraint_5da9ddceONLINE100.0RANGENODE["Module"]["id"]range-1.0constraint_5da9ddcenull0
16constraint_6e7d683dONLINE100.0RANGENODE["Visible"]["id"]range-1.0constraint_6e7d683dnull0
26constraint_70a1d342ONLINE100.0RANGENODE["FunctionalGroup"]["id"]range-1.0constraint_70a1d342null0
14constraint_742013aONLINE100.0RANGENODE["Application"]["name"]range-1.0constraint_742013anull0
49constraint_74fad970ONLINE100.0RANGENODE["User"]["id"]range-1.0constraint_74fad970null0
51constraint_80a1f237ONLINE100.0RANGENODE["User"]["externalId"]range-1.0constraint_80a1f237null0
60constraint_867bf661ONLINE100.0RANGENODE["Profile"]["name"]range-1.0constraint_867bf661null0
12constraint_8a882ed9ONLINE100.0RANGENODE["Application"]["id"]range-1.0constraint_8a882ed9null0
22constraint_97904f6eONLINE100.0RANGENODE["Subject"]["externalId"]range-1.0constraint_97904f6enull0
70constraint_9cc87232ONLINE100.0RANGENODE["Class"]["id"]range-1.0constraint_9cc87232null0
62constraint_a0148ccaONLINE100.0RANGENODE["Function"]["id"]range-1.0constraint_a0148ccanull0
66constraint_ab3f7c6fONLINE100.0RANGENODE["Functions"]["id"]range-1.0constraint_ab3f7c6fnull0
43constraint_bedc05c8ONLINE100.0RANGENODE["FieldOfStudy"]["externalId"]range-1.0constraint_bedc05c8null0
10constraint_c6ac707aONLINE100.0RANGENODE["Role"]["name"]range-1.0constraint_c6ac707a2024-07-25T11:41:56.115000000Z4
3constraint_d5db6174ONLINE100.0RANGENODE["System"]["name"]range-1.0constraint_d5db61742024-07-25T11:43:09.482000000Z3
8constraint_daf86f20ONLINE100.0RANGENODE["Role"]["id"]range-1.0constraint_daf86f202024-07-25T11:41:56.046000000Z3
39constraint_e262332aONLINE100.0RANGENODE["StructureLevel"]["id"]range-1.0constraint_e262332anull0
41constraint_e419b8adONLINE100.0RANGENODE["StructureLevel"]["externalId"]range-1.0constraint_e419b8adnull0
64constraint_eeadf07bONLINE100.0RANGENODE["Function"]["externalId"]range-1.0constraint_eeadf07bnull0
30constraint_efdc8a99ONLINE100.0RANGENODE["UserBook"]["id"]range-1.0constraint_efdc8a99null0
1constraint_f0e16e7bONLINE100.0RANGENODE["Action"]["id"]range-1.0constraint_f0e16e7b2024-07-25T11:41:56.048000000Z4
28constraint_f59a03ccONLINE100.0RANGENODE["UserBook"]["externalId"]range-1.0constraint_f59a03ccnull0
77constraint_f8b70b6eONLINE100.0RANGENODE["Domain"]["id"]range-1.0constraint_f8b70b6enull0
79constraint_fcfe1711ONLINE100.0RANGENODE["Domain"]["externalId"]range-1.0constraint_fcfe1711null0
5constraint_fdf2aa99ONLINE100.0RANGENODE["Action"]["externalId"]range-1.0constraint_fdf2aa992024-07-25T11:41:56.048000000Z3
75index_c0e4f54fONLINE100.0FULLTEXTNODE["Note"]["content"]fulltext-1.0nullnull0
80index_4fa65ed7ONLINE100.0FULLTEXTNODE["TrainingCourse"]["description"]fulltext-1.0nullnull0
81index_8083fa70ONLINE100.0FULLTEXTNODE["UserBook"]["description"]fulltext-1.0nullnull0
82index_97d16293ONLINE100.0FULLTEXTNODE["Note"]["title"]fulltext-1.0nullnull0
21index_f652db20ONLINE100.0RANGERELATIONSHIP["TEACHES"]["outProperty"]range-1.0nullnull0
33index_95a62da4ONLINE100.0RANGERELATIONSHIP["HAS_CHILD"]["outProperty"]range-1.0nullnull0
25index_b9ae90f1ONLINE100.0RANGERELATIONSHIP["HAS_PARENT"]["outProperty"]range-1.0nullnull0
84index_e4c8b228ONLINE100.0FULLTEXTRELATIONSHIP["LIKES"]["description"]fulltext-1.0nullnull0
  • Nodes disponibles

Node Neo4j

MongoDB

Connexion MongoDB

Url de connection à la base de données MongoDB

mongodb://openent-root:openent-pwd@localhost:27017/test?authSource=admin&w=majority&readPreference=primary&appname=MongoDB%20Compass&retryWrites=true&directConnection=true&ssl=false

OpenSearch

OpenSearch est configuré pour OpenENT de la manière suivante :

  • utilisation de certificats "Let's Encrypt" pour la couche transport et http d'OpenSearch
  • configuration du plugin opensearch-security pour utiliser l'IDP d'Open ENT v3 pour l'authentification et l'autorisation

OpenSearch configuré avec OpenID