59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
# Neo4J
|
||
|
||
Neo4j est une base de données orientée graphes (Graph Database).
|
||
Contrairement aux bases relationnelles (comme PostgreSQL ou MySQL), qui organisent les données en tables et relations, Neo4j stocke les informations sous forme de nœuds (nodes) et de relations (relationships) — ce qui permet de modéliser naturellement les connexions entre entités.
|
||
|
||
## Noeuds
|
||
|
||
Les noeuds sont les entités principales du graphe.
|
||
|
||
```
|
||
(:Person { name: "Sigourney", age: 30 })
|
||
(:Film { title: "Alien", year: 1979 })
|
||
```
|
||
|
||
Chaque nœud peut avoir :
|
||
- une ou plusieurs étiquettes (labels) (:Person, :Film, etc.)
|
||
- des propriétés sous forme de paires clé/valeur.
|
||
|
||
## Relations
|
||
|
||
Les relations relient deux nœuds et ont elles aussi un type et des propriétés :
|
||
|
||
```cypher
|
||
(:Person {name: "Sigourney"})-[:JOUE { role: "Ellen" }]->(:Film {title: "Alien"})
|
||
```
|
||
|
||
JOUE est le type de relation.
|
||
|
||
{ role: "Ellen" } est une propriété de cette relation.
|
||
|
||
Les relations sont orientées : elles vont d’un nœud source vers un nœud cible `-[]->`.
|
||
|
||
## Le langage Cypher
|
||
|
||
Cypher est le langage de requête de Neo4j, inspiré de SQL mais adapté aux graphes.
|
||
|
||
### Trouver un noeud
|
||
|
||
```cypher
|
||
MATCH (p:Person { name: "Sigourney" })
|
||
RETURN p;
|
||
```
|
||
|
||
### Trouver des relations directes
|
||
|
||
```cypher
|
||
MATCH (a:Person)-[:KNOWS]->(b:Person)
|
||
RETURN a.name, b.name;
|
||
```
|
||
|
||
### Trouver des chemins
|
||
|
||
```cypher
|
||
MATCH path = (a:Person {name:"Alice"})-[:KNOWS*1..3]->(b:Person)
|
||
RETURN path;
|
||
```
|
||
|
||
[:KNOWS*1..3] cherche des chemins de 1 à 3 sauts.
|