Introduction aux bases de données NoSQL
Les bases de données NoSQL (« Not Only SQL ») désignent des systèmes non relationnels. Leur popularité a augmenté depuis 2009, répondant aux besoins des sites web dynamiques à grande échelle.
Pourquoi choisir NoSQL ?
Les bases de données traditionnelles montrent leurs limites avec les sites web massivement fréquentés, où la gestion des requêtes devient complexe. Les solutions NoSQL offrent une meilleure flexibilité et performance dans ces cas.
Classification des bases NoSQL
1. Stockage clé-valeur
# Exemple:
- Clé : "user:1000"
- Valeur : {nom: "Jean", age: 30}
2. Stockage en colonnes
# Exemple:
- Clé : "users"
- Colonne : "nom" => "Jean"
- Colonne : "age" => 30
3. Bases documentaires
# Exemple JSON :
{
"nom": "Jean",
"age": 30,
"adresse": {
"ville": "Paris",
"code_postal": "75000"
}
}
4. Graphes
Modèles flexibles pour représenter des relations complexes.
Cas d'utilisation de NoSQL
- Systèmes nécessitant une grande flexibilité
- Exigences élevées de performance
- Moins besoin de cohérence forte
Qu'est-ce que Redis ?
Redis est un magasin de structures de données en mémoire, utilisé comme base de données, cache ou broker de messages.
Caractéristiques de Redis
- Base de données clé/valeur haute performance
- Support divers types de données
- Persistante
- Architecture simple
Installation de Redis
# Installation sous CentOS
yum install gcc -y
make MALLOC=libc
make install PREFIX=/usr/redis
Commandes Redis
Opérations sur les bases de données
FLUSHDB - Efface la base courante
FLUSHALL - Efface toutes les bases
Gestion des clés
| Commande | Description |
|---|---|
| DEL | Supprime une ou plusieurs clés |
| EXISTS | Vérifie l'existence d'une clé |
| EXPIRE | Définit une durée de vie pour une clé |
Type String
| Commande | Description |
|---|---|
| SET | Définit une valeur |
| GET | Récupère une valeur |
Type List
| Commande | Description |
|---|---|
| LPUSH | Ajoute un élément au début de la liste |
| RPUSH | Ajoute un élément à la fin de la liste |
Type Set
| Commande | Description |
|---|---|
| SADD | Ajoute un élément à un ensemble |
| SMEMBERS | Liste tous les éléments d'un ensemble |
Type ZSet
| Commande | Description |
|---|---|
| ZADD | Ajoute un élément à un ensemble trié |
| ZRANGE | Liste les éléments par score |
Type Hash
| Commande | Description |
|---|---|
| HSET | Définit une paire clé/valeur dans un hash |
| HGET | Récupère une valeur dans un hash |
Mécanismes de persistance
Deux méthodes principales sont proposées :
- Snapshot (point de sauvegarde)
- AOF (Appand Only File)
Utilisation avec Java
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
Intégration Spring Boot
@Autowired
private StringRedisTemplate stringRedisTemplate;
Replication Master-Slave
Permet la réplication des données pour redondance.
Mécanisme Sentinel
Automatise la détection de pannes et le basculement vers un esclave.
Cluster Redis
Supporte jusqu'à 16384 slots distribués entre les nœuds.
Gestion des sessions distribuées
Spring Session peut gérer les sessions via Redis.