175 lines
4.0 KiB
Markdown
175 lines
4.0 KiB
Markdown
# Backend development
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
+ Architecture serveur
|
|
+ Types de base de données
|
|
+ Base de données relationnelles
|
|
|
|
---
|
|
|
|
### Architecture Serveur
|
|
|
|
![[Pasted image 20250312154125.png|512]]
|
|
|
|
--
|
|
|
|
### Reverse proxy
|
|
|
|
![[Pasted image 20250312154343.png|768]]
|
|
|
|
+ Résoud les requêtes (routing)
|
|
+ Load balancing
|
|
+ Cryptographie et certificats
|
|
|
|
--
|
|
|
|
### Web server
|
|
|
|
![[Pasted image 20250312155058.png]]
|
|
|
|
+ Le moteur écoute les requête, sérialise les réponses, gère les imprévus, fait tourner le code de l'API
|
|
+ l'API est la partie programmable du serveur, la plaque tournant de la logique
|
|
|
|
--
|
|
|
|
### Stockage
|
|
|
|
![[Pasted image 20250312155847.png|512]]
|
|
|
|
+ Base de données
|
|
+ Permet une structuration efficace et performante des données
|
|
+ Peut être versionnée, backupé, migré
|
|
|
|
--
|
|
|
|
### BDD relationnelles
|
|
|
|
![[Pasted image 20250312155847.png|512]]
|
|
|
|
+ Extrêmement polyvalentes et performantes
|
|
+ ACID (atomicity, consistency, isolation, and durability)
|
|
+ difficiles à scale
|
|
|
|
--
|
|
|
|
### BDD Document
|
|
|
|
![[Pasted image 20250312161605.png|512]]
|
|
|
|
+ Données structurées de manière plus flexible
|
|
+ Manipulées comme du JSON, naturel à utiliser depuis l'OO
|
|
+ plus facile à aborder et à scale initialement
|
|
+ Non ACID
|
|
|
|
--
|
|
|
|
### BDD Clé-valeur
|
|
|
|
![[Pasted image 20250312161701.png]]
|
|
|
|
+ Un genre de gros dictionnaire en mémoire vive
|
|
+ Performance++
|
|
+ Souvent utilisé comme cache pour les données fréquemment lues
|
|
+ Ou pour des usages répétés mais relativement simples
|
|
|
|
--
|
|
|
|
### BDD en graph
|
|
|
|
![[Pasted image 20250312161743.png|512]]
|
|
|
|
+ Données fortement interconnectées (type réseau social)
|
|
+ Les relations entre les éléements ont autant d'importance que les éléments eux-mêmes
|
|
|
|
---
|
|
|
|
## BDD Relationnelles
|
|
|
|
![[Pasted image 20250312162226.png]]
|
|
|
|
+ Polyvalence extrême
|
|
+ Toujours ce qu'il se fait de mieux depuis 1970
|
|
|
|
--
|
|
|
|
### Tables
|
|
|
|
![[Pasted image 20250312162333.png|768]]
|
|
|
|
+ Une table représente généralement un genre d'entité (ici, Customer)
|
|
+ On divise la table en colonnes (columns, des attributs) et en lignes (rows, des entrées dans la BDD)
|
|
+ Chaque row doit avoir un moyen unique de la différencier du reste, ce qu'on appelle une Primary Key (PK)
|
|
+ une PK peut être simple ou composite
|
|
|
|
--
|
|
|
|
### Relations
|
|
|
|
![[Pasted image 20250312162724.png]]
|
|
|
|
+ Les tables peuvent être mises en relation
|
|
+ Quand une PK est référencée dans une autre table comme un attribut, on parle alors de Foreign Key (FK)
|
|
|
|
--
|
|
|
|
### One to one
|
|
|
|
![[Pasted image 20250312163059.png|512]]
|
|
|
|
+ On peut avoir deux tables différentes qui se référencent par une FK dont on force l'unicité
|
|
+ On s'assure ainsi qu'un pays a un seul représentant et que ce représentant ne soit pas associé à d'autres pays
|
|
|
|
--
|
|
|
|
### One to many
|
|
|
|
![[Pasted image 20250312162724.png]]
|
|
|
|
+ Quand la FK n'est pas unique, on peut avoir plusieurs rows qui ont la même valeur en FK
|
|
+ Une classe n'aura qu'un seul professeur, mais un professeur peut enseigner plusieurs classes différentes
|
|
|
|
--
|
|
|
|
### Many to many
|
|
|
|
![[Pasted image 20250312163446.png|300]]
|
|
|
|
+ Quand on décrit une représentation many-to-many, on utilise une table de jointure pour s'assurer de la cohérence des entrées
|
|
+ La PK de la table de jointure peut-être simple (ID) mais souvent composite (les deux FK couplées)
|
|
+ Un étudiant accède à plusieurs classes, et les classes ont plusieurs étudiants qui y viennent
|
|
|
|
--
|
|
|
|
### Schema
|
|
|
|
![[Pasted image 20250312163825.png]]
|
|
|
|
+ La représentation de ces tables et de leurs relations forme le schema
|
|
|
|
--
|
|
|
|
### Interactions
|
|
|
|
![[Pasted image 20250312164204.png|300]]
|
|
|
|
+ On interagis avec la BDD en SQL (Structured Query Language)
|
|
+ On décrit ce qu'on veut, d'ou on le veut, on filtre sous quelles conditions on le veut et on traverse ainsi les relations de la BDD
|
|
|
|
--
|
|
|
|
### Jointures
|
|
|
|
![[Pasted image 20250312164329.png|512]]
|
|
|
|
+ On a plusieurs moyen de traverser et combiner les relations de notre BDD
|
|
|
|
--
|
|
|
|
### ORM
|
|
|
|
![[Pasted image 20250312164451.png]]
|
|
|
|
+ On aime bien utiliser des ORM pour représenter et interagir plus naturellement avec la BDD dans un langage OO |