SQL = Not only SQL
* **V**olume = beaucoup de données
* **V**élocité = grand débit afin de traiter rapidement les informations
* **V**ariété = données hétérogène
---
* Permet de stocker ET d'interroger les données de manière différente
* Viens des big data 2000
* utilise des clusters matériels et des serveurs cloud
* Permet le traitement de données non structuré ou inconnue
# Scalabilité
## Dimensionnement vertical
* Ajouter des ressources à un unique serveur comme :
* + de cpu
* + de RAM
* + HDD
* Cout exponentiel
## Dimensionnement horizontal
* Nouveau serveur qui fait le mêmegenre de t'ache
* chère car serveur standard
* commodity hardware
# Différente famille
## Clées valeur
* Comme une table de hachage réseau
* la clé est l'identifiant de la données
* Valeur peut contenir tout type de donnéés
* Pas de language structuré
* L'app doit connaitre la clé pour manipuler la valeur
* Efficacité : Facilement distribuer et retrouver les données
* Simplicité : Facile à mettr en oeuvre, Architecture simple
> CRUD : Create(key,value), READ(Key), UPDATE(Key,Value), DELETE(Key)
> REDIS - AMAZON DYNAMO - RIAK
## Colonnes
* focalisation sur des attributs en fragmentant la table de base en colonnes
* Peut être sur plusieur serveur
* Permet de focaliser les requêtes sur une ou plusieur colones sans avoir à traiter les informations inutiles
* Permet de nombreuses transactions rapidement, permet entre autre d'analyser de frand volumes de données
* Plus vite car moin d'accès au disque dur
* Pour analyser un ensemble de données, il suffits de charger un bloc
* Haute possibilité de compression = toujours du même type
* Moin aproprier pour la lecture de données spécifique
> CASSANDRA - MARIA DB - ELASTICSEARCH
> UTILISATION : Data-mining, jounralisation, comptage, Netflix
## Document
* Document store
* Semi-structuré : Pas de structure fixe mais la strucuture est à l'interieur
* Principe de clés-valeur- taille de champ divers
* Tags attribué au document pour ainsi utilisé directement le document avec la DB
* Formaté en : XML,JSON,YAML
* Avec la clé on vas chercher le document puis, vérifier qu'il n'est pas vide et retourné le document rechercher
* Très fléxible - on peut intégré plusieur type de document dans la même base de données
* Language d'interrogation riche, permet de faire des manipulations complèxe
* Adapté au grand volumes de données
* Meilleurs perf pour les requêtes sur le même document
> MONGO DB- COUCHBASE - ELASTICSEARCH
> Framework stockant des objets, gestion des historiques d'utilisateur, utilisés pour l'echange rapide de données entre application
## Graphes
* Exploite la correlation entre les données
* La modélisation se fait sous fome de graphes
* les données stockées sont :
* Noeuds : Entité ou objet de données désigné et identificable de manière unique
* Liens(Edges) : realtions des objets entre eux
* Propriété : des noeuds et des liens
* Les relations entre les données sont stockes directement, donc pas charger durant la requête
* vitesse de performance élever meme pour les requête complexes
* Vitesse de requête dpend du nombre de reltions concrètes et non de la quantité des données
* Peu de scalabilité fait pour un serveur unique
> NEO4J - ORIENTDB - FLOCKDB
> Réseaux sociaux, magasin en ligne
> Gestion de la chaîne de logistique
> Analyse des risques, détéczion es fraudes et la recherche de pannes
> UBER, TWINT,FACEBOOK,TWITTER
## Mémoire
* la différence n'est pas en fonction du modéle de données mais de son fonctionnement
* Stocke les données dans une mémoire vive RAM
* Lecture plus rapide parce que dans la RAM
* Plus cher car sur la ram et la taille dépend de la ram dispo
* Permet la gestion de transaction à grande vitesse et analyse en temps réel
* utilie pour les app dont la persistance des donées n'est pas la priorité principale
> REDIS - MEMCACHED - ORACLE TIMESTEN
> Système de traitement des transaction en ligne
> Plateformes d'enchères
> Jeux en temps réel
> Transaction financière
> Trading, vente en ligne, AIRBUS AIRBNB, DROPBOX
# SGBDR
* ACID = Atomicité, Cohérence, Isolation, Durabilité
* Charge tout sur la RAM au démarrage
* Rollforward = journaux de transaction dans une mémoire non-volatile
* NVRAM
* Atomicité : une transaction est une unité logique de travail qui doit être completée avec toute ses modifications de données
* Cohérence : Homogéneité des données après chaque modification
* Isolation : Les modification doivent être indépendantes des autres
* Durabilité : Lorssruqe c'est valider, l'étt de base est permanent.
BDD = base de données distribuée
Distribution => replication => synchronisation
## Avantages
* Fiabilité (tolérence au panne) : Si certaine macine sont en panne les autre ne sont pas affectés par ce problème ci
* Évolubilité : Dimensionnement horizontal, scalabilité
* Vitesse : Augmentation de la puissance de calcul
* Performance : Meilleur rapport qualité prix/performance qu'un système centralisé
## Inconvénients
* Dépannage et diagnostic des problèmes
* L'infrastructure réseau, transmission, surcharge, perte de messages
* Sécurité : Risque accrue comparé au système centralisé
## CAP
Ce théorème ne peut pas garantis simultanément :
* La cohérence : tout les replicats correspondants sont cohérent entre eux
* Disponibilité :
* Distribution : Adapté à la distribution et continue de fonctionne individuellement
### CA
* Cluster à site unique donc tous les noeuds sont toujours en conctact
### CP
* Certaine donnée peuvent ne pas être accessible, mais le reste est toujours cohérent/précis
### AP
* Toujours dispo mais pas toute les données renvoyer