L'acronyme CRUD désigne les opérations CREATE (Créer), READ (Lire), UPDATE (Mettre à jour) et DELETE (Supprimer), autrement dit les quatre opérations essentielles pour la création et la gestion des éléments de données persistants, principalement dans les bases de données relationnelles et NoSQL.
Cet article explique comment les opérations CRUD sont utilisées pour le traitement des données. Nous passerons également en revue les problèmes que les administrateurs système et les ingénieurs DevOps peuvent rencontrer lorsqu'ils surveillent une base de données.
Présentation des opérations CRUD
Comme mentionné ci-dessus, les opérations CRUD sont utilisées dans les applications de stockage persistant (c'est-à-dire les applications qui conservent leurs données même après la mise hors tension du système). Elles diffèrent des opérations sur les données conservées dans un espace de stockage volatile, comme la mémoire vive ou les fichiers cache.
Les opérations CRUD sont largement utilisées dans les applications de base de données, notamment les systèmes de gestion de base de données relationnelle (RDBMS) comme Oracle, MySQL et PostgreSQL, ainsi que les bases de données NoSQL telles que MongoDB, Apache Cassandra et AWS DynamoDB.
Des opérations similaires à CRUD peuvent être effectuées sur des structures de données persistantes telles que des fichiers. Par exemple, vous pouvez créer un document Microsoft Word, le mettre à jour, le lire, et même le supprimer à partir de l'Explorateur de fichiers. Toutefois, les fichiers ne sont pas axés sur les enregistrements (ou sur les documents dans le cas de MongoDB et de Couchbase). La terminologie CRUD est spécifiquement liée aux opérations axées sur les enregistrements, et non aux opérations portant sur des fichiers plats.
CREATE
L'opération CREATE ajoute un nouvel enregistrement à une base de données. Dans les systèmes RDBMS, une ligne de table de base de données correspond à un enregistrement, tandis que les colonnes sont appelées des attributs ou des champs. L'opération CREATE ajoute un ou plusieurs nouveaux enregistrements avec des valeurs de champ distinctes dans une table.
Le même principe s'applique aux bases de données NoSQL. Si la base de données NoSQL est axée sur les documents, un nouveau document (par exemple un document au format JSON avec ses attributs) est ajouté à la collection (qui équivaut à une table RDBMS). De même, dans les bases de données NoSQL comme DynamoDB, l'opération CREATE ajoute un élément (l'équivalent d'un enregistrement) à une table.
READ
L'opération READ renvoie des enregistrements (ou des documents ou des éléments) à partir d'une table de base de données (ou d'une collection ou d'un compartiment) en fonction de certains critères de recherche. Elle peut renvoyer tous les enregistrements et une partie ou l'intégralité des champs.
UPDATE
L'opération UPDATE permet de modifier des enregistrements existants dans la base de données, par exemple pour mettre à jour une adresse dans une base de données clients ou un prix dans une base de données produits. Comme READ, l'opération UPDATE peut être appliquée à l'ensemble des enregistrements ou à certains seulement, en fonction des critères définis.
Une opération UPDATE peut apporter des modifications à un ou plusieurs champs de l'enregistrement et rendre ces modifications persistantes. Si plusieurs champs doivent être mis à jour, le système de base de données s'assure qu'ils sont tous mis à jour ou qu'aucun ne l'est. Certains systèmes Big Data n'implémentent pas l'opération UPDATE et n'autorisent qu'une opération CREATE horodatée. Une nouvelle version de la ligne est donc ajoutée à chaque fois.
DELETE
Les opérations DELETE permettent à l'utilisateur de supprimer des enregistrements de la base de données. Une suppression définitive élimine complètement l'enregistrement, tandis qu'une suppression réversible signale l'enregistrement, mais le laisse en place. La distinction est importante, notamment pour le service de paie, qui doit conserver les enregistrements d'emploi même après qu'un collaborateur a quitté l'entreprise.
Comment les opérations CRUD sont-elles exécutées dans une base de données ?
Dans les systèmes RDBMS, les opérations CRUD sont exécutées au moyen de commandes SQL (Structure Query Language).
- L'instruction INSERT est utilisée pour CREATE :
INSERT INTO
- L'instruction SELECT est utilisée pour READ :
SELECT field 1, field 2, …FROM
- L'instruction UPDATE est utilisée pour UPDATE :
UPDATE
- L'instruction DELETE est utilisée pour DELETE :
DELETE FROM
Les opérations CRUD dans les bases de données NoSQL dépendront du langage de la plateforme de base de données concernée. Par exemple, le langage de requête Cassandra (CQL) ressemble beaucoup à SQL. En revanche, dans MongoDB, les opérations sont exécutées au moyen de fonctions intégrées :
- L'opération CREATE est exécutée par la fonction
db.collection.insertOne()
oudb.collection.insertMany()
. La première ajoute un document, tandis que la seconde ajoute de nombreux documents à une collection de base de données. - L'opération READ est exécutée au moyen de la fonction
db.collection.find()
oudb.collection.findOne()
. - L'opération UPDATE est exécutée à l'aide de la fonction
db.collection.updateOne()
,db.collection.updateMany()
oudb.collection.replaceOne()
. - L'opération DELETE est exécutée par le biais de la fonction
db.collection.deleteOne()
oudb.collection.deleteMany()
.
Les développeurs ou administrateurs de bases de données exécutent souvent des instructions CRUD manuellement dans la base de données d'un outil client. Toutefois, dans la plupart des cas d'usage en production, ces instructions sont incorporées dans le code du langage de programmation. Lorsque le programme est en cours d'exécution, l'API pour la base de données cible traduit l'instruction CRUD dans le langage natif de la base de données.
Par exemple, lorsqu'un visiteur d'un site d'e-commerce initie le processus d'inscription, un microservice écrit en Python ou en Java peut lire les valeurs d'entrée (prénom, nom, adresse e-mail, adresse postale, etc.) et créer dynamiquement une commande PL/SQL Oracle. Cette instruction est alors envoyée à la bibliothèque de pilotes Oracle, qui l'exécute dans la base de données.
Exemples d'opérations CRUD
Reprenons l'exemple de la boutique d'e-commerce.
- Lorsque l'internaute crée (CREATE) un enregistrement client, il peut lire (READ) l'inventaire en naviguant dans le catalogue de produits.
- Lorsqu'il passe une commande, le système backend met à jour (UPDATE) l'inventaire temporairement pour refléter le nombre réduit d'articles disponibles.
- Lorsqu'il achète l'article, la mise à jour (UPDATE) devient permanente, et les autres utilisateurs qui lisent (READ) le nombre d'articles disponibles peuvent voir le changement. En parallèle, un autre processus crée (CREATE) un enregistrement dans la base de données de la société de transport, l'avertissant de la demande d'expédition.
- Si l'utilisateur supprime un article de son panier, un enregistrement temporaire ajouté à la table « ventes » est supprimé (DELETE).
Dans une agence de voyage en ligne, un utilisateur peut créer (CREATE) une demande de réservation, lire (READ) les vols disponibles pour l'itinéraire demandé et effectuer un achat. La liste des sièges disponibles pour le vol est alors mise à jour (UPDATE) et plusieurs enregistrements sont créés (CREATE) dans la table « itinéraire ». Si l'utilisateur met fin à la session en cours de route, toutes les lignes associées à cette transaction sont supprimées (DELETE).
Test des opérations CRUD
Les opérations logicielles impliquant des instructions CRUD sont généralement testées en boîte noire. Lorsque les testeurs effectuent certaines opérations, ils vérifient la base de données backend plutôt que d'analyser le code pour voir si les modifications souhaitées ont été effectuées ou si les données adéquates ont été renvoyées. Ces tests ont pour but de valider chaque opération CRUD résultant de diverses interactions d'utilisateur dans différents scénarios.
Opérations CRUD et performances des bases de données
Pour des opérations CRUD optimales, une conception efficace de la base de données est indispensable. Sans cela, les opérations CRUD peuvent nuire aux performances de la base de données.
Par exemple, des opérations telles qu'UPDATE ou DELETE exigent des verrous exclusifs sur les lignes (et les ressources associées, comme les pages ou les index de données). Les verrous garantissent que lorsqu'une ligne supplémentaire est modifiée, elle n'est pas accessible à d'autres processus ou utilisateurs pour une opération CRUD quelconque. Cette approche permet de préserver l'intégrité des données.
Vous ne pouvez pas lire un enregistrement s'il est en cours de suppression, ni autoriser plusieurs utilisateurs à mettre à jour un même enregistrement simultanément. D'autres types de verrous, comme les verrous partagés, autorisent des opérations READ simultanées. Des verrous peuvent être configurés au niveau de la base de données ou de l'instruction, et différents types de verrouillage déterminent les opérations CRUD autorisées et le comportement de l'opération CRUD.
Il va sans dire que le type de verrouillage et le nombre de verrous simultanés dus aux sessions utilisateurs affectent les performances d'une base de données. Par exemple, un site d'e-commerce fréquenté par des centaines ou des milliers d'utilisateurs simultanément comptera de nombreux verrous actifs en même temps. Cela peut entraîner des ralentissements tandis que l'utilisateur attend que les verrous soient débloqués.
Ce problème de performances est la raison pour laquelle les administrateurs de bases de données font tout leur possible pour que les opérations CRUD soient exécutées dans les plus brefs délais. Cela passe par l'ajustement des requêtes en fonction des retours d'informations des solutions de surveillance. Ces solutions de surveillance peuvent afficher les verrous de base de données actifs, des indicateurs et des logs pour aider l'administrateur à identifier les éventuels goulots d'étranglement.
Journalisez toutes vos données et répondez à toutes les questions – gratuitement
Falcon LogScale Community Edition (anciennement Humio) offre une plateforme moderne et gratuite de gestion des logs pour le cloud. Exploitez l'ingestion des données de streaming pour bénéficier d'une visibilité instantanée sur les systèmes distribués, de même que détecter et résoudre les incidents.
Falcon LogScale Community Edition, disponible instantanément et gratuitement, inclut les fonctionnalités suivantes :
- Ingestion de jusqu'à 16 Go de données par jour
- Durée de rétention de 7 jours
- Aucune carte de crédit n'est requise
- Accès continu sans période d'essai
- Journalisation sans index, alertes en temps réel et tableaux de bord en direct
- Accès à notre place de marché et à nos packages, y compris aux guides de création de nouveaux packages
- Formation et collaboration avec une communauté active