Richiedi Informazioni

Twitter: come archiviare 250 milioni di tweet al giorno su MySQL?

Durante la O’Reilly MySQL Conference 2011 Jeremy Cole, Database Architect per Twitter, ha spiegato in un talk come sia possibile archiviare 250 milioni di tweet usando Gizzard, un framework per la creazione di datastore distribuiti basato su MySQL.

Interessante, senza contare che da diverso tempo il sito di microblogging offre ai suoi utenti la possibilità di scaricare comodamente l’intero archivio dei propri tweet.

Analizziamo insieme il percorso compiuto dagli ingegneri di Twitter, e come tali casi siano applicabili in situazioni più comuni.

Da shard a datastore distribuiti.
Prima di approdare ai datastore distribuiti, l’idea iniziale era di archiviare i tweet pubblicati in un certo range orario in un unico shard. Tale soluzione però comportava l’esaurimento dello spazio su queste partizioni – e relativi slave di replicazione – costringendo la sostituzione delle macchine impiegate nel giro di tre settimane.

Gizzard, costruito su MySQL e il motore InnoDB, ha sopra di sé diversi elementi che costituiscono l’infrastruttura per la creazione dei datastore: T-Bird per l’archiviazione dei tweet, T-Flock per l’archiviazione degli indici secondari, Snowflake per la generazione di un ID univoco di ogni tweet.

Non si tratta una soluzione ottimale per la scalabilità secondo lo stesso ingegnere, ma è un pezzo portante dello scheletro di Twitter.

Allora, bisogna fermarsi ad un compromesso?
È evidente che ogni infrastrutture potrebbe presentare delle problematiche alle quali non si può porre una soluzione definitiva; un buon punto di partenza è individuare quali siano i punti cruciali e intervenire di conseguenza.

Ma, MySQL non è tutto.
Sebbene MySQL costituisca una buona parte dello scheletro di Twitter Hadoop, Cassandra e Vertica si rivelano allo stesso modo componenti essenziali per scopi differenti.

La scalabilità di un’architettura dipende anche – e soprattutto – dal codice ospitato, lo sai bene (e che l’hardware non può fare miracoli se il codice è scritto male); allo stesso modo le novità in questo settore non sempre possono costituire la soluzione ad ogni problema.

L’Open Source può fare la differenza.
Avrai notato come tanti dei “pezzi” di codice scritti da Twitter (ma non solo: anche Facebook e Tumblr, per fare un esempio) siano stati rilasciati come Open Source. Cosa vuol dire? Che si ha la garanzia di sapere cosa e come le parti di un’infrastruttura funzionano e dialogano tra di loro, e la possibilità di ottimizzarle per la maggior parte delle operazioni.

In Level iP facciamo largo uso di software Open Source, e ne abbiamo fatto nostro standard perché risponde a tutte le nostre esigenze: che siano sistemistiche, di automatizzazione, fino al software in fase di produzione. Il nostro sistema operativo preferito è Debian; per i nostri server di posta usiamo Postfix e Dovecot, ma non sono certo gli unici.