L’utilisation de SQL et NoSQL est devenu courante voir indispensable pour un développeur. Cependant, connaissez-vous vraiment ce qui les différencient ? sql vs nosql, let’s get started !
Récapitulatif
SQL | NoSQL | |
---|---|---|
Structure : | Table | Collection |
Colonne | Clé | |
Enregistrement/Ligne | Document/Objet | |
Type : | Relationelle | Non relationelle |
Enregistrement lié | Clé étrangère minimise la redondance de données | Techniques de standardisation pour autoriser une clé à référencer une ligne dans un document lié |
Facilite la mise à jour d’enregistrements liés | Devient couteux en performance lors de mise à jour sur des documents avec beaucoup d’enregistrement liés | |
Intégrité des données | Une clé étrangère peut seulement lier son enregistrement à un enregistrement existant | Non géré |
Architecture | Rigide : les colonnes d’une table doivent être définis avant l’insertion de données | Souple : les colonnes d’un document peuvent être définis à la volée durant l’insertion de données |
Jointure | La clause JOIN permet lors d’une selection d’associer plusieurs données issues de tables liées | Non géré |
Transaction | permet d’effectuer plusieurs requêtes de données à la suite | Non géré |
Elargissement de la base de données |
|
Partitionnement des données |
Explications détaillées
Enregistrements liés
En SQL ( Avec MySQL ) :
CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB;
En NoSQL ( Avec MongoDB ) :
{ title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher: { name: "O'Reilly Media", founded: 1980, location: "CA" } }
Transaction
Une transaction permet d’effectuer plusieurs requêtes à la suite en SQL.
START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;
Elargissement de la base de données
Stockage par réplication
Les + :
- Disponibilité : Si l’un des serveurs de base de données devient inutilisable, un second prends le relai
- Amélioration du parallélisme : Permet d’effectuer une même requête de manière parallèle -> Augmente la vitesse d’exécution d’une requête en lecture
Les – :
- Coûteux en performance : Quand un enregistrement est mis à jour, il doit être mis à jour dans toutes les bases de données répliqués
- Coûteux en mémoire: Stocker les mêmes données à différents endroits requiert plus d’espace disque
Stockage par partitionnement
Les + :
- Partage de processeur : Afin d’améliorer les performances, les processeurs peuvent être cumulés.
- Partage d’espace disque : Plutôt que d’ajouter de l’espace disque au serveur de base de données, on le lie à un autre serveur ( noeud ) qui partage son espace disque
Les – :
- Disponibilité : si l’un des noeuds devient inutilisable, une partie des données sera non disponible
0