---
# System prepended metadata

title: Scalabilité

---

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


