Nel 2011, James Dixon, allora CTO della società di business intelligence Pentaho, ha coniato il termine data lake contrapponendolo ai silos di informazioni tipici dei data mart, molto popolari all’epoca: “Se pensate a un data mart come a un deposito di acqua in bottiglia, depurata, confezionata e strutturata per un facile consumo, il data lake è un grande specchio d’acqua in uno stato più naturale. Il contenuto del data lake fluisce da una fonte per riempire questo lago e vari utenti possono venire per esaminare, immergersi o prelevare campioni”, scriveva Dixon quando coniò il termine.

Da allora i data lake si sono evoluti e ora competono con i data warehouse nel campo dello storage e analisi dei big data. Vari strumenti e prodotti supportano query SQL più rapide nei data lake e tutti e tre i principali fornitori cloud offrono archiviazione e analisi dei data lake. C’è anche il nuovo concetto di data lakehouse, che combina governance, sicurezza e analisi con uno storage conveniente.

Ma da un punto di vista più pratico cos’è un data lake? Un data lake è essenzialmente un unico repository di dati che contiene tutti i vostri dati fino a quando non sono pronti per l’analisi, oppure solo quei dati che non rientrano nel vostro data warehouse. In genere, un data lake archivia i dati nel formato file nativo, ma i dati possono anche essere trasformati in un altro formato per rendere l’analisi più efficiente. L’obiettivo ultimo di avere un data lake è estrarre dai dati valore aziendale o analitico.

I data lake possono ospitare dati binari, come immagini e video, dati non strutturati, come documenti PDF e dati semistrutturati, come file CSV e JSON, nonché dati strutturati, in genere provenienti da database relazionali. I dati strutturati sono più utili per l’analisi, ma i dati semistrutturati possono essere facilmente importati in un modulo strutturato. I dati non strutturati possono spesso essere convertiti in dati strutturati utilizzando l’automazione intelligente.

Data lake vs data warehouse

La domanda di fondo che ci si pone quando si parla di data lake è se si ha veramente bisogno di esso o se invece serve un data warehouse; molto probabilmente vi servono entrambi, ma per scopi diversi (e, volendo, è anche possibile combinarli). Innanzitutto, diamo un’occhiata alle principali differenze tra data lake e data warehouse:

  • Origini dati: le origini dati tipiche per i data lake includono file di registro, post sui social media e dati da dispositivi connessi a Internet. I data warehouse in genere archiviano i dati estratti da database transazionali, applicazioni line-of-business e database operativi per l’analisi.
  • Strategia dello schema: lo schema del database per un data lake viene in genere applicato al momento dell’analisi (schema-on-read). Lo schema del database per i data warehouse aziendali viene invece progettato prima della creazione del datastore e applicato ai dati durante l’importazione (schema-on-write).
  • Infrastruttura di archiviazione: i data warehouse hanno spesso quantità significative di RAM e di costosi SSD per fornire rapidamente i risultati delle query. I data lake utilizzano invece per lo più dischi rotanti economici su cluster di computer di base. Sia i data warehouse che i data lake utilizzano il massively parallel processing (MPP) per velocizzare le query SQL.
  • Dati grezzi o curati: i dati in un data warehouse dovrebbero essere curati al punto in cui il data warehouse può essere trattato come l'”unica fonte di verità” per un’organizzazione. I dati in un data lake possono essere curati o meno: i data lake in genere iniziano con dati grezzi, che possono essere successivamente filtrati e trasformati per l’analisi.
  • Chi lo utilizza: gli utenti del data warehouse sono solitamente analisti aziendali. Gli utenti di data lake, invece, sono più spesso data scientist o data engineer, almeno inizialmente.
  • Tipo di analisi: l’analisi tipica per i data warehouse include business intelligence, reportistica in batch e visualizzazioni. Per i data lake, l’analisi tipica include machine learning, analisi predittiva, rilevamento e profilazione dei dati.

E i data mart?

I data mart sono database di analisi limitati ai dati di un singolo reparto o unità aziendale, al contrario dei data warehouse, che combinano tutti i dati relazionali di un’azienda in una forma adatta per l’analisi. I data mart offrono un’analisi efficiente poiché contengono solo i dati rilevanti per il dipartimento; in quanto tali, sono intrinsecamente silos. Alcuni affermano che il siloing non ha importanza perché la business unit non ha bisogno dei dati esclusi. Nella vita reale, però, spesso ha importanza. C’è infatti sempre un superiore che ha bisogno di report basati su dati combinati provenienti da più unità aziendali. Questo è uno dei motivi per cui attualmente vediamo molti data lake e data warehouse e pochi data mart.

Query SQL più veloci su un data lake

Quando si archiviano dati grezzi in un data lake, i dati potrebbero essere inutili per gli analisti aziendali finché non vengono elaborati da un ingegnere di dati o da un data scientist. Oltre ai filtri e alle trasformazioni dei dati, i data lake necessitano di elementi come cataloghi di dati, sicurezza dei dati e definizioni di schemi. Il termine per un data lake senza queste funzionalità è data swamp (palude di dati).

Fortunatamente, ci sono molti strumenti per filtrare e organizzare i dati in un data lake. Ad esempio, potreste soddisfare la necessità di uno schema creando un metastore Hive in formato ORC (Optimized Row Columnar). Una volta configurato, il metastore supporta query SQL veloci tramite un motore SQL parallelo come Presto. Il formato ORC è un archivio compresso orientato alle colonne e ottimizzato per Hive e funziona bene con Presto.

Apache Spark è un altro motore SQL parallelo. Sebbene possa funzionare con il formato ORC, funziona ancora meglio con Parquet, un altro archivio compresso orientato alle colonne. Spark può eseguire il partizionamento sia verticale che orizzontale sui file Parquet, producendo un piano di query che richiede la lettura solo dei dati necessari e può saltare i dati irrilevanti.

data lake

Data lakehouse

Databricks, la società dietro Spark e MLflow, offre anche il cosiddetto data lakehouse, che combina le migliori caratteristiche di data warehouse e data lake: “Un data lakehouse unisce il meglio dei data warehouse e dei data lake in un’unica piattaforma semplice per gestire tutti i vostri dati, analisi e casi d’uso dell’IA. Si basa su una base dati aperta e affidabile che gestisce in modo efficiente tutti i tipi di dati e applica un approccio di sicurezza e governance comune a tutti i dati e alle piattaforme cloud”, si legge nella definizione di Databricks.

La piattaforma Databricks Lakehouse include anche Unity Catalog, che fornisce una governance dettagliata per dati e intelligenza artificiale. Databricks afferma che il suo data lakehouse offre 12 volte il rapporto prezzo/prestazioni di un data warehouse.

Data lake in locale e nei cloud pubblici

Storicamente, i data lake sono stati implementati in locale utilizzando cluster Apache Hadoop e HDFS (Hadoop Distributed File System). Ciò che è cambiato negli ultimi tempi è stato l’arrivo del cloud, in particolare dei fornitori di cloud pubblico iperscalabile come Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform (GCP).

Tutti e tre questi provider cloud offrono prodotti di archiviazione di data lake: Amazon Simple Storage Service (Amazon S3) e Amazon EMR (in precedenza Amazon Elastic MapReduce), Azure Data Lake Store (ADLS) e Google Cloud Storage (GCS). Tutti e tre offrono inoltre servizi per l’acquisizione, l’elaborazione e l’analisi dei dati e per il machine learning. È molto più semplice e veloce creare, gestire e ridimensionare i data lake nel cloud rispetto alla gestione dei cluster Hadoop nel data center; il lato negativo è che alla fine le spese operative a lungo termine nel cloud potrebbero diventare significative.

Analisi e machine learning per data lake

Ho appena parlato dell’utilizzo di Presto e Apache Spark per query SQL più veloci su un data lake. SQL è solo uno dei modi per analizzare i dati, sebbene sia piuttosto importante e sia spesso il primo passo da compiere. In aggiunta, dovete considerare anche strumenti di business intelligence (Power BI, Tableau o Qlik), machine learning (SparkML o KNIME) e deep learning (TensorFlow o PyTorch).

I fornitori di cloud hyperscale dispongono di propri strumenti di analisi e machine learning che si connettono ai propri data lake. Amazon Athena utilizza Presto e Hive per eseguire query SQL sui dati in Amazon S3, mentre Amazon EMR è una piattaforma di Big Data in cloud per l’esecuzione di processi di elaborazione dati distribuiti su larga scala, query SQL interattive e applicazioni di machine learning utilizzando framework di analisi open source come Apache Spark, Apache Hive e Presto. Amazon SageMaker è invece un servizio completamente gestito per creare, addestrare e distribuire modelli di machine learning.

Azure Data Lake Analytics (ADLA) è un servizio di processo di analisi su richiesta (serverless) che semplifica i Big Data e usa U-SQL, ovvero SQL più C#. ADLA verrà sostituito da Azure Synapse Analytics, un servizio di analisi illimitato che unisce integrazione dei dati, data warehousing aziendale e analisi dei big data. Synapse permette di interrogare i dati alle vostre condizioni, utilizzando opzioni serverless o dedicate su larga scala. Combina inoltre funzionalità di data lake, data warehouse aziendale e query di dati operativi e può migrare automaticamente dati e codice da ADLA e da data warehouse. Synapse ha una profonda integrazione con Azure Machine Learning, Azure Cognitive Services e Power BI.

Google Cloud Storage offre un’integrazione nativa con una serie di potenti servizi Google Cloud, come BigQuery (data warehouse), Dataproc (ecosistema Hadoop), Dataflow (analisi dello streaming serverless), API Video Intelligence, API Cloud Vision e AI Platform.

Conclusione

I data lake sono diventati molto più utili dai tempi dei cluster Hadoop e di MapReduce. Presto e Apache Spark offrono processori SQL molto più veloci di MapReduce, grazie all’elaborazione in memoria e all’elaborazione parallela massiccia e agli schemi basati su Hive. I data lake basati sul cloud sono molto più facili e veloci da creare, gestire e scalare rispetto ai cluster on-premise. Infine, i data lake nel cloud si integrano perfettamente con un’ampia gamma di strumenti di analisi e intelligenza artificiale.