Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

Cet article est la traduction de mon article sur Medium — Introduction au Data Lake, qui a Ă©tĂ© plutĂŽt populaire, probablement en raison de sa simplicitĂ©. C'est pourquoi j'ai dĂ©cidĂ© de l'Ă©crire en français et d'y ajouter quelques Ă©lĂ©ments, afin que le grand public, qui n'est pas expert en donnĂ©es, puisse comprendre ce qu'est un entrepĂŽt de donnĂ©es (DW), et ce qu'est un Data Lake, ainsi que leur coexistence.

Pourquoi ai-je voulu Ă©crire sur le Data Lake ? Je travaille dans le domaine des donnĂ©es et de l'analytique depuis plus de 10 ans, et aujourd'hui je travaille prĂ©cisĂ©ment avec des Big Data chez Amazon Alexa AI Ă  Cambridge, prĂšs de Boston, bien que je vive Ă  Victoria, sur l'Ăźle de Vancouver, et que je me rende souvent Ă  Boston, Seattle, et Vancouver, et parfois mĂȘme Ă  Moscou pour des confĂ©rences. De plus, de temps en temps j'Ă©cris, mais principalement en anglais, ayant dĂ©jĂ  rĂ©digĂ© plusieurs livres, et j'ai Ă©galement le besoin de partager les tendances en matiĂšre d'analytique en AmĂ©rique du Nord, et j'Ă©cris parfois sur Telegram.

J'ai toujours travaillĂ© avec des entrepĂŽts de donnĂ©es, et depuis 2015, je suis fortement impliquĂ© avec Amazon Web Services, et en gĂ©nĂ©ral je me suis tournĂ© vers l'analytique dans le cloud (AWS, Azure, GCP). J'ai observĂ© l'Ă©volution des solutions d'analytique depuis 2007 et j'ai mĂȘme travaillĂ© pour un fournisseur d'entrepĂŽts de donnĂ©es, Teradata, en l'implĂ©mentant au Sberbank, c'est Ă  ce moment-lĂ  que le Big Data a Ă©mergĂ© avec Hadoop. Tout le monde a commencĂ© Ă  dire que l'Ăšre des entrepĂŽts Ă©tait rĂ©volue et que tout le monde Ă©tait dĂ©sormais sur Hadoop, puis on a commencĂ© Ă  parler de Data Lake, encore une fois en affirmant que l'entrepĂŽt de donnĂ©es Ă©tait bel et bien fini. Mais heureusement (peut-ĂȘtre pour certains, malheureusement pour ceux qui gagnaient beaucoup d'argent en configurant Hadoop), l'entrepĂŽt de donnĂ©es n'a pas disparu.

Dans cet article, nous allons explorer ce qu'est un Data Lake. Cet article s'adresse aux personnes qui ont peu ou pas d'expérience avec les entrepÎts de données.

Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

Sur l'image se trouve le lac de Bled, l'un de mes lacs prĂ©fĂ©rĂ©s, bien que je n'y sois allĂ© qu'une seule fois, mais je m'en souviens toute ma vie. Mais nous allons parler d'un autre type de lac — du Data Lake. Peut-ĂȘtre que beaucoup d'entre vous ont dĂ©jĂ  entendu parler de ce terme, mais une nouvelle dĂ©finition ne fera de mal Ă  personne.

Tout d'abord, voici les définitions les plus populaires du Data Lake :

"un dĂ©pĂŽt de fichiers de tous types de donnĂ©es brutes, accessibles pour analyse par quiconque dans l'organisation" — Martin Fowler.

«Si vous pensez que le lac de donnĂ©es est comme une bouteille d'eau — purifiĂ©e, emballĂ©e et conditionnĂ©e pour un usage pratique, alors le lac de donnĂ©es est un grand rĂ©servoir d'eau Ă  l'Ă©tat naturel. Les utilisateurs peuvent puiser de l'eau, plonger en profondeur, explorer» — James Dickson.

Nous savons maintenant avec certitude que le lac de données est lié à l'analyse ; il nous permet de stocker de grands volumes de données dans leur forme originale et nous offre un accÚs nécessaire et pratique aux données.

