# Lac de données

Un lac de données (en anglais data lake) est une méthode de stockage de données massives utilisée par le big data (mégadonnées en français). Ces données sont gardées dans leurs formats originaux ou sont très peu transformées$^,$. Le lac de données donne la priorité au stockage rapide et volumineux de données hétérogènes en adoptant une architecture en cluster. Il n'est pas optimisé pour les requêtes SQL comme les SGBD relationnels classiques, et s'écarte des Propriétés ACID traditionnelles. On parle depuis 2010 de SGBD NoSQL.
On trouve donc dans un lac de données des données de natures et de sources différentes, telles que :
* des données structurées issues notamment de bases de données relationnelles (lignes et colonnes) ;
* des données variées issues de bases NoSQL ;
* des données semi-structurées (fichiers CSV, journaux, XML, JSON...) ;
* des données non structurées (emails, documents, PDF) ;
* des fichiers de type blob (images, audio, vidéo notamment).
Ces données sont conservées dans le lac de données pour analyse ultérieure. Il s’agit d’une solution de gestion de données hybrides et variées ayant pour objectif de stocker de manière rapide et peu chère une grande quantité de données brutes.
La principale qualité du lac de données réside en sa flexibilité. Il doit pouvoir stocker les données, quel que soit leur format. Lorsqu’une donnée est intégrée au sein du lac de données, elle se voit attribuer un identifiant unique et est marquée au moyen d'un jeu de balises de métadonnées étendues. Lorsqu'un besoin se présente, le lac de données est parcouru pour y rechercher des informations pertinentes. L'analyse de ces données permet alors d'apporter de la valeur et de répondre à ce besoin.

## Origine du terme

Le concept de data lake a été évoqué pour la première fois, en 2010, par James Dixon, CTO de Pentaho, comme une solution pour le stockage de données sans pré-traitement et sans connaître précisément l’usage futur qu’il en sera fait. L'image du lac permet d'expliquer que différentes sources peuvent l'alimenter de manière naturelle et brute, et que les utilisateurs peuvent y plonger pour l'explorer et en rapporter des échantillons à examiner.

## Usages et fonctions

Les lacs de données facilitent l'accès et l'analyse des données pour des tâches telles que :
* l'analyse de données ;
* l'apprentissage machine ;
* la création de rapports ou la visualisation de données.
Le lac de données est donc un outil de gestion des données et de métadonnées dans des domaines variés qui vise le stockage et l'analyse de volumes massifs de données. Associé à des moyens d’analyse en temps réel et d’intelligence artificielle cela permet une meilleure mise en valeur de l'information et la saisie d’opportunités.
Cet outil apporte certains avantages tels que la rationalisation du stockage des données, la réduction des coûts de stockage, et facilite l'accès pour l'analyse et la prise de décisions d’une façon globale. Pour ce qui est de la rationalisation, le lac de données permet en effet de réduire les coûts temporel et de développement liés à la préparation des données avant leur stockage puisque leur format d’origine est conservé.
On note également une réduction des dépenses d'exploitation en utilisant le lac de données comme référentiel pour les données plus anciennes. Sans le lac de données, il serait nécessaire d’opter pour des entrepôts de données pour stocker celles-ci, or cette solution est bien plus onéreuse.
Plusieurs environnements fournissent des services complets permettant la gestion d'un lac de données. La plupart d'entre eux sont basés sur la technologie Hadoop et fournissent des installations en local (MapR, Cloudera, Hortonworks) ou dans le Cloud (Microsoft Azure, Google Cloud Platform, Amazon S3).

## Avantages et inconvénients

Le lac de données est avant tout un moyen de stockage dont les avantages sont :
* une capacité de stockage de grosses volumétries de données ;
* une rapidité de stockage sans pré-traitement des données brutes ;
* une souplesse et polyvalence pour stocker différents formats et sources de données ;
* une rationalisation du stockage des données ;
* une réduction des coûts de stockage ;
* une réduction du temps passé et du coût liés à la préparation des données avant leur stockage, puisque leur format d’origine est conservé.
S’il est bien utilisé, un lac de données permet de :
* garder un historique des données anciennes sur de longue périodes ;
* faciliter le partage, la mise à jour des données, et l'utilisation des données de façon cohérente et homogène dans l'entreprise, en évitant le silotage des données ;
* rechercher, analyser et corréler l'ensemble des données de l'entreprise pour une meilleur analyse et création de valeur ;
* faciliter l'accès pour l'analyse et la prise de décisions d’une façon globale.
Malgré tout, la solution présente aussi certains inconvénients :
* la difficulté à conserver un lac de données propre et organisé, ce qui est relativement chronophage et peut être à terme particulièrement onéreux. Le risque est de se retrouver avec une masse de données devenues massives et inexploitables, voire inutilisables. On parle alors de « marécage de données »$^,$$^,$. Ce terme est utilisé pour désigner un lac de données inaccessibles ou de peu de valeur. Andrew Brust assimile pour sa part complètement le marécage de donnée à un lac de donnée qui aurait sursaturé au fur et à mesure que des quantités trop importantes de données auraient été intégrées ;
* la difficulté à organiser et maintenir une gouvernance des données efficace ;
* le temps nécessaire à traiter et analyser les données stockées à l'état brut ;
* l'expertise requise pour rechercher, analyser et traiter les données de manière pertinente et créatrice de valeur, souvent confiées aux data scientists ;
* la sécurité, la confidentialité et les problématiques liées aux données personnelles et au respect des réglementations, inhérentes aux données, sont toujours présentes et d'autant plus importantes que le lac de données regroupe et conserve des données massives ;
* Le défi de l'intégration des données non structurées qui necessitent d'être automatiquement transformées afin de pouvoir en êxtraire de la valeur.

## Distinctions avec d'autres méthodes de stockage

Aujourd’hui il existe différents moyens de stocker les données autres que les lac de données, comme les entrepôts de données (data warehouses), ou les datamarts.
* Le risque est que ces bases de données spécialisées ne soient utilisées que par un petit nombre de personnes, et par la même méconnues et sous-exploitées par le reste de l'entreprise. C'est le phénomène de silotage ou data silo, où les données ne sont accessibles qu'à une partie de l'organisation, et finissent par poser des problèmes de mise à jour, de cohérence et de partage.
* Ces bases sont structurées différemment, car chaque donnée est traitée et transformée avant d'être stockée. Ceci peut être un gain de temps sur les données réellement utiles, mais au contraire une perte de temps si les données stockées ne sont pas utilisées par la suite, ce qui peut être fréquemment le cas pour les masses de données en big data. Le modèle préétabli de ces bases peut aussi limiter les possibilités et évolutions des interrogations et recherches futures qui peuvent être faites sur les données stockées.
* L'implémentation des propriétés ACID des SGBD relationnels classiques est coûteuse en ressources et temps de traitement. Elles ne sont donc plus nécessairement respectées dans les systèmes NoSQL qui privilégient la rapidité et la distribution des traitements en clusters pour gérer les données massives.
* La limite de volume des données gérées.