Data storageDatabase

Google Cloud Spanner, il super-database distribuito

Giornalista e collaboratore di TechWeekEurope, si occupa professionalmente di IT e nuove tecnologie da oltre vent'anni e ha collaborato con le principali testate italiane di settore

Follow on: Linkedin

Cloud Spanner cerca di unire la scalabilità dei database NoSQL con l’affidabilità di quelli classici

Google ha reso disponibile agli utenti della sua Google Cloud Platform una nuova piattaforma database che ha sviluppato internamente: Cloud Spanner. Si tratta di una piattaforma progettata per combinare i vantaggi dei database relazionali classici (soprattutto consistenza delle transazioni e supporto di SQL) con quelli dei database NoSQL (distribuzione dei dati, scalabilità e prestazioni).

I punti di forza di uno dei due approcci sono in pratica i punti deboli dell’altra, con il risultato che al crescere delle esigenze, specie nelle grandi imprese, entrambe le scelte rappresentano un compromesso. Nel 2007 Google ha iniziato a lavorare allo sviluppo di un database distribuito che superasse questa dicotomia e nel 2012 ha descritto in una pubblicazione i principi base di Cloud Spanner. Il nuovo database è stato poi man mano adottato in Google, ad esempio per AdWords e Google Play, e ora è disponibile a tutti.

I vantaggi di Cloud Spanner secondo Google
I vantaggi di Cloud Spanner secondo Google

Le caratteristiche chiave di Cloud Spanner stanno nel suo essere un database distribuito su più datacenter a livello globale ma che offre una latenza molto bassa – nell’ordine dei millisecondi – nella distribuzione delle transazioni, a favore della sua consistenza. Questo è un elemento importante per alcuni settori d’interesse per Google, come quello dei servizi finanziari. Essendo inoltre offerto come servizio cloud, adottarlo e demandarne la gestione a Google risulta più semplice che implementare in proprio qualcosa di paragonabile.

Nell’architettura di Cloud Spanner i dati vengono distribuiti in tempo reale tra gruppi di server in datacenter distribuiti: il sistema è progettato per scalare sino a milioni di server distribuiti in centinaia di dacenter per database che possono arrivare a migliaia di miliardi di righe. A seconda dei dati da gestire e dei server collegati, il sistema distribuisce i dati replicandoli fra i nodi e i client selezionano automaticamente la replica più opportuna. Questo funzionamento può essere ottimizzato in base alla singola applicazione, in modo da controllare la latenza che questa “vede” nella consultazione e nella replica dei dati.

Gli elementi della Cloud Platform di Google
Gli elementi principali della Cloud Platform di Google

In questa architettura distribuita la sincronizzazione delle transazioni è ottenuta grazie a un timestamping globale molto accurato, ottenuto collocando in ogni datacenter diversi nodi “time master” che come riferimento si basano sul sistema di geolocalizzazione satellitare GPS o su orologi atomici. La maggior parte dei time master di un datacenter usa il GPS e i nodi sono collocati in posizioni diverse per ridurre gli effetti di problemi alle antenne o all’interferenza. Si usano anche orologi atomici, in time master diversi, perché questi e i nodi GPS hanno possibili cause di malfunzionamento che sono completamente diverse.

Google spiega che Cloud Spanner è indicato per tutti i compiti per cui si adottano tipicamente i database relazionali ma che ne evidenziano i limiti, come i sistemi di inventory management e di gestione delle transazioni finanziarie. Sono già state sviluppate le sue librerie per i linguaggi più comuni come Java, Go, Python e Node.js. Per ora la piattaforma gestisce database distribuiti ma all’interno delle singole regioni della Google Cloud Platform, nel corso dell’anno questo limite sarà eliminato.