Panoramica di Datastore

Firestore in modalità Datastore (Datastore) è un database di documenti NoSQL creato per offrire scalabilità automatica, prestazioni elevate e facilità di sviluppo delle applicazioni. Le funzionalità di Datastore includono:

  • Transazioni atomiche. Datastore può eseguire una serie di operazioni in cui tutte le operazioni hanno esito positivo o nessuna.
  • Alta disponibilità di letture e scritture. Datastore viene eseguito nei data center di Google, che utilizzano la ridondanza per ridurre al minimo l'impatto da punti di errore.
  • Grande scalabilità con prestazioni elevate. Datastore utilizza un'architettura distribuita per gestire automaticamente la scalabilità. Datastore utilizza una combinazione di indici e vincoli di query in modo che le query vengano scalate in base alle dimensioni del set di risultati, non a quelle del set di dati.
  • Archiviazione ed esecuzione di query sui dati in modo flessibile. Datastore è mappato in modo naturale a linguaggi di scripting e orientati agli oggetti ed è esposto alle applicazioni tramite più client. Fornisce inoltre un linguaggio di query simile a SQL.
  • Elevata coerenza. Datastore garantisce che tutte le query siano a elevata coerenza.
  • Crittografia dei dati inattivi. Datastore cripta automaticamente tutti i dati prima che vengono scritti su disco e decripta automaticamente i dati quando vengono letti da un utente autorizzato. Per saperne di più, vedi Crittografia lato server.
  • Completamente gestito senza tempi di inattività pianificati. Google gestisce l'amministrazione del servizio in modo che tu possa concentrarti sulla tua applicazione. La tua applicazione può comunque utilizzare Datastore quando il servizio riceve un upgrade pianificato.

Confronto con database relazionali

Sebbene l'interfaccia Datastore presenti molte delle funzionalità simili ai database relazionali, di un database NoSQL, varia nella modalità che descrive le relazioni tra gli oggetti dati. Ecco un confronto generale dei concetti di Datastore e database relazionale:

Concetto Datastore Firestore Database relazionale
Categoria dell'oggetto Tipo Gruppo di raccolte Tabella
Un oggetto Entità Documento Riga
Dati singoli di un oggetto Proprietà Campo Colonna
ID univoco di un oggetto Chiave ID documento Chiave primaria

A differenza delle righe in una tabella di database relazionale, le entità Datastore dello stesso tipo possono avere proprietà diverse, mentre entità diverse possono avere proprietà con lo stesso nome ma tipi di valore diversi. Queste caratteristiche uniche implicano un modo diverso di progettare e gestire i dati per sfruttare la capacità di scalabilità automatica. In particolare, Datastore si differenzia da un database relazionale tradizionale per i seguenti aspetti importanti:

  • Datastore è progettato per scalare automaticamente su set di dati di grandi dimensioni, consentendo alle applicazioni di mantenere prestazioni elevate quando ricevono più traffico:
    • Datastore scrive la scalabilità distribuendo automaticamente i dati in base alle esigenze.
    • Datastore legge la scalabilità perché le uniche query supportate sono quelle le cui prestazioni vengono scalate in base alla dimensione del set di risultati (anziché al set di dati). Ciò significa che una query il cui set di risultati contiene 100 entità viene eseguita allo stesso modo indipendentemente dal fatto che cerchi più di cento o un milione di entità. Questa proprietà è il motivo principale per cui alcuni tipi di query non sono supportati.
  • Poiché tutte le query vengono gestite da indici creati in precedenza, i tipi di query che possono essere eseguiti sono più restrittivi di quelli consentiti su un database relazionale con SQL. In particolare, Datastore non include il supporto per le operazioni di join, il filtro delle disuguaglianze su più proprietà o l'applicazione di filtri ai dati in base ai risultati di una sottoquery.
  • A differenza dei database relazionali che applicano uno schema, Datastore è senza schema. Non richiede che le entità dello stesso tipo abbiano un insieme coerente di proprietà (sebbene tu possa scegliere di applicare questo requisito nel tuo codice dell'applicazione).

Per cosa è utile

Datastore è ideale per le applicazioni che si basano su dati strutturati a disponibilità elevata su larga scala. Puoi utilizzare Datastore per archiviare ed eseguire query su tutti i tipi di dati seguenti:

  • Cataloghi dei prodotti che forniscono l'inventario in tempo reale e i dettagli dei prodotti di un rivenditore.
  • Profili utente che offrono un'esperienza personalizzata in base alle preferenze e alle attività precedenti dell'utente.
  • Transazioni basate sulle proprietà ACID. Ad esempio, il trasferimento di fondi da un conto bancario a un altro.

Altre opzioni di archiviazione e database

Datastore non è ideale per ogni caso d'uso. Ad esempio, Datastore non è un database relazionale e non è una soluzione efficace per i dati analitici.

Di seguito sono riportati alcuni scenari comuni in cui probabilmente dovresti prendere in considerazione un'alternativa a Datastore:

  • Se hai bisogno di un database relazionale con supporto SQL completo per un sistema di elaborazione delle transazioni online (OLTP), prendi in considerazione Cloud SQL.
  • Se non hai bisogno di assistenza per le transazioni ACID o se i tuoi dati non sono altamente strutturati, prendi in considerazione Bigtable.
  • Se hai bisogno di eseguire query interattive in un sistema di elaborazione analitica online (OLAP), prendi in considerazione BigQuery.
  • Se devi archiviare BLOB di grandi dimensioni immutabili, ad esempio immagini o filmati di grandi dimensioni, prendi in considerazione Cloud Storage.

Per maggiori informazioni sulle altre opzioni di database, consulta la panoramica dei servizi di database.

Passaggi successivi

Connessione a Datastore con App Engine

Il runtime standard Go di App Engine si connette a Datastore utilizzando l'API Go Datastore. Per un elenco completo dei contenuti del pacchetto datastore, consulta la documentazione di riferimento del pacchetto datastore.

Non puoi utilizzare la libreria client di Cloud Datastore con le applicazioni Go nell'ambiente standard di App Engine.