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 un insieme di operazioni in cui tutte riescono o nessuna viene eseguita.
  • Alta disponibilità di letture e scritture. Datastore viene eseguito nei data center di Google, che utilizzano la ridondanza per ridurre al minimo l'impatto dei punti di errore.
  • Scalabilità elevata con alte prestazioni. 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 si adattino alle dimensioni del set di risultati, non alle dimensioni del set di dati.
  • Archiviazione e query flessibili dei dati. Datastore si mappa in modo naturale ai linguaggi di scripting e object-oriented 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 fortemente coerenti.
  • Crittografia dei dati inattivi. Datastore cripta automaticamente tutti i dati prima che vengano scritti su disco e li decripta automaticamente 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 i database relazionali

Sebbene l'interfaccia di Datastore abbia molte delle stesse funzionalità simili ai database relazionali, come database NoSQL, varia nel modo in cui descrive le relazioni tra gli oggetti dati. Ecco un confronto generale tra i concetti di Datastore e dei database relazionali:

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

A differenza delle righe di una tabella di database relazionale, le entità di Datastore dello stesso tipo possono avere proprietà diverse e entità diverse possono avere proprietà con lo stesso nome, ma tipi di valori diversi. Queste caratteristiche uniche implicano un modo diverso di progettare e gestire i dati per sfruttare la possibilità di scalare automaticamente. In particolare, Datastore è diverso da un database relazionale tradizionale per i seguenti aspetti importanti:

  • Datastore è progettato per scalare automaticamente fino a set di dati molto grandi, consentendo alle applicazioni di mantenere prestazioni elevate quando ricevono più traffico:
    • Le scritture di Datastore si adattano distribuendo automaticamente i dati in base alle necessità.
    • Le letture Datastore sono scalabili perché le uniche query supportate sono quelle il cui rendimento varia in base alle dimensioni del set di risultati (anziché del set di dati). Ciò significa che una query il cui insieme di risultati contiene 100 entità ha lo stesso rendimento se esegue ricerche su più di cento entità o su un milione. Questa proprietà è il motivo principale per cui alcuni tipi di query non sono supportati.
  • Poiché tutte le query vengono eseguite da indici creati in precedenza, i tipi di query che possono essere eseguiti sono più restrittivi di quelli consentiti in un database relazionale con SQL. In particolare, Datastore non include il supporto per le operazioni di join, i filtri di disuguaglianza su più proprietà o i filtri sui 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à (anche se puoi scegliere di applicare questo requisito nel codice della tua applicazione).

A cosa serve

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

  • Cataloghi di prodotti che forniscono inventario e dettagli dei prodotti in tempo reale per un rivenditore.
  • Profili utente che offrono un'esperienza personalizzata in base alle attività e alle preferenze passate 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 tutti i casi d'uso. Ad esempio, Datastore non è un database relazionale e non è una soluzione efficace per i dati di analisi.

Ecco 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), valuta la possibilità di utilizzare Cloud SQL.
  • Se non hai bisogno del supporto per le transazioni ACID o se i tuoi dati non sono altamente strutturati, valuta la possibilità di utilizzare Bigtable.
  • Se hai bisogno di eseguire query interattive in un sistema di elaborazione analitica online (OLAP), valuta la possibilità di utilizzare BigQuery.
  • Se devi archiviare BLOB immutabili di grandi dimensioni, come immagini o filmati di grandi dimensioni, valuta la possibilità di utilizzare Cloud Storage.

Per ulteriori informazioni su altre opzioni di database, consulta la panoramica dei servizi di database.

Passaggi successivi

Connessione a Datastore con App Engine

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

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