1
BASE DE DONNÉES
NoSQL
2
NoSQL
• Fournit un modèle de base de données différent du
modèle relationnel ou objet
• NoSQL veut dire « Not Only SQL »
• Les modèles pour les bases de données NoSQL datent
des années 1960
• Regain de popularité vers la fin des années 2000
3
NoSQL
• Principalement utilisé sur des clusters de serveurs
• Permet un modèle qui peut s’étendre plus facilement
(scalability)
• Assouplit les contraintes habituellement présentes sur les
bases de données relationnelles
• Permet de gérer rapidement des tonnes de données
4
NoSQL
• Les entreprises du WEB 2.0 avaient besoin de solutions
technologiques plus adaptées à leurs besoins
• Développement des systèmes NoSQL propriétaires
• Facebook → Cassandra, Hbase
• Google → BigTable
• LinkedIn → Projet Voldemort
• Amazon → DynamoDB, SimpleDB
• Twitter → Cassandra
5
Théorème CAP
• Énoncé par Eric Brewer en 1999
• Indique qu’il est impossible, pour un système distribué, de
garantir en même temps les trois contraintes suivantes
• Cohérence : Tous les nœuds du système voient les mêmes
données au même moment
• Disponibilité : Toutes les requêtes reçoivent une réponse
• Tolérance au partitionnement : Aucune panne ne doit empêcher
le système de répondre correctement (sauf une coupure complète
du réseau)
• Il est possible de garantir 2, mais pas 3 contraintes
6
Théorème CAP
• Habituellement, un système de gestion de base de
données garantit la cohérence et la disponibilité
• Il existe par contre un temps incompressible entre la mise
à jour d’un nœud et sa synchronisation avec les autres
• Ce temps peut avoir un grand impact sur un système très
chargé
7
Théorème CAP
• Les bases de données NoSQL tendent à privilégier la
disponibilité et la tolérance au partitionnement
• Il peut être préférable que deux personnes faisant la
même recherche sur Google obtiennent des résultats
différents que pas de réponses du tout
• Facebook, Twitter, etc. utilisent le même principe
8
Théorème CAP
• Les bases de données NoSQL sont pratiques dans
certaines situations
• Requiert une bonne tolérance au partitionnement
• Requiert une disponibilité à toute épreuve
• Gère un énorme trafic simultané sur un système distribué
• Les bases de données relationnelles peuvent aussi
répondre à ces critères
• Souvent plus difficiles à mettre en place par contre
9
NoSQL - Types
• Il existe différents types de bases de données NoSQL
• Colonne
• Clé/Valeur
• Document
• Graphe
• Etc.
• Les types Document et Graphe sont basés sur le type
Clé/Valeur
10
NoSQL - Colonne
• Les données sont sauvegardées dans des colonnes
• L’inverse des BD relationnelles où les données sont par rangées
• Offre une très grande vitesse
• Très efficace lorsque les données des colonnes se
ressemblent
• Adapté à l’interrogation de données
• Peu efficace pour la mise à jour des données
11
NoSQL – Clé/Valeur
• Chaque entrée de la base de données est représentée
par une clé et une valeur quelconque
• La valeur est une donnée non structurée
• Permet de sauvegarder une très grande quantité de
données facilement
• La recherche dans les valeurs n’est pas évidente
• Les données n’ont aucune structure
12
NoSQL – Document
• Spécialisation du concept de clé/valeur
• La valeur est un document
• Forme structurée d’une valeur
• Les documents n’ont pas à être tous pareils
• Permet une recherche plus efficace dans les données
• Les documents ont habituellement un format particulier
• XML, JSON, BSON, etc.
13
NoSQL – Graphe
• Basé sur la théorie des graphes
• Pratique lorsque les relations entre les données peuvent
être représentées sous forme de graphes
• Plus complexe à utiliser
• Les requêtes et les mises à jour de grandes quantités de
données peuvent être très lentes
14
NoSQL – Comparaison
Modèle Performance Évolutivité Flexibilité Complexité Fonctionnalité
Variable
Clé/Valeur Élevée Élevée Élevée Aucune
(Aucune)
Colonne Élevée Élevée Modérée Faible Minimale
Variable
Document Élevée Variable Élevée Faible
(Faible)
Théorie des
Graphe Variable Variable Élevée Grande
graphes
15
Paradigme ACID - BASE
• L’acronyme ACID veut dire
• Atomique (Atomicity)
• Consistent (Consistency)
• Isolation (Isolation)
• Durable (Durability)
• L’acronyme BASE veut dire
• Basically Available, Soft state, Eventual consistency
• Les bases de données relationnelles et orientées objet
respectent les principes ACID, les bases de données
NoSQL respectent les principes BASE
16
Paradigme ACID - BASE
• Atomique (Atomicity)
• Chaque transaction est effectuée en entier ou pas du tout
• Consistent (Consistency)
• Toutes les données écrites respectent les contraintes d’intégrités
• L’état de la base de données est toujours valide
• Isolation (Isolation)
• Une exécution en parallèle des transactions donne le même
résultat qu’une exécution en série
• Durable (Durability)
• Une fois les données écrites, elles restent écrites
17
Paradigme ACID - BASE
• Les principes ACID impliquent qu’une base de données
répartie sur plusieurs serveurs doit retourner les mêmes
valeurs pour une même requête
• C’est problématique dans certaines situations
• Certains logiciels peuvent fonctionner même si les
résultats ne sont pas les mêmes
• Est-ce grave si votre page Facebook n’affiche pas exactement tout
ce que vos amis viennent de publier, tant qu’éventuellement, vous
êtes capable de voir ces publications?
18
Paradigme ACID - BASE
• Les systèmes NoSQL fonctionnent sur ce principe
• Les données et l’état de la base de données seront
éventuellement cohérents et consistants
• L’important est que l’accès soit toujours permis
• Ne s’appliquent pas à tous les problèmes
• Un système de transaction en ligne ne peut se permettre cette
relaxation des contraintes!
19
Paradigme ACID - BASE
• Si la cohérence des données est primordiale, les
systèmes NoSQL ne sont probablement pas les plus
intéressants
• Quoi faire lorsqu’on a besoin d’un système distribué
• Pour répondre à un fort achalandage
• Qui garantit la cohérence des données
• Qui garantit les propriétés ACID?
20
Base de données NewSQL
• Un nouveau type de base de données relationnelle
• Cherche à fournir la même puissance évolutive que les
bases de données NoSQL, mais en garantissant les
propriétés ACID standards
• Pourra peut-être réconcilier SQL et NoSQL?