Définition SQL
Représentation des données en tables, colonnes et lignes
Relations entre colonnes avec des clés primaires et étrangères
Les données peuvent être lues avec leurs relations
Un ensemble d’opérations liées est exécuté dans une transaction
Très pratique pour gérer des données liées mais contraignante
Différence SQL noSql
Relationnel : contraint mais cohérent
NoSQL : flexible mais incohérent
Cohérence
Cohérence (consistency)
Les données doivent toujours être cohérentes, par exemple à un même
instant, l’utilisateur A ne peut pas lire une donnée que l’utilisateur B vient
de supprimer
❖ Relationnel (+) : les relation entre les tables et les transactions
permettent d’assurer la cohérence des données
❖ MongoDB (+) : en cas de crise (une partie du SGDB indisponible),
MongoDB préfère conserver des données
Montée en charge scalabiliy
Afin d’augmenter la puissance du SGBD, on peut créer de nouvelles
instances de la base (nouveau noeud, nouvelle machine)
❖ Relationnel (-) : ce type de SGBD n’est pas distribué, il n’est pas
possible de créer plusieurs instances à cause des transactions et
des relations fortes entre colonnes
❖ MongoDB (+) : comme il n’y a pas de relation entre les collections, il
est très simple de créer plusieurs instances d’une même BDD
Disponibility
Disponibilité (availability)
Tous les noeuds du SGBD doivent répondre dans un délai raisonnable pour
valider une écriture ou une lecture en base de données
❖ Relationnel (+) : n’étant pas distribués, ces SGDB garantissent
forcément une disponibilité parfaite
❖ MongoDB (-) : en cas de crise (une partie du SGDB indisponible),
MongoDB préfère conserver des données cohérente plutôt que de
continuer à autoriser les écritures
ACID ?
ACID (SQL)
Atomicity : soit un ensemble d’opérations réussit, soit le tout échoue
Consistent : le résultat d’une opération respecte les contraintes du schéma
(clés primaire, étrangères, unicité, etc)
Isolated : toutes les transactions sont exécutées indépendamment
Durable : le résultat d’une transaction est permanent, même en cas de
dysfonctionnement
Approche très contraignante mais garantissant une cohérence des données
dès l’écriture (et donc, à la lecture)
Transaction ?
f
BASE ?
BASE (NoSQL)
Basic Availability : SGBD disponible la plupart du temps
Soft-state : incohérences de données tolérées (à l’écriture et à la réplication)
Eventual Consistency : la cohérence des données est assurée, mais plus tard
Approche très flexible, moins contraignante, la cohérence des données est
garantie dans le futur (à la lecture !)
Partitionnement ?
Partitionnement (NoSQL)
Il est commun dans les SGBD NoSQL de partitionner les données pour
gagner en performances
Ainsi selon les critères à définir, les données ne
seront pas gérées par la même instance du serveur (~ machine)
❖ Répartir la charge de travail
❖ Améliorer les performances en lecture et écriture