J'aime souvent simplifier les choses. Si je peux expliquer un terme complexe avec des mots simples, cela signifie que j'ai compris son fonctionnement et son utilitĂ©. Un jour, alors que je fouillais dans les photos de mon iPhone, cela m'a frappĂ© : c'est un vĂ©ritable lac de donnĂ©es, j'ai mĂȘme rĂ©alisĂ© une diapositive pour des confĂ©rences :

Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

C'est trĂšs simple. Nous prenons une photo avec le tĂ©lĂ©phone, la photo est sauvegardĂ©e sur le tĂ©lĂ©phone et peut ĂȘtre sauvegardĂ©e dans iCloud (un stockage dans le cloud). De plus, le tĂ©lĂ©phone collecte des mĂ©tadonnĂ©es de la photo : ce qui est reprĂ©sentĂ©, la gĂ©olocalisation, l'heure. En consĂ©quence, nous pouvons utiliser l'interface pratique de l'iPhone pour retrouver notre photo, et nous pouvons mĂȘme voir des indicateurs, par exemple, quand je cherche des photos avec le mot feu (fire), je trouve 3 photos de feux de camp. Pour moi, c'est comme un outil de Business Intelligence qui fonctionne trĂšs rapidement et efficacement.

Et bien sûr, nous ne devons pas oublier la sécurité (autorisation et authentification), sinon nos données pourraient facilement devenir accessibles au public. Il y a beaucoup de nouvelles concernant de grandes entreprises et des startups dont les données ont été rendues publiques en raison de la négligence des développeurs et du non-respect de rÚgles simples.

MĂȘme une image simple nous aide Ă  comprendre ce qu'est un lac de donnĂ©es, ses diffĂ©rences par rapport Ă  un entrepĂŽt de donnĂ©es traditionnel et ses principaux Ă©lĂ©ments :

  1. Chargement des donnĂ©es (Ingestion) — un composant clĂ© du lac de donnĂ©es. Les donnĂ©es peuvent entrer dans l'entrepĂŽt de deux maniĂšres — par batch (chargement par intervalles) et par streaming (flux de donnĂ©es).
  2. Stockage de fichiers (Storage) — le principal composant du lac de donnĂ©es. Nous avons besoin que le stockage soit facilement Ă©volutif, extrĂȘmement fiable et Ă  faible coĂ»t. Par exemple, dans AWS, c'est S3.
  3. Catalogue et Recherche (Catalogue et recherche) — pour Ă©viter les marais de donnĂ©es (c'est lorsqu'on regroupe toutes les donnĂ©es en un seul endroit, rendant leur exploitation impossible), nous devons crĂ©er une couche de mĂ©tadonnĂ©es pour classer les donnĂ©es, afin que les utilisateurs puissent facilement trouver les informations nĂ©cessaires Ă  leur analyse. De plus, on peut utiliser des solutions de recherche supplĂ©mentaires, comme ElasticSearch. La recherche aide l'utilisateur Ă  trouver les donnĂ©es requises via une interface conviviale.
  4. Traitement (Processus) — cette Ă©tape est responsable du traitement et de la transformation des donnĂ©es. Nous pouvons transformer les donnĂ©es, modifier leurs structures, les nettoyer et bien plus encore.
  5. SĂ©curitĂ© (SĂ©curitĂ©) — il est important de consacrer du temps Ă  la conception de la sĂ©curitĂ© de la solution. Par exemple, le chiffrement des donnĂ©es pendant le stockage, le traitement et le chargement. Il est essentiel d'utiliser des mĂ©thodes d'authentification et d'autorisation. En conclusion, un outil d'audit est nĂ©cessaire.

D'un point de vue pratique, nous pouvons caractériser un lac de données par trois attributs :

  1. Collectez et stockez tout ce que vous voulez — un lac de donnĂ©es contient toutes les donnĂ©es, qu'elles soient brutes et non traitĂ©es sur n'importe quelle pĂ©riode, ou des donnĂ©es traitĂ©es/nettoyĂ©es.
  2. Analyse approfondie — un lac de donnĂ©es permet aux utilisateurs d'explorer et d'analyser les donnĂ©es.
  3. AccĂšs flexible — un lac de donnĂ©es offre un accĂšs flexible Ă  diverses donnĂ©es et diffĂ©rents scĂ©narios.

