6.9 KiB
Introduction au "Big Data"
William Petit - S.C.O.P. Cadoles
Vocabulaire
Qu'est ce qu'une "donnée" ?
Une donnée est une description élémentaire d’une réalité. C’est par exemple une observation ou une mesure. [...]
Elle est dépourvue de tout raisonnement, supposition, constatation, probabilité.
-- Wikipédia
Exemples
- Température = 25°C
- Total de personnes dans la salle = 10
Qu'est ce qu'une "information" ?
Une information est une interprétation contextualisée d'une donnée ou d'un ensemble de données. Elle est porteuse de "sens".
Exemple
- Température = 25°C -> Il fait chaud
- Total de personnes dans la salle = 10 -> C'est un petit groupe
Contexte et définitions
Historique
- Première mention du terme en 1997
- Issue des réflexions liées à l'explosion de la génération et l'usage des données
- Une définition aux contours flous
3 caractéristiques de la problématique
Volume
Vitesse
La fréquence de génération de données ne cesse d'augmenter. Être en capacité de traiter ce flux constant de données en temps réel est un défi.
Exemple
Sur Twitter, environ 500 millions de messages sont envoyés par jour sur la plateforme. C'est environ 6000 messages/seconde. Source
Sur Snapchat, sur le 3eme trimestre de 2017, les utilisateurs s'envoyaient jusqu'à 3.5 milliards de 'snap' par jour. Source
Variété
L'avancée de la technologie aidant, les types des données généréess aujourd'hui sont multiples: texte, image, vidéo, son mais aussi modèle 3D, transactions de cryptomonnaies...
Toutes ces données prennent des formes extrêmement diverses.
Aperçu technique des solutions
Stockage des données
Présentation d'Apache Hadoop et HDFS
Traitement des données
Le modèle "MapReduce"
- Inventé par Google
- Inspiré des méthodes
map()
etreduce()
que l'on retrouve classiquement dans les langages dits "fonctionnels". - Modèle qui permet de paralléliser massivement le traitement de données.
- Très adapté aux opérations de filtrage/aggrégation.
Découpage du traitement
Bases de données "NoSQL"
Base de donnée orientée clé/valeur
Mode de stockage représentant le corpus de données sous la forme d'un ou plusieurs tableaux associatifs.
Chaque clé (unique au sein d'une même collection) est associée à une valeur, qui peut être de différents types suivant le moteur utilisé.
- Usage Stockage temporaire (cache), index, séries chronologiques, base de données embarquées...
- Exemples LevelDB, Redis, Memcached
Exercice
Implémenter avec le langage de votre choix une "micro" base de données embarquée orientée clé/valeur. Les données devront être persistentes.
Votre implémentation devra permettre les opérations suivantes:
- Sauvegarder une valeur associée à une clé
- Récupérer une valeur associée à une clé
- Itérer sur les clés existantes dans la base de données
Exemple d'API
cont bbd = new BDD("./my/file.db");
// Récupérer une clé dans la base de données
var val = bdd.get("my-key1");
// Enregistrer une valeur dans la base de données
bdd.set("my-key2", "foobar");
// Itérer sur le clés de la base de données
bdd.forEachKeys(function(key) {
console.log(key);
});
Base de données orientée document
Mode de stockage représentant les données sous la forme de collections de "documents".
Un document est un objet comportant des attributs valués. Un attribut peut lui même être un objet.
- Usage Stockage de données structurées (XML, JSON) avec ou sans schémas.
- Exemples MongoDB, Elasticsearch
Base de données orientée colonne
Mode de stockage organisant les données sous forme de colonnes plutot que par rang comme les bases de données SQL classiques.
- Usage Stockage de données dédiées à l'analyse statistiques et aux opérations d'aggrégation/filtrage par colonne.
- Exemples Apache HBase
Base de données orientée graphe
Le concept de "triplet"
Un triplet est une structure de données pouvant être représenté sous la forme (sujet, prédicat, objet)
.
Un corpus de triplets permet de représenter un graphe orienté.
Exemple:
<William>
<kind_of>
<Person>
<William>
<work_for>
<Cadoles>
<Cadoles>
<kind_of>
Entreprise>
etc...
Exemple avec le projet Cayley
Exercice
Soit Jean, Silvia, Camille, Charlie et Nicolas cinq membres d'un même réseau social.
- Jean est ami avec Silvia.
- Silvia est amie avec Jean.
- Camille est ami avec Charlie.
- Charlie est amie avec Jean.
- Nicolas est ami avec Camille.
- Nicolas est ami avec Silvia.
Les relations sont évidemment bidirectionnelles.
Chaque personne a également les attributs suivants:
- Un age
- Un plat préféré
Consignes
-
Représenter sous forme de triplets ces 4 entités et leurs relations d'amitiés respectives.
-
Écrire la requête (Gizmo) permettant de récupérer la liste des plats préférés d'une personne.
-
Écrire la requête (Gizmo) permettant de récupérer la liste des "amis d'amis" d'une personne.
-
Écrire la requête (Gizmo) permettant de récupérer la liste plats préférés partagés avec des "amis d'amis".
Exploitation des données et cadre légal
Qu'est ce qu'une données à caractère personnel ?
Toute information identifiant directement ou indirectement une personne physique (ex. nom, no d’immatriculation, no de téléphone, photographie, date de naissance, commune de résidence, empreinte digitale...).
-- CNIL