Résumé du cours introduction aux BIG DATA
[Link] 5V
Le Big Data fait référence à des ensembles de données si vastes, rapides ou complexes
qu'ils sont difficiles à traiter avec des systèmes de base de données traditionnels. Les
défis incluent l'analyse, la capture, le stockage, la recherche, le partage, le transfert, la
visualisation, la mise à jour et la confidentialité des données. Le concept de Big Data
est souvent décrit en utilisant les cinq V :
1. Volume
Le volume est l'aspect le plus souvent associé au Big Data. Il fait référence à l'immensité
des données accumulées par les organisations. Ces données proviennent de diverses
sources comme les réseaux sociaux, les transactions en ligne, les vidéos, les capteurs,
les enregistrements de surveillance, et bien plus. Les entreprises doivent gérer
efficacement des pétaoctets voire des exaoctets de données. La gestion efficace de
telles quantités de données nécessite des solutions de stockage et de traitement
adaptées, capable de scalabilité et d'optimisation continue.
2. Vélocité
La vélocité désigne la rapidité à laquelle les données sont générées, collectées et
traitées. À l'ère d'Internet et des IoT (Internet des Objets), les données sont créées à
une vitesse sans précédent, nécessitant des technologies capables de traiter ces flux en
temps réel ou quasi temps réel. La capacité à traiter ces données rapidement permet
aux organisations de prendre des décisions éclairées et opportunes. Des exemples
incluent la détection de fraudes en temps réel et la maintenance prédictive.
3. Variété
La variété des données fait référence aux nombreux formats et types de données
disponibles aujourd'hui. Les données peuvent être structurées, comme celles trouvées
dans les bases de données traditionnelles, ou non structurées, comme les textes, les
vidéos, les images, et les enregistrements audio. Gérer cette variété implique des
techniques de normalisation, de catégorisation, et d'étiquetage, ainsi que des
technologies capables de traiter et d'analyser différents types de données de manière
efficace.
4. Véracité
La véracité concerne la fiabilité et la qualité des données. Avec l'augmentation du
volume et de la variété des données, garantir leur précision et leur cohérence devient
un défi. Les données peu fiables peuvent conduire à des conclusions erronées et
affecter la prise de décision. Les entreprises doivent donc mettre en œuvre des
processus de validation et de nettoyage des données, ainsi que des mécanismes de
gouvernance pour assurer l'intégrité des données tout au long de leur cycle de vie.
5. Valeur
La valeur est l'aspect final et le plus important du Big Data. Collecter des données
massives n'est pas bénéfique en soi. La vraie valeur réside dans la capacité à extraire
des insights pertinents et à les transformer en actions concrètes ou en avantages
compétitifs. Les technologies d'analyse de données et de machine learning jouent un
rôle crucial ici, permettant aux entreprises de découvrir des tendances, des patterns et
des corrélations qui ne seraient pas perceptibles autrement.
B. La Scalabilité
La scalabilité est un concept crucial dans le domaine de l'informatique et en particulier
dans les systèmes distribués utilisés pour le Big Data. C'est la capacité d'un système à
s'adapter efficacement à un volume accru de travail en augmentant ses ressources. Elle
peut se décliner en deux principales méthodes : la scalabilité verticale et la scalabilité
horizontale.
1. Scalabilité Verticale (Scaling Up)
La scalabilité verticale, également connue sous le nom de "scaling up", se réfère à
l'amélioration des capacités d'un seul système, sans ajout de matériel supplémentaire
en termes de nouvelles machines. Cela implique généralement d'augmenter les
ressources physiques comme la RAM, les processeurs, ou l'espace disque d'une
machine existante pour gérer une charge de travail plus importante. Ce type de scaling
a des avantages en termes de simplicité, car il ne nécessite pas de changements
significatifs dans l'architecture logicielle ou de gestion de la complexité des données
entre multiples systèmes.
Cependant, la scalabilité verticale a des limites inhérentes:
• Limitations physiques: Il existe une limite jusqu'à laquelle les composants
peuvent être mis à niveau sur une seule machine.
• Coût: Au-delà d'un certain point, le coût de la mise à niveau de hardware peut
devenir prohibitif.
• Temps d'arrêt: Les mises à niveau peuvent nécessiter du temps d'arrêt pour
l'installation de nouveau matériel.
2. Scalabilité Horizontale (Scaling Out)
La scalabilité horizontale, ou "scaling out", implique l'ajout de plusieurs serveurs ou
noeuds supplémentaires au système existant pour distribuer la charge de travail.
Contrairement au scaling up, cette approche répartit les processus et les données à
travers plusieurs machines, ce qui peut augmenter la résilience et la flexibilité du
système. Les systèmes conçus pour scaler horizontalement peuvent généralement
gérer une montée en charge beaucoup plus importante et de manière plus dynamique.
Les avantages de la scalabilité horizontale comprennent:
• Résilience améliorée: En distribuant les ressources, les systèmes deviennent
moins susceptibles de rencontrer un point de défaillance unique.
• Flexibilité: Il est possible d'ajouter ou de retirer des ressources selon les besoins
sans interrompre le fonctionnement global.
• Coût-efficacité: Le coût des machines individuelles de moindre puissance peut
être inférieur à celui d'une seule machine plus puissante.
Cependant, le scaling out implique aussi des défis:
• Complexité de gestion: Coordonner les données et les processus à travers de
nombreux noeuds peut devenir complexe.
• Consistance des données: Maintenir la cohérence des données à travers les
noeuds nécessite des mécanismes avancés de gestion des données.
3. Systèmes Distribués et Scalabilité
Les systèmes distribués sont particulièrement adaptés à la scalabilité horizontale. Dans
un environnement Big Data, où les quantités de données et les exigences de traitement
peuvent évoluer rapidement, la capacité à augmenter la capacité de traitement de
manière distribuée est essentielle. Des technologies telles que les bases de données
NoSQL, Hadoop et d'autres systèmes de gestion de données distribuées sont conçues
spécifiquement avec la scalabilité en tête, permettant aux entreprises de gérer
efficacement des volumes de données massifs tout en maintenant des performances
acceptables.
C. Haute Disponibilité et Tolérance aux Pannes
La haute disponibilité et la tolérance aux pannes sont des concepts essentiels dans la
conception de systèmes distribués, en particulier lorsqu'il s'agit d'infrastructures
critiques et de services nécessitant un accès continu. Ces concepts visent à assurer un
fonctionnement ininterrompu et fiable des systèmes, même en présence de
défaillances matérielles ou logicielles.
1. Haute Disponibilité
La haute disponibilité fait référence à la capacité d'un système à maintenir ses
fonctionnalités opérationnelles malgré les défaillances. L'objectif est de rendre le
système toujours disponible, sans temps d'arrêt perceptible pour les utilisateurs, même
pendant les maintenances ou en cas de panne d'une partie du système. Cela se réalise
typiquement à travers la redondance des composants, la distribution des charges et
une reprise rapide après sinistre.
Les indicateurs de performance clés pour la haute disponibilité incluent le pourcentage
de temps opérationnel et la rapidité de reprise d'activité. Les systèmes sont souvent
évalués sur la base de leur « temps de disponibilité », mesuré en neuf (par exemple,
"trois neuf" équivaut à 99,9 % de disponibilité).
2. Tolérance aux Pannes
La tolérance aux pannes est la capacité d'un système à fonctionner de manière continue
et correcte même en cas de défaillance de certaines de ses composantes. Cela implique
généralement l'isolation des erreurs et la capacité du système à se rétablir de faillites
sans intervention externe. Des mécanismes comme le clustering, la répartition de
charge, et les procédures de failover automatiques sont souvent utilisés pour garantir
la continuité des opérations.
3. Stratégies de Réplication
Les stratégies de réplication sont cruciales pour atteindre la haute disponibilité et la
tolérance aux pannes. Les deux approches les plus courantes sont:
1. Actif-Actif
o Dans un modèle actif-actif, chaque copie de données est active et
capable de traiter les requêtes. Les systèmes en mode actif-actif sont
généralement synchronisés en temps réel ou presque en temps réel.
o L'avantage de ce modèle est qu'il maximise les ressources en les utilisant
toutes activement, ce qui peut également aider à équilibrer la charge
entre les différents sites ou nœuds.
o Cependant, cela peut introduire de la complexité en matière de gestion
des données et nécessiter des mécanismes sophistiqués pour gérer la
cohérence des données et résoudre les conflits.
2. Actif-Passif
o Dans un système actif-passif, un seul ensemble de ressources est actif et
traite les requêtes tandis que l'autre reste en mode veille. En cas de
défaillance de l'ensemble actif, le système bascule (failover) vers
l'ensemble passif.
o Cette méthode est souvent préférée pour sa simplicité relative et la
facilité de gestion de la cohérence des données, car seul un système à la
fois est actif.
o Cependant, le principal inconvénient est que les ressources de secours
sont inutilisées tant qu'il n'y a pas de basculement, ce qui peut être
considéré comme une allocation inefficace des ressources.
D. Flexibilité et Schémas de Données
La flexibilité des schémas de données est une caractéristique clé qui distingue les bases
de données NoSQL des systèmes de bases de données relationnelles traditionnels.
Cette flexibilité permet aux bases de données NoSQL de s'adapter plus facilement à
divers formats de données et à des exigences changeantes, ce qui les rend
particulièrement utiles dans les environnements de Big Data et les applications
nécessitant de grandes quantités de données non structurées.
1. Flexibilité des Bases de Données NoSQL
Les bases de données NoSQL, telles que MongoDB, Cassandra ou Couchbase, utilisent
généralement un modèle de "schema on read". Cela signifie que la structure des
données n'est pas définie strictement au moment de l'écriture des données mais au
moment de leur lecture. Ainsi, différentes "documents" ou "objets" dans une même
collection peuvent avoir des structures différentes. Cette approche offre plusieurs
avantages :
• Adaptabilité : Les applications peuvent évoluer sans nécessiter de
modifications majeures de la base de données chaque fois que les types de
données ou les exigences des applications changent.
• Agilité de développement : Les développeurs peuvent itérer rapidement des
modèles de données sans passer par des étapes complexes de migration de
schéma.
• Stockage optimisé pour les données non structurées : Idéal pour des
données comme des textes, des médias sociaux, des images, etc., où le format
peut varier considérablement.
2. Rigidité des Bases de Données Relationnelles
Les bases de données relationnelles, telles que MySQL, PostgreSQL ou Oracle, utilisent
un modèle de "schema on write". La structure des tables, y compris les colonnes et les
types de données, doit être définie à l'avance avant d'insérer des données. Bien que
cela offre des avantages en termes d'intégrité et de normalisation des données, cela
peut aussi présenter des inconvénients :
• Moins de flexibilité : Tout changement dans la structure des données nécessite
des modifications de schéma qui peuvent être lourdes et risquées à mettre en
œuvre, particulièrement dans les grandes bases de données.
• Problème des données creuses : Les bases de données relationnelles ne gèrent
pas efficacement les "données creuses" (sparse data), où de nombreux champs
peuvent rester vides pour certaines entrées, menant à une utilisation inefficace
de l'espace de stockage et des performances réduites.
• Maintenance et évolutivité : Les modifications de schéma peuvent nécessiter
des temps d'arrêt et compliquer l'évolutivité de l'application.
E. SQL vs NoSQL:
1. SQL (Structured Query Language)
Les bases de données SQL, ou relationnelles, utilisent des schémas fixes et des tables
structurées pour organiser les données. Elles sont particulièrement efficaces pour les
applications nécessitant de garantir l'intégrité des données à travers des transactions.
Les principes ACID qui les gouvernent sont essentiels pour de nombreux systèmes
critiques :
• Atomicité : Chaque transaction est traitée comme une unité indivisible, qui
réussit ou échoue dans son ensemble.
• Cohérence : Chaque transaction doit laisser la base de données dans un état
cohérent, sans enfreindre les règles ou les contraintes de la base de données.
• Isolation : Les transactions sont exécutées de manière isolée les unes des autres,
évitant ainsi les conflits entre transactions concurrentes.
• Durabilité : Une fois qu'une transaction est validée, les modifications qu'elle
apporte sont permanentes, même en cas de panne du système.
Ces caractéristiques rendent les bases de données SQL idéales pour des applications
qui nécessitent des transactions fiables et précises, comme les systèmes financiers, les
systèmes de gestion des stocks, et d'autres applications d'entreprise.
2. NoSQL (Not Only SQL)
À l'opposé, les bases de données NoSQL sont conçues pour offrir une flexibilité de
schéma accrue, supportant ainsi des données non structurées ou semi-structurées
comme les documents JSON, les graphes, ou les paires clé-valeur. Les propriétés BASE
illustrent les principes fondamentaux de NoSQL :
• Basically Available : Le système garantit la disponibilité en termes d'accès aux
données, même en présence de pannes partielles.
• Soft State : L'état du système peut changer avec le temps, même sans entrée
externe, en raison de la consistance éventuelle.