Nous pouvons maintenant discuter de la différence entre un entrepÎt de données et un lac de données. Les gens demandent souvent :

  • Qu'en est-il de l'entrepĂŽt de donnĂ©es ?
  • Remplaçons-nous l'entrepĂŽt de donnĂ©es par un lac de donnĂ©es ou l'Ă©tendons-nous ?
  • Peut-on finalement se passer d'un lac de donnĂ©es ?

Pour rĂ©sumer, il n'y a pas de rĂ©ponse claire. Tout dĂ©pend de la situation spĂ©cifique, des compĂ©tences de l'Ă©quipe et du budget. Par exemple, la migration d'un entrepĂŽt de donnĂ©es vers Oracle sur AWS et la crĂ©ation d'un lac de donnĂ©es par la filiale d'Amazon — Woot — Notre histoire de lac de donnĂ©es : Comment Woot.com a construit un lac de donnĂ©es sans serveur sur AWS.

D'autre part, le fournisseur Snowflake affirme que vous n'avez plus besoin de vous préoccuper d'un lac de données, car leur plateforme de données (jusqu'en 2020 c'était un entrepÎt de données) vous permet de combiner à la fois un lac de données et un entrepÎt de données. J'ai peu travaillé avec Snowflake, et c'est vraiment un produit unique qui peut faire cela. Le coût de l'affaire, c'est une autre question.

En conclusion, mon opinion personnelle est que nous avons toujours besoin d'un entrepĂŽt de donnĂ©es comme source principale pour notre reporting, et tout ce qui ne peut pas ĂȘtre stockĂ© y est conservĂ© dans un lac de donnĂ©es. Le rĂŽle de l'analytique est de fournir un accĂšs facile aux entreprises pour la prise de dĂ©cisions. Quoi qu'il en soit, les utilisateurs commerciaux travaillent plus efficacement avec un entrepĂŽt de donnĂ©es qu'avec un lac de donnĂ©es. Par exemple, chez Amazon, il y a Redshift (un entrepĂŽt de donnĂ©es analytique) et il y a Redshift Spectrum/Athena (une interface SQL pour le lac de donnĂ©es S3 basĂ©e sur Hive/Presto). Il en va de mĂȘme pour d'autres solutions modernes d'entrepĂŽts de donnĂ©es analytiques.

Examinons une architecture typique d'entrepÎt de données :

Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

C'est une solution classique. Nous avons des systÚmes sources, grùce à ETL/ELT, nous copions les données dans l'entrepÎt de données analytique et les connectons à une solution de Business Intelligence (ma préférée est Tableau, et la vÎtre ?).

Une telle solution présente les inconvénients suivants :

  • Les opĂ©rations ETL/ELT nĂ©cessitent du temps et des ressources.
  • En gĂ©nĂ©ral, le stockage des donnĂ©es dans un entrepĂŽt de donnĂ©es analytique n'est pas bon marchĂ© (comme Redshift, BigQuery, Teradata), car nous devons acheter un cluster complet.
  • Les utilisateurs commerciaux ont accĂšs Ă  des donnĂ©es nettoyĂ©es et souvent agrĂ©gĂ©es, et ils n'ont pas la possibilitĂ© d'obtenir des donnĂ©es brutes.

Bien sĂ»r, tout dĂ©pend de votre cas. Si vous n'avez pas de problĂšmes avec votre entrepĂŽt de donnĂ©es, vous n'avez absolument pas besoin d'un lac de donnĂ©es. Mais lorsqu'il y a des problĂšmes de manque d'espace, de puissance ou lorsque le coĂ»t est un facteur clĂ©, il peut ĂȘtre judicieux d'envisager un lac de donnĂ©es. C'est pourquoi les lacs de donnĂ©es sont trĂšs populaires. Voici un exemple d'architecture de lac de donnĂ©es :
Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?
En utilisant l'approche du lac de données, nous chargeons des données brutes dans notre lac de données (par lots ou en streaming), puis nous traitons les données selon les besoins. Un lac de données permet aux utilisateurs commerciaux de créer leurs propres transformations de données (ETL/ELT) ou d'analyser des données dans des solutions de Business Intelligence (si le driver approprié est disponible).

