Spanner è un sistema di database completamente gestito e altamente affidabile. Anche se Spanner si è evoluto per diventare un sistema di gestione di database relazionali, ha le sue radici come sistema di archiviazione non relazionale e con coppie chiave-valore e conserva le caratteristiche fondamentali di un sistema di questo tipo. Di conseguenza, puoi utilizzare Spanner come database non relazionale (NoSQL) ed eseguire la migrazione da altri database non relazionali a Spanner. Questo documento ti aiuta a capire se Spanner è la soluzione giusta per i tuoi carichi di lavoro non relazionali.
I database NoSQL sono stati introdotti in un periodo in cui i database relazionali tradizionali non disponevano di funzionalità per supportare le applicazioni emergenti che richiedevano elevata scalabilità, disponibilità ed elasticità di calcolo. Lo hanno fatto sacrificando diverse funzionalità spesso fondamentali per la gestione dei dati, come transazioni, coerenza e query ad hoc. Spanner è stato progettato per supportare sia la natura esigente delle applicazioni ad alta disponibilità sia le funzionalità fornite dai database relazionali tradizionali, in modo che i clienti possano usufruire di entrambi gli insiemi di funzionalità.
Con Spanner, puoi iniziare con esigenze di archiviazione non relazionali semplici e scalare l'applicazione in base alle necessità.
In che modo Spanner soddisfa i criteri dei database NoSQL
Spanner soddisfa i seguenti criteri chiave per i tuoi workload NoSQL.
Scalabilità e prestazioni
I database NoSQL hanno acquisito popolarità grazie alla loro capacità di scalare letture e scritture orizzontalmente. Con Spanner, non devi preoccuparti della scalabilità o delle prestazioni. I database Spanner basati su coppie chiave-valore possono essere scalati orizzontalmente per supportare centinaia di milioni di richieste di lettura o scrittura al secondo e petabyte di dati. La capacità di calcolo di Spanner si adatta al carico di lavoro, mantenendo un profilo coerente e a bassa latenza anche quando l'applicazione viene scalata di diversi ordini di grandezza.
API NoSQL
In genere, si accede ai database relazionali tradizionali utilizzando SQL, che presenta una curva di apprendimento per gli sviluppatori non esperti di database relazionali. Anche i client di questi database in genere si basano su connessioni permanenti e richiedono il deployment dell'infrastruttura di pool di connessioni per poter essere scalati. Al contrario, l'API Spanner è basata su un modello di richiesta e risposta gRPC/HTTP2 che gestisce automaticamente gli errori di connessione. Spanner fornisce API NoSQL di lettura/scrittura semplici, native del linguaggio ed efficienti che non richiedono conoscenze di SQL. Inoltre, i client Spanner non richiedono il pooling delle connessioni per poter essere scalabili.
Completamente gestito
Uno dei principali vantaggi dei database NoSQL è che sono percepiti come più facili da gestire. In quanto servizio completamente gestito, Spanner non comporta alcun incarico operativo per i clienti. Spanner esegue aggiornamenti hardware e software senza tempi di inattività in background, mantenendo la compatibilità con le versioni precedenti. L'API e la semantica di Spanner sono le stesse come se le operazioni venissero eseguite su un database di una singola macchina e non richiedono la conoscenza dell'architettura interna di Spanner. Spanner viene eseguito su implementazioni che vanno da 1/10 di un nodo a decine di migliaia di nodi, con una scalabilità automatica e reattiva grazie a un autoscaler gestito.
e semistrutturati
Spanner supporta tipi di dati flessibili come JSON e BYTES che vengono utilizzati per archiviare dati semistrutturati o non strutturati. Come per altri database NoSQL, puoi utilizzare questi tipi di dati per evitare di specificare tutto lo schema di archiviazione in anticipo.
Controllo degli accessi
Come altri database NoSQL, Spanner supporta il controllo dell'accesso basato su IAM. Gli amministratori possono configurare e amministrare i criteri di controllo degli accessi senza memorizzare nomi utente e password nel database.
Differenze tra Spanner e i database NoSQL tradizionali
Spanner offre i seguenti vantaggi rispetto ai database NoSQL tradizionali.
Transazioni
Man mano che le applicazioni diventano più complesse, spesso devono eseguire operazioni transazionali su più righe e tabelle nel database. Con Spanner, non è necessario eseguire la migrazione a un archivio dati transazionale man mano che il database cresce, perché Spanner supporta completamente le transazioni di lettura/scrittura. In quanto database conforme ad ACID, Spanner mantiene sempre la coerenza transazionale del tuo database, indipendentemente dalle dimensioni.
Modellazione dei dati
La progettazione dello schema nei database NoSQL può essere innaturale a causa della necessità di adattare tutti i dati a una tabella e di denormalizzarli forzatamente a causa dell'impossibilità di eseguire join. Con Spanner, puoi specificare lo schema senza dover ricorrere a una singola tabella o alla denormalizzazione. Per ottimizzare i pattern di accesso che toccano più tabelle, puoi utilizzare l'interlacciamento delle tabelle. Puoi anche eseguire unioni tra tabelle.
Query ad hoc
Anche se utilizzi principalmente l'API NoSQL, spesso è comunque utile eseguire query ad hoc per scopi di debug o analisi. Spanner è conforme al linguaggio per query SQL standard. Puoi utilizzare la priorità delle richieste per isolare il traffico ad hoc a bassa priorità dal traffico online oppure utilizzare Data Boost di Spanner per eseguire query di analisi su risorse di calcolo completamente isolate dal traffico del database online.
Indici secondari altamente coerenti
Le applicazioni spesso richiedono indici secondari per supportare le ricerche a bassa latenza. I database NoSQL tipici offrono indici secondari eventualmente coerenti o impongono vincoli sulle dimensioni di un indice. Ciò può complicare la logica dell'applicazione, che deve aggirare questi vincoli. Spanner offre indici secondari altamente coerenti su larga scala senza limitazioni di dimensioni. In questo modo, puoi concentrarti sulla logica dell'applicazione e non preoccuparti di problemi di coerenza.
Spanner è adatto alle tue esigenze di database NoSQL?
Spanner è un sistema di archiviazione dei dati flessibile che supporta sia i casi d'uso SQL sia quelli NoSQL. Sebbene alcune applicazioni inizino con esigenze di archiviazione semplici, man mano che aumentano di complessità, richiedono più funzionalità in genere non offerte dai database NoSQL, come transazioni, indici secondari coerenti e un linguaggio di query flessibile. Con Spanner, non hai vincoli da queste limitazioni e puoi far crescere la tua applicazione in base alle esigenze.
La maggior parte dei carichi di lavoro non relazionali è ideale per Spanner. Spanner non solo offre un'API di lettura/scrittura NoSQL semplice, ma è anche supportato da elevata disponibilità, elevata affidabilità, bassa latenza, elasticità di calcolo ed estrema scalabilità. Spanner ti consente di consolidare diversi carichi di lavoro su un'unica piattaforma flessibile.