PDF Ou En Epub
Total Page:16
File Type:pdf, Size:1020Kb
Bases de données documentaires et distribuées Version Septembre 2021 Philippe Rigaux sept. 26, 2021 Table des matières 1 Introduction 3 1.1 Sujet du cours.........................................4 1.2 Contenu et objectifs du cours.................................5 1.3 Organisation..........................................6 2 Préliminaires : Docker7 2.1 Introduction à Docker.....................................9 2.2 Docker en ligne de commande................................. 11 2.3 Kitematic............................................ 17 3 Modélisation de bases NoSQL 21 3.1 S1 : documents structurés................................... 22 3.2 S2. Modélisation des collections................................ 30 3.3 S3 : Cassandra, une base relationnelle étendue........................ 41 3.4 S4 : MongoDB, une base JSON................................ 51 3.5 Exercices............................................ 55 4 Interrogation de bases NoSQL 59 4.1 S1 : HTTP, REST, et CouchDB................................ 59 4.2 S2 : requêtes Cassandra.................................... 71 4.3 S3 : requêtes avec MongoDB................................. 75 5 MapReduce, premiers pas 81 5.1 S1 : MapReduce démystifié.................................. 82 5.2 S2 : MapReduce et CouchB.................................. 90 5.3 S3 : Frameworks MapReduce : MongoDB........................... 94 5.4 Exercices............................................ 102 6 Cassandra - Travaux Pratiques 107 6.1 Partie 1 : Approche relationnelle................................ 108 6.2 Partie 2 : modélisation spécifique NoSQL........................... 111 7 MongoDB - Travaux Pratiques 113 i 7.1 Manipulation de base...................................... 113 7.2 Pratique de Map/Reduce.................................... 115 7.3 Bonus / Pour aller plus loin.................................. 117 8 Introduction à la recherche d’information 119 8.1 S1 : les principes........................................ 119 8.2 S2 : Bases documentaires et moteur de recherche....................... 127 8.3 S3 : la pratique : requêtes booléennes............................. 134 8.4 Exercices............................................ 138 9 Recherche d’information : l’indexation 141 9.1 S1 : L’analyse de documents.................................. 141 9.2 S2 : L’indexation dans ElasticSearch.............................. 144 10 Recherche avec classement 157 10.1 S1 : recherche avec classement................................. 157 10.2 S2 : recherche plein texte.................................... 160 10.3 S3 : l’algorithme PageRank.................................. 166 10.4 Exercices............................................ 169 10.5 Implémenter le classement dans un moteur de recherche................... 173 11 Recherche d’information - TP ElasticSearch 175 11.1 Mise en place d’ElasticSearch................................. 175 11.2 Interrogation.......................................... 177 11.3 Agrégats............................................ 178 11.4 Bonus : Agrégats via mapping spécifique........................... 179 12 Recherche d’information - TP ElasticSearch : pertinence 181 12.1 Elasticsearch et la pertinence.................................. 181 12.2 À vous de jouer......................................... 186 13 Le cloud, une nouvelle machine de calcul 187 13.1 S1 : cloud et données massives................................ 188 13.2 S2 : La scalabilité....................................... 196 13.3 S3 : anatomie d’une grappe de serveurs............................ 200 13.4 Exercices............................................ 204 14 Systèmes NoSQL : la réplication 207 14.1 S1 : réplication et reprise sur panne.............................. 207 14.2 S2 : réplication dans MongoDB................................ 217 14.3 S3 : ElasticSearch....................................... 221 14.4 S4 : Cassandra......................................... 228 14.5 Exercices............................................ 236 15 Systèmes NoSQL : le partitionnement 241 15.1 S1 : les bases.......................................... 241 15.2 S2 : partitionnement par intervalle............................... 248 15.3 S3 : partitionnement par hachage............................... 257 15.4 Exercices............................................ 270 ii 16 Calcul distribué : Hadoop et MapReduce 275 16.1 S1 : MapReduce........................................ 276 16.2 S2 : Une brève introduction à Hadoop............................. 283 16.3 S3 : langages de traitement : Pig................................ 295 16.4 Exercices............................................ 301 17 Traitement de données massives avec Apache Spark 305 17.1 S1 : Introduction à Spark.................................... 306 17.2 S2 : Spark en pratique..................................... 312 17.3 S3 : Traitement de données structurées avec Cassandra et Spark............... 320 17.4 Exercices............................................ 325 18 Traitement de flux massifs avec Apache Flink 327 18.1 S1 : Apache Flink....................................... 328 18.2 S2 : l’API de streaming Flink................................. 337 18.3 S3 : Le fenêtrage........................................ 345 19 Pig : Travaux pratiques 351 19.1 Première partie : analyse de flux multiples........................... 351 19.2 Deuxième partie : analyse de requêtes............................. 353 20 Projets NFE204 361 20.1 Les étapes........................................... 362 20.2 Les données.......................................... 363 20.3 Le système NoSQL....................................... 363 20.4 Le rapport........................................... 364 21 Annales des examens 365 21.1 Examen du 3 février 2015................................... 365 21.2 Examen du 14 avril 2015.................................... 367 21.3 Examen du 15 juin 2015.................................... 368 21.4 Examen du 1er juillet 2016 (FOD)............................... 370 21.5 Examen du 1er février 2017 (Présentiel)............................ 374 21.6 Examen du 6 février 2018 (Présentiel)............................. 377 21.7 Examen du 30 juin 2020.................................... 381 21.8 Examen du 5 septembre 2020................................. 383 22 Indices and tables 387 iii iv Bases de données documentaires et distribuées, Version Septembre 2021 Tout le matériel proposé ici sert de support au cours « Bases de données documentaires et distribuées » proposé par le département d’informatique du Cnam. Le code du cours est NFE204 (voir le site http: //deptinfo.cnam.fr/new/spip.php?rubrique146 pour des informations pratiques). Il est donné en — Cours présentiel (premier semestre, mardi soir) — Cours à distance (second semestre, avec supports audiovisuels) Par ailleurs, le document que vous commencez à lire fait partie de l’ensemble des supports d’apprentissage proposés sur le site http://www.bdpedia.fr. Reportez-vous à ce site pour plus d’explications. Ce cours fait partie d’un ensemble d’enseignements consacrés à l’analyse de données massives, permettant éventuellement d’obtenir un Certificat de Spécialisation au Cnam. Vous êtes invités à consulter : — Le site du certificat : http://donneesmassives.cnam.fr/ — La fiche du certificat : http://formation.cnam.fr/rechercher-par-discipline/ certificat-de-specialisation-analyste-de-donnees-massives-669531.kjsp — La présentation du cours RCP216 sur la fouille de données distribuée http://cedric.cnam.fr/vertigo/ Cours/RCP216/preambule.html — La présentation du projet de synthèse (UASB03) qui conclut le Certificat de données massives, http: //cedric.cnam.fr/vertigo/Cours/UASB03/uasb03.html Table des matières 1 Bases de données documentaires et distribuées, Version Septembre 2021 2 Table des matières CHAPITRE 1 Introduction Supports complémentaires : — Diapositives: Présentation du cours — Vidéo de présentation du cours Les bases relationnelles sont adaptées à des informations bien structurées, décomposables en unités simples (chaînes de caractères, numériques), et représentables sous forme de tableaux. Beaucoup de données ne satisfont pas ces critères : leur structure est complexe, variable, et elles ne se décomposent par aisément en attributs élémentaires. Comment représenter le contenu d’un livre par exemple? d’une image ou d’une vidéo? d’une partition musicale? Les bases relationnelles répondent à cette question en multipliant le nombre de tables, et de lignes dans ces tables, pour représenter ce qui constitue conceptuellement une même « entité ». Cette décomposition en fragment « plats » (les lignes) est la fameuse normalisation (relationnelle) qui impose, pour reconstituer l’in- formation complète, d’effectuer une ou plusieurs jointures assemblant les lignes stockées indépendamment les unes des autres. Note : Ce cours suppose une connaissance solide des bases de données relationnelles. Si ce n’est pas le cas, vous risquez d’avoir des lacunes et des difficultés à assimiler les nouvelles connaissances présentées. Jevous recommande au préalable de consulter les cours suivants : — le cours Bases relationnelles, modèles et langages, pour tout savoir sur la conception d’une base relationnelle et le langage SQL. — le cours Systèmes relationnels, pour les aspects systèmes : indexation, optimisation, concurrence d’accès. Cette approche, qui a fait ses preuves, ne convient cependant pas dans certains cas. Les données de nature es- sentiellement textuelle par exemple (livre, documentation) se représentent mal en