Au début des années 2010, avec l'essor d' Internet , l'augmentation massive des volumes, de la vitesse et de la variété des données a donné naissance au terme « big data » pour décrire les données elles-mêmes, et les entreprises technologiques axées sur les données, comme Facebook et Airbnb, ont commencé à utiliser l'expression « ingénieur de données » . Face à cette nouvelle ampleur des données, les grandes entreprises telles que Google , Facebook, Amazon , Apple , Microsoft et Netflix ont délaissé les techniques traditionnelles d'ETL et de stockage. Elles ont créé l'ingénierie des données , une branche du génie logiciel centrée sur les données, et plus particulièrement sur l'infrastructure , l'entreposage , la protection des données , la cybersécurité , l'exploration , la modélisation , le traitement et la gestion des métadonnées . Ce changement d'approche s'est particulièrement concentré sur le cloud computing . Les données ont commencé à être gérées et utilisées par de nombreux services de l'entreprise, tels que les ventes et le marketing , et non plus seulement par le service informatique.
Outils
Calculer
Le calcul haute performance est essentiel au traitement et à l'analyse des données. Une approche particulièrement répandue pour l'ingénierie des données est la programmation par flux de données , où le calcul est représenté par un graphe orienté (graphe de flux de données) ; les nœuds correspondent aux opérations et les arêtes au flux des données. Parmi les implémentations populaires, on trouve Apache Spark et TensorFlow , dédié à l' apprentissage profond . Des implémentations plus récentes, comme le flux de données le calcul incrémental pour un traitement des données beaucoup plus efficace.
Stockage
Les données sont stockées de diverses manières, et l'un des principaux facteurs déterminants est leur utilisation future. Les ingénieurs de données optimisent les systèmes de stockage et de traitement des données afin de réduire les coûts. Ils utilisent la compression, le partitionnement et l'archivage des données .
Bases de données
Si les données sont structurées et qu'un traitement transactionnel en ligne est requis, on utilise généralement des bases de données . À l'origine, on utilisait principalement des bases de données relationnelles , offrant de fortes garanties de validité des transactions ACID ; la plupart des bases de données relationnelles utilisent SQL pour leurs requêtes. Cependant, avec l'explosion des données dans les années 2010, les bases de données NoSQL ont également gagné en popularité, car elles permettent une mise à l'échelle horizontale plus aisée que les bases de données relationnelles en renonçant aux garanties de validité des transactions ACID, et en réduisant l' incompatibilité entre les modèles objet et relationnel . Plus récemment, les bases de données NewSQL — qui tentent de permettre une mise à l'échelle horizontale tout en conservant les garanties ACID — ont gagné en popularité.
entrepôts de données
lacs de données
Un lac de données est un référentiel centralisé permettant de stocker, traiter et sécuriser de grands volumes de données. Il peut contenir des données structurées issues de bases de données relationnelles , des données semi-structurées , des données non structurées et des données binaires . Un lac de données peut être créé sur site ou dans un environnement cloud, à l'aide des services de fournisseurs de cloud public tels qu'Amazon , Microsoft ou Google .
Fichiers
Si les données sont moins structurées, elles sont souvent simplement stockées sous forme de fichiers . Plusieurs options sont possibles :
- Les systèmes de fichiers représentent les données de manière hiérarchique dans des dossiers imbriqués.
- Le stockage par blocs divise les données en morceaux de taille régulière ; cela correspond souvent aux disques durs (virtuels) ou aux disques SSD .
- Le stockage d'objets gère les données à l'aide de métadonnées ; souvent chaque fichier se voit attribuer une clé telle qu'un UUID .
Gestion
La multitude et la diversité des processus de données et des emplacements de stockage peuvent s'avérer complexes pour les utilisateurs. C'est pourquoi un système de gestion des flux de travail (par exemple Airflow ) a été mis en place pour permettre la spécification, la création et le suivi des tâches liées aux données. Ces tâches sont souvent représentées sous forme de graphe acyclique orienté (DAG) .
Cycle de vie
planification d'entreprise
Les objectifs stratégiques fixés par les dirigeants sont formalisés dans les plans d'affaires clés, dont la définition précise figure dans les plans tactiques et la mise en œuvre dans les plans opérationnels. La plupart des entreprises reconnaissent aujourd'hui la nécessité fondamentale d'élaborer un plan d'affaires conforme à cette stratégie. La mise en œuvre de ces plans s'avère souvent complexe en raison du manque de transparence aux niveaux tactique et opérationnel des organisations. Ce type de planification requiert un retour d'information permettant de corriger rapidement les problèmes liés à une mauvaise communication ou à une interprétation erronée du plan d'affaires.
Conception de systèmes
La conception des systèmes de données comprend plusieurs composantes telles que l'architecture des plateformes de données et la conception des entrepôts de données.
Modélisation des données
Rôles
Ingénieur de données
Un ingénieur de données est un type d'ingénieur logiciel qui crée des pipelines ETL ( extraction, transformation et chargement) pour le traitement du Big Data afin de gérer le flux de données au sein de l'organisation. Cela permet d'exploiter d'énormes volumes de données et de les transformer en informations exploitables . Il se concentre sur la préparation des données pour la production et sur des aspects tels que les formats, la résilience, la mise à l'échelle et la sécurité. Les ingénieurs de données sont généralement issus du génie logiciel et maîtrisent des langages de programmation comme Java , Python , Scala et Rust . Ils sont également familiers avec les bases de données, l'architecture, le cloud computing et le développement logiciel Agile .