Files
ObsidianWork/Subjects/Backend development.md

4.0 KiB

Backend development


Overview

  • Architecture serveur
  • Types de base de données
  • Base de données relationnelles

Architecture Serveur

!Pasted image 20250312154125.png

--

Reverse proxy

!Pasted image 20250312154343.png

  • 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

  • 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

  • Extrêmement polyvalentes et performantes
  • ACID (atomicity, consistency, isolation, and durability)
  • difficiles à scale

--

BDD Document

!Pasted image 20250312161605.png

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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