DORA Metrics
Le Soft Delete (ou suppression logique) est une technique de gestion des données permettant de marquer un enregistrement comme « supprimé » sans l’effacer physiquement de la base de données. Idéal pour la récupération de données et l’audit, il est largement utilisé dans les applications critiques.
🧩 Soft Delete : Définition et Principe
-
Définition : Ajout d’un indicateur (ex :
is_deleted
,deleted_at
) pour masquer les données sans les supprimer. -
Principe :
-
Marquage : Une colonne (booléenne ou timestamp) signale si l’entrée est supprimée.
-
Masquage : Les requêtes excluent automatiquement les données marquées.
-
Récupération : Les données restent accessibles pour restauration ou audit.
-
Exemple : Un utilisateur « supprimé » conserve son historique de commandes en base.
🚀 5 Avantages du Soft Delete
Avantage | Impact |
---|---|
Récupération facile | Annulez une suppression accidentelle en un clic. |
Audit et conformité | Tracez qui a supprimé quoi et quand (RGPD). |
Intégrité des relations | Évitez les erreurs de clés étrangères (ex : commandes liées à un utilisateur). |
Performances | Évitez les opérations coûteuses de DELETE en masse. |
Historique complet | Conservez les données pour analyse ou reporting. |
🛠️ Implémentation Technique du Soft Delete
1. Modification du Schéma de Base de Données
-
Ajoutez une colonne
deleted_at
(timestamp) ouis_deleted
(booléen).
2. Adaptation des Requêtes
-
Filtrez les données supprimées dans vos requêtes :
3. Gestion via ORM (Exemple avec Sequelize)
🔍 Soft Delete vs Hard Delete : Comparatif
Critère | Soft Delete | Hard Delete |
---|---|---|
Données conservées | Oui | Non |
Récupération possible | Oui | Non (sans backup) |
Impact sur les performances | Faible (requêtes filtrées) | Élevé (réorganisation de la base) |
Cas d’usage | Données sensibles, audit | Données temporaires, conformité légale |
💡 Bonnes Pratiques
-
Indexez la colonne
deleted_at
pour optimiser les performances des requêtes. -
Purgez régulièrement : Supprimez physiquement les données obsolètes (après 1 an).
-
Utilisez des outils :
-
ORM : Prise en charge native (Laravel Eloquent, Django
SafeDelete
). -
Middleware : Automatisez le filtrage des données supprimées.
-
📢 FAQ
Q : Le Soft Delete ralentit-il les requêtes ?
→ Non, si la colonne deleted_at
est indexée et que les requêtes sont bien optimisées.
Q : Comment gérer les contraintes d’unicité avec le Soft Delete ?
→ Ajoutez deleted_at
dans vos contraintes UNIQUE (ex : UNIQUE (email, deleted_at)
).