formations/cesi/intro_big_data/presentation/slides.md

260 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- $theme: default -->
<style>pre, table { font-size: 0.6em !important; }</style>
# Introduction au "Big Data"
William Petit - S.C.O.P. Cadoles
---
<!-- page_number: true -->
---
## Vocabulaire
---
### Qu'est ce qu'une "donnée" ?
> Une donnée est une description élémentaire dune réalité. Cest par exemple une observation ou une mesure. [...]
>
> Elle est dépourvue de tout raisonnement, supposition, constatation, probabilité.
>
> -- [Wikipédia](https://fr.wikipedia.org/wiki/Donn%C3%A9e)
**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
<p style="text-align:center">
<img style="width:80%" src="img/The-total-amount-of-data-generated-on-earth-exceeded-one-zettabyte-in-2010It-is.png">
</p>
[Zaslavsky, Arkady & Perera, Charith & Georgakopoulos, Dimitrios. (2012). Sensing as a Service and Big Data. CoRR, abs/1301.0159.](https://www.researchgate.net/publication/234017925_Sensing_as_a_Service_and_Big_Data)
---
### 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](http://www.internetlivestats.com/twitter-statistics/)
>
> Sur Snapchat, sur le 3eme trimestre de 2017, les utilisateurs s'envoyaient jusqu'à **3.5 milliards de 'snap' par jour**. [Source](https://www.statista.com/statistics/257128/number-of-photo-messages-sent-by-snapchat-users-every-day/)
---
### 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()` et `reduce()` 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**
![center](./img/Mapreduce.png)
[Source](https://fr.wikipedia.org/wiki/MapReduce#/media/File:Mapreduce.png)
---
## 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](http://leveldb.org/), [Redis](https://redis.io/), [Memcached](https://www.memcached.org/)
---
**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**
```js
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](https://www.mongodb.com/), [Elasticsearch](https://www.elastic.co/)
---
### 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](https://github.com/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
1. Représenter sous forme de triplets ces 4 entités et leurs relations d'amitiés respectives.
2. Écrire la requête (Gizmo) permettant de récupérer la liste des plats préférés d'une personne.
3. Écrire la requête (Gizmo) permettant de récupérer la liste des "amis d'amis" d'une personne.
4. Écrire la requête (Gizmo) permettant de récupérer la liste plats préférés partagés avec des "amis d'amis".
[Documentation de l'API Gizmo](http://localhost:64210/docs/GizmoAPI)
---
## 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 dimmatriculation, no de téléphone, photographie, date de naissance, commune de résidence, empreinte digitale...).
>
> -- CNIL
[Source](https://www.cnil.fr/fr/definition/donnee-personnelle)
---
### Le RGPD
[Voir la page de la CNIL](https://www.cnil.fr/fr/reglement-europeen-sur-la-protection-des-donnees-ce-qui-change-pour-les-professionnels)