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ées | Description | Port habituel |
---|---|---|
PostgreSQL | Données relationnelles | 5432 |
MongoDB | Données faiblement structurées | 27017 |
Neo4j | Données avec de fortes relations | 7474 (HTTP), 7687 (Bolt) |
OpenSearch | Données de recherche | 9200 (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
id | name | state | populationPercent | type | entityType | labelsOrTypes | properties | indexProvider | owningConstraint | lastRead | readCount |
---|---|---|---|---|---|---|---|---|---|---|---|
83 | backup_in_outgoing_index | ONLINE | 100.0 | RANGE | NODE | ["Backup"] | ["IN_OUTGOING"] | range-1.0 | null | null | 0 |
68 | constraint_16e87745 | ONLINE | 100.0 | RANGE | NODE | ["Functions"] | ["externalId"] | range-1.0 | constraint_16e87745 | null | 0 |
72 | constraint_1a1b5fdb | ONLINE | 100.0 | RANGE | NODE | ["Class"] | ["externalId"] | range-1.0 | constraint_1a1b5fdb | null | 0 |
53 | constraint_1f126c75 | ONLINE | 100.0 | RANGE | NODE | ["User"] | ["login"] | range-1.0 | constraint_1f126c75 | null | 0 |
18 | constraint_2345d732 | ONLINE | 100.0 | RANGE | NODE | ["UserBook"] | ["userid"] | range-1.0 | constraint_2345d732 | null | 0 |
20 | constraint_2a537299 | ONLINE | 100.0 | RANGE | NODE | ["Subject"] | ["id"] | range-1.0 | constraint_2a537299 | null | 0 |
32 | constraint_30f07e21 | ONLINE | 100.0 | RANGE | NODE | ["User"] | ["IDPN"] | range-1.0 | constraint_30f07e21 | null | 0 |
74 | constraint_36211a13 | ONLINE | 100.0 | RANGE | NODE | ["Group"] | ["id"] | range-1.0 | constraint_36211a13 | null | 0 |
6 | constraint_3f6d12fa | ONLINE | 100.0 | RANGE | NODE | ["Action"] | ["name"] | range-1.0 | constraint_3f6d12fa | 2024-07-25T11:41:56.048000000Z | 4 |
35 | constraint_4539fc8c | ONLINE | 100.0 | RANGE | NODE | ["Structure"] | ["id"] | range-1.0 | constraint_4539fc8c | null | 0 |
56 | constraint_48c65121 | ONLINE | 100.0 | RANGE | NODE | ["Profile"] | ["id"] | range-1.0 | constraint_48c65121 | null | 0 |
24 | constraint_49fb5ab8 | ONLINE | 100.0 | RANGE | NODE | ["FunctionalGroup"] | ["externalId"] | range-1.0 | constraint_49fb5ab8 | null | 0 |
37 | constraint_51a1f181 | ONLINE | 100.0 | RANGE | NODE | ["Structure"] | ["externalId"] | range-1.0 | constraint_51a1f181 | null | 0 |
58 | constraint_570d4b5b | ONLINE | 100.0 | RANGE | NODE | ["Profile"] | ["externalId"] | range-1.0 | constraint_570d4b5b | null | 0 |
47 | constraint_5c6f2735 | ONLINE | 100.0 | RANGE | NODE | ["Module"] | ["externalId"] | range-1.0 | constraint_5c6f2735 | null | 0 |
45 | constraint_5da9ddce | ONLINE | 100.0 | RANGE | NODE | ["Module"] | ["id"] | range-1.0 | constraint_5da9ddce | null | 0 |
16 | constraint_6e7d683d | ONLINE | 100.0 | RANGE | NODE | ["Visible"] | ["id"] | range-1.0 | constraint_6e7d683d | null | 0 |
26 | constraint_70a1d342 | ONLINE | 100.0 | RANGE | NODE | ["FunctionalGroup"] | ["id"] | range-1.0 | constraint_70a1d342 | null | 0 |
14 | constraint_742013a | ONLINE | 100.0 | RANGE | NODE | ["Application"] | ["name"] | range-1.0 | constraint_742013a | null | 0 |
49 | constraint_74fad970 | ONLINE | 100.0 | RANGE | NODE | ["User"] | ["id"] | range-1.0 | constraint_74fad970 | null | 0 |
51 | constraint_80a1f237 | ONLINE | 100.0 | RANGE | NODE | ["User"] | ["externalId"] | range-1.0 | constraint_80a1f237 | null | 0 |
60 | constraint_867bf661 | ONLINE | 100.0 | RANGE | NODE | ["Profile"] | ["name"] | range-1.0 | constraint_867bf661 | null | 0 |
12 | constraint_8a882ed9 | ONLINE | 100.0 | RANGE | NODE | ["Application"] | ["id"] | range-1.0 | constraint_8a882ed9 | null | 0 |
22 | constraint_97904f6e | ONLINE | 100.0 | RANGE | NODE | ["Subject"] | ["externalId"] | range-1.0 | constraint_97904f6e | null | 0 |
70 | constraint_9cc87232 | ONLINE | 100.0 | RANGE | NODE | ["Class"] | ["id"] | range-1.0 | constraint_9cc87232 | null | 0 |
62 | constraint_a0148cca | ONLINE | 100.0 | RANGE | NODE | ["Function"] | ["id"] | range-1.0 | constraint_a0148cca | null | 0 |
66 | constraint_ab3f7c6f | ONLINE | 100.0 | RANGE | NODE | ["Functions"] | ["id"] | range-1.0 | constraint_ab3f7c6f | null | 0 |
43 | constraint_bedc05c8 | ONLINE | 100.0 | RANGE | NODE | ["FieldOfStudy"] | ["externalId"] | range-1.0 | constraint_bedc05c8 | null | 0 |
10 | constraint_c6ac707a | ONLINE | 100.0 | RANGE | NODE | ["Role"] | ["name"] | range-1.0 | constraint_c6ac707a | 2024-07-25T11:41:56.115000000Z | 4 |
3 | constraint_d5db6174 | ONLINE | 100.0 | RANGE | NODE | ["System"] | ["name"] | range-1.0 | constraint_d5db6174 | 2024-07-25T11:43:09.482000000Z | 3 |
8 | constraint_daf86f20 | ONLINE | 100.0 | RANGE | NODE | ["Role"] | ["id"] | range-1.0 | constraint_daf86f20 | 2024-07-25T11:41:56.046000000Z | 3 |
39 | constraint_e262332a | ONLINE | 100.0 | RANGE | NODE | ["StructureLevel"] | ["id"] | range-1.0 | constraint_e262332a | null | 0 |
41 | constraint_e419b8ad | ONLINE | 100.0 | RANGE | NODE | ["StructureLevel"] | ["externalId"] | range-1.0 | constraint_e419b8ad | null | 0 |
64 | constraint_eeadf07b | ONLINE | 100.0 | RANGE | NODE | ["Function"] | ["externalId"] | range-1.0 | constraint_eeadf07b | null | 0 |
30 | constraint_efdc8a99 | ONLINE | 100.0 | RANGE | NODE | ["UserBook"] | ["id"] | range-1.0 | constraint_efdc8a99 | null | 0 |
1 | constraint_f0e16e7b | ONLINE | 100.0 | RANGE | NODE | ["Action"] | ["id"] | range-1.0 | constraint_f0e16e7b | 2024-07-25T11:41:56.048000000Z | 4 |
28 | constraint_f59a03cc | ONLINE | 100.0 | RANGE | NODE | ["UserBook"] | ["externalId"] | range-1.0 | constraint_f59a03cc | null | 0 |
77 | constraint_f8b70b6e | ONLINE | 100.0 | RANGE | NODE | ["Domain"] | ["id"] | range-1.0 | constraint_f8b70b6e | null | 0 |
79 | constraint_fcfe1711 | ONLINE | 100.0 | RANGE | NODE | ["Domain"] | ["externalId"] | range-1.0 | constraint_fcfe1711 | null | 0 |
5 | constraint_fdf2aa99 | ONLINE | 100.0 | RANGE | NODE | ["Action"] | ["externalId"] | range-1.0 | constraint_fdf2aa99 | 2024-07-25T11:41:56.048000000Z | 3 |
75 | index_c0e4f54f | ONLINE | 100.0 | FULLTEXT | NODE | ["Note"] | ["content"] | fulltext-1.0 | null | null | 0 |
80 | index_4fa65ed7 | ONLINE | 100.0 | FULLTEXT | NODE | ["TrainingCourse"] | ["description"] | fulltext-1.0 | null | null | 0 |
81 | index_8083fa70 | ONLINE | 100.0 | FULLTEXT | NODE | ["UserBook"] | ["description"] | fulltext-1.0 | null | null | 0 |
82 | index_97d16293 | ONLINE | 100.0 | FULLTEXT | NODE | ["Note"] | ["title"] | fulltext-1.0 | null | null | 0 |
21 | index_f652db20 | ONLINE | 100.0 | RANGE | RELATIONSHIP | ["TEACHES"] | ["outProperty"] | range-1.0 | null | null | 0 |
33 | index_95a62da4 | ONLINE | 100.0 | RANGE | RELATIONSHIP | ["HAS_CHILD"] | ["outProperty"] | range-1.0 | null | null | 0 |
25 | index_b9ae90f1 | ONLINE | 100.0 | RANGE | RELATIONSHIP | ["HAS_PARENT"] | ["outProperty"] | range-1.0 | null | null | 0 |
84 | index_e4c8b228 | ONLINE | 100.0 | FULLTEXT | RELATIONSHIP | ["LIKES"] | ["description"] | fulltext-1.0 | null | null | 0 |
- Nodes disponibles
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