Définition
NoSQL (Not Only SQL) designe une famille de systèmes de gestion de bases de données qui s'eloignent du modèle relationnel traditionnel. Elles offrent des modèles de données flexibles, une scalabilité horizontale et des performances optimisées pour des cas d'usage spécifiques.
Le terme "NoSQL" ne signifie pas "pas de SQL" mais "pas seulement SQL". Beaucoup de bases NoSQL supportent des langages de requête similaires à SQL.
Les 4 types de bases NoSQL
1. Bases orientées documents
Stockent des données sous forme de documents JSON/BSON. Chaque document peut avoir une structure différente.
Exemples : MongoDB, CouchDB, Firestore Cas d'usage : catalogues produits, profils utilisateurs, CMS
{
"_id": "user_123",
"nom": "Alice",
"commandes": [
{"produit": "Laptop", "prix": 999},
{"produit": "Souris", "prix": 29}
]
}
2. Bases cle-valeur
Le modèle le plus simple : une cle associee à une valeur. Extrêmement rapides pour les lectures/écritures simples.
Exemples : Redis, DynamoDB, Memcached Cas d'usage : cache, sessions, compteurs, rate limiting
3. Bases orientées colonnes
Organisent les données par colonnes plutôt que par lignes. Optimisées pour les requêtes analytiques sur de grands volumes.
Exemples : Apache Cassandra, HBase, ScyllaDB Cas d'usage : time séries, IoT, logs, analytics a grande échelle
4. Bases orientées graphes
Modelisent les données comme des nœuds et des relations. Optimisées pour les requêtes de traverse de graphe.
Exemples : Neo4j, ArangoDB, Amazon Neptune Cas d'usage : réseaux sociaux, moteurs de recommandation, détection de fraude
SQL vs NoSQL : quand choisir quoi ?
| Critère | SQL | NoSQL |
|---|---|---|
| Schéma | Fixe, normalise | Flexible, evolutif |
| Relations | Jointures natives | Dénormalisation |
| Scalabilité | Verticale (principalement) | Horizontale native |
| Cohérence | ACID fort | Eventual consistency (souvent) |
| Requêtes | SQL standard | API spécifique à chaque base |
| Cas idéal | Transactions, relations complexes | Big data, haute performance |
Le theoreme CAP
Toute base de données distribuee ne peut garantir que 2 des 3 propriétés suivantes :
Consistency : tous les nœuds voient les mêmes données
Availability : chaque requête reçoit une réponse
Partition tolérance : le système fonctionne malgré des coupures réseau
MongoDB : CP (cohérence + partition tolérance)
Cassandra : AP (disponibilité + partition tolérance)
Redis : CP avec configuration AP possible