SQL vs NoSQL : En quoi sont-ils différents ?

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 !

upidev sql vs nosql couverture

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 ( Sharding ) : Les données sont répartis entre les serveurs de base de données.
  • Réplication de la base de données : Les données sont répliqués ( copiés ) sur chaque serveur de 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

upidev sql vs nosql replication

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

upidev sql vs nosql sharding

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

Laisser un commentaire