L'objectif de toute solution analytique est de servir les utilisateurs commerciaux. Par consĂ©quent, nous devons toujours travailler en fonction des exigences commerciales. (Chez Amazon, c'est l'un des principes — travailler Ă  rebours).

En travaillant à la fois avec un entrepÎt de données et un lac de données, nous pouvons comparer les deux solutions :

Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

La principale conclusion Ă  tirer est que le stockage des donnĂ©es ne concurrence en rien le lac de donnĂ©es, mais le complĂšte plutĂŽt. Cependant, c'est Ă  vous de dĂ©cider ce qui convient Ă  votre cas. Il est toujours intĂ©ressant d'essayer par soi-mĂȘme et de tirer les bonnes conclusions.

Je voudrais Ă©galement parler d'un des cas oĂč j'ai commencĂ© Ă  utiliser l'approche du lac de donnĂ©es. Tout est plutĂŽt ordinaire, j'ai essayĂ© d'utiliser un outil ELT (nous avions Matillion ETL) et Amazon Redshift, ma solution fonctionnait, mais ne correspondait pas aux exigences.

J'avais besoin de récupérer les logs web, de les transformer et de les agréger, afin de fournir des données pour 2 cas :

  1. L'équipe marketing voulait analyser l'activité des bots pour le SEO.
  2. L'IT voulait examiner les métriques de fonctionnement des sites.

Des logs trĂšs simples, trĂšs basiques. Voici un exemple :

https 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188 
192.168.131.39:2817 10.0.0.1:80 0.086 0.048 0.037 200 200 0 57 
"GET https://www.example.com:443/ HTTP/1.1" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337281-1d84f3d73c47ec4e58577259" "www.example.com" "arn:aws:acm:us-east-2:123456789012:certificate/12345678-1234-1234-1234-123456789012"
1 2018-07-02T22:22:48.364000Z "authenticate,forward" "-" "-"

Un fichier pesait entre 1 et 4 mégaoctets.

Mais il y avait un problĂšme. Nous avions 7 domaines Ă  travers le monde, et chaque jour, 7000 fichiers Ă©taient créés. Ce n'est pas trĂšs volumineux, seulement 50 giga-octets. Mais la taille de notre cluster Redshift Ă©tait Ă©galement petite (4 nƓuds). Le chargement traditionnel d'un fichier prenait environ une minute. Donc, la tĂąche ne se rĂ©solvait pas directement. Et c'Ă©tait le genre de situation oĂč j'ai dĂ©cidĂ© d'utiliser l'approche du lac de donnĂ©es. La solution ressemblait Ă  peu prĂšs Ă  ceci :

Avons-nous besoin d'un lac de données ? Que faire du stockage de données ?

Elle est assez simple (je tiens à souligner que l'un des avantages de travailler dans le cloud est sa simplicité). J'ai utilisé :

  • AWS Elastic Map Reduce (Hadoop) comme puissance de calcul.
  • AWS S3 comme stockage de fichiers avec possibilitĂ© de chiffrer les donnĂ©es et de restreindre l'accĂšs.
  • Spark comme puissance de calcul InMemory et PySpark pour la logique et la transformation des donnĂ©es.
  • Parquet comme rĂ©sultat du travail de Spark.
  • AWS Glue Crawler comme collecteur de mĂ©tadonnĂ©es pour les nouvelles donnĂ©es et partitions.
  • Redshift Spectrum comme interface SQL vers le lac de donnĂ©es pour les utilisateurs existants de Redshift.

Le plus petit cluster EMR+Spark traitait tous les fichiers en 30 minutes. Il existe Ă©galement d'autres cas pour AWS, en particulier beaucoup liĂ©s Ă  Alexa, oĂč les donnĂ©es sont trĂšs volumineuses.

Récemment, j'ai découvert l'un des inconvénients d'un lac de données : le RGPD. Le problÚme survient lorsque le client demande la suppression, et que les données se trouvent dans l'un des fichiers, nous ne pouvons pas utiliser le Data Manipulation Language et l'opération DELETE comme dans une base de données.

J'espÚre que cet article a clarifié la différence entre un entrepÎt de données et un lac de données. Si cela vous a intéressé, je peux traduire d'autres articles que j'ai écrits ou ceux de professionnels que je lis. Je peux également parler des solutions avec lesquelles je travaille et de leur architecture.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster