Un libro che chiunque lavori con i dati deve possedere
Designing Data Intensive Applications: un’opera impegnativa e corposa ma estremamente valida
Designing Data Intensive Applications è un libro molto noto e spesso incluso nella lista dei “top 10 libri da leggere per sviluppatori”.
Abbiamo letto questo libro nel corso del 2022 e per via della sua lunghezza (oltre 400 pagine) e densità terminarlo ci ha richiesto circa 60 ore.
Sfatiamo quindi subito il mito delle challenge del numero di libri letti all’anno: dieci Fabio Volo (che citiamo con rispetto, servono anche quelli e alcuni li abbiamo anche letti) non fanno un libro tecnico di 500 pagine e per di più in inglese.
L’opera
A suo modo “Designing Data Intensive Applications” è un libro peculiare.
Per prima cosa è un libro estremamente tecnico ma esclusivamente descrittivo. Non ci sono esercizi e anche i code sample sono sporadici, estremamente ridotti.
È un libro quindi adatto a chi già conosce qualcosa degli aspetti pratici. Diversamente potrebbe risultare davvero troppo astratto per poterlo comprendere.
Il testo parte dalle basi, strutture dati semplici, loro interazione e performance.
Mostra però fin da subito la sua natura, addentrandosi a fondo in ciascuno di essi e mostrando che nel mondo delle strutture basi l’apparente semplicità sia in realtà solo un costrutto di astrazione.
Naturalmente sono presenti tutti i temi obbligati del mondo delle strutture dati. Citiamo solo a campione:
- Scalabilità
- Sicurezza
- Tipi di strutture dati
- ACID
- Batch processing & MapReduce
- Partizionamento
- Encoding
- Sistemi distribuiti
Il contenuto di “Designing Data Intensive Applications”
Il libro comprende 12 capitoli suddivisi in 3 parti.
- Fondamenti dei sistemi di dati: come i database memorizzano i dati, gli indici e il loro aggiornamento, i tipi di file utilizzati.
- Dati distribuiti: replica dei dati su più nodi, partizionamento, come vengono eseguite le transazioni.
- Dati derivati: elaborazione batch (compresa MapReduce) e stream.
Il testo è creato in modo da essere fruibile anche atomicamente, quindi ciascun argomento rimanda alla propedeuticità se necessario. Tuttavia si consiglia una lettura cover to cover per meglio coglierne tutte le sfumature.
Ho apprezzato molto le mappe che corredano il testo, simili a mappe di Dungeons & Dragons, disegnate dall’autore. Queste mappe sono anche citate in molte altre recensioni del testo. Purtroppo nella versione ebook come sempre le immagini si perdono un po’.
Un punto di forza e di ingaggio del libro sono le citazioni, che la rendono una meta-opera letteraria. Non solo citazioni accademiche, ma anche da blog, chat, HackerNews, altri libri. Una vera full immersion nel mondo delle strutture dati.
Un punto debole del testo è che inizia a sentire l’età. Pubblicato nel 2017, senza alcuna successiva riedizione, non comprende la folle evoluzione che è avvenuta nel mondo dell’analisi dei dati negli ultimi 5 anni.
Sintetizzare l’opera sarebbe davvero poco sensato. Ma se durante la lettura serve una mappa concettuale, Keyvan Akbary ne ha creata una pubblica su GitHub che è accessibile a questo link.
Strutture dati e algoritmi
Se sei interessato a queste tematiche, ti segnaliamo una selezione dei nostri migliori articoli tecnici:
- SOLID Principi per il Design del Software
- SQL: guida introduttiva all’interrogazione dei database
- Paradigmi di programmazione: storia e caratteristiche
- OOP 101: Introduzione all’Object-Oriented Programming
- Data Mesh, cos’è e a cosa serve
- Design di architetture software: da dove iniziare
- Sviluppiamo una REST API con Python e Django
- Docker cosa è e perché usarlo
- API cosa sono e come funzionano
L’autore
Martin Kleppman PhD è professore associato presso l’Università di Cambridge. Oltre all’ovvia presenza nel mondo informatico e accademico, è appassionato di teatro, musica e scrittura e sovente condivide anche questo suo aspetto sui social network.