Ch5: NoSQL
NotOnlySQL (2010) : Regroupe toutes les BDD non relationnelles qui n'utilisent pas uniquement SQL
comme moyen d'accès. --> ne remplace pas le relationnel ms c'est une alternative, un complément qui
peut etre plus intéressant dans certains contextes.
* Arrivé des géants du web
* Nécessité de gérer des grandes masses de données distribuées dans plusieurs Data centers
* Objets complexes et hétérogènes.
Nouvelles approches pour gérer les données et les stocker :
1/ s'adapter au changement de l'éhelle --> Scalabilité
horizontale : nbr data centers
verticale : les données augmentent en volume.
2/ On peut ajouter des attributs meme si on l'avait définit déja --> Pas de modélisation préalable fixe
( juste un modèle conceptuel)
3/Ne présente plus les limotes du SGBD relationnel.
SGBD relationnels sont transactionnels et vérifient les contraintes ACID ( Atomicity, Consistency,
isolation,Durability) qui est couteux et difficile à maintenir dans le contexte distribué des données.
Et ont un système d'intégrété : veut dire que les tanbles contiennent des attributs pour définir d'autres
tables pour faire la jointure --> couteux
NOSQL s'adapte plus ou on a plus de lecture que de mise à jour car il focuse sur la tolérance et les
performances de lecture.
Un SGBD NoSQL n'est pas structuré en table et le langage de requètes n'est pas forcément SQL , they
depend on the type of the BDD.
Données sont dénormalisées et agrégées --> non structuré ( une seule entité unique)
Avantages de NOSQL:
1/ Adaptation au Big Data (Vitesse, Variérty, Volume, Complexité
2/ Capacité transactionnelles modernes : Nv principe de transactionnaliré avec les propriétes BASE.
3/ Disponibilité continue de données: Si un noeud tombe en panne le système n'arrete pas de
fonctionner ( redondance de données )
4/ Indépendance de l'emplacement : modifier sans etre besoin de savoir ou sont les données .
5/ Modèle de données flexible : il y a pas un schéma unique à respecter
6/ BI et analyse : extraire une masse d'informations décisionnelles.
ACID:
Atomicity : toutes les instructions exécutées ou aucune
Consistency : une transaction amène la BD d'un état valide à un autre
Isolation : Meme si plsr transactions peuvent se passer simultanément, une ne doit pas voir les efftes
emis par les autres
Durability : une fois une transaction est faite, ses modifications sont persistantes.
Théorème CAP: Consistency,Availability,Partition tolerance " il est impossible de satisfaire les 3
propriétes CAP en mm temps "
Consistency : tous les noeuds du système voit les meme données au meme moment.
Availability: La perte d'un noeud n'empeche pas les survivants de continuer à fonctionner, et les données
restent accessibles
Partition tolerance : Les osus systèmes ne dépond pas de leurs liasons avec les autres pour fonctionner
( chacun travaille en autonome )
SGBDR assure AC
NOSQL : Assure AP , PC
Propriétés BASE: Plus flexible
Basically Available: Availability in CAP
Soft-State: Etat du système peut changer dans le temps mm sans entrée --> Consistency
Eventual consistency : Les modifications arrivent éventuellement à tous les serveurs, si on leurs donne
suffisament de temps.
Typologie des BDD NoSQL:
1/ Type " clé-valeur ": Voldemort
chaque objet a une clé unique pour le requéter et un valeur ( un bloc de données)
TLa BDD est une table de hashage distribué avec les opérations : create , delete , update, read .
+) Simple , scalable , disponiblité
-) interrogation seulement sur clé , pas de données complexes ...
2/ Type Colonne - based: Cassandra
Données stockées par colonne et non pas par ligne
Comme le relationnel mais en transposé et le nbr de colonnes dynamiques et chacune à sa structure
( pas de valeur NULL)
Colonne : structure de base représente un champ de données définie par uene clé-valeur
regroupées par ligne dont chacune à un id.
colonnes peuvent etre statiques ou bien dynamiques .
3/ Type Orientée Document : MongoDB
clé valeur avec une valeur sous forme d'un Document de données semi-structurées en format Json ou
XML.
une valeur contient une liste de champs ou d'autres couples clé-valeurs.
Donne la capacité de faire des requetes sur le contenu des valeurs .
+) simple et puissant , bonne mise à l'échelle
-) inadapté pour les données interconnectées , modèles de requetes limitées aux clés et indexes
4/ Type Orientée graphe: Neo4j
bases sur la théorie des graphes avec des noeuds, de relaitions (arcs) et de propriétés.
+) puissant, rapide dans les données liées.
-) Fragmentation
MongoDB: Base de données NOSQL orientée document open source. (Json)
Json : format de représentation logique de données independament des longages qui l'utilisent.
Schema-less : on peut pas modéliser une collection pas un schema logique .
génère une clé pour chaque collection .
architecture cliet - serveur avec le client dans le mongo shell
pour créer une collection on fait directement accés à la base de données:
use db1
[Link]({document en format json})
show dbs : show all databases
show collections :
[Link]() : voir le contenu de col1
mongo db associe un id à tout doc cré.
[Link](Docjson,DocJson2)
Docjson1 : restriction
Docjson2 : projection