Scelta tra la modalità nativa e la modalità Datastore

Quando crei un nuovo database Firestore, puoi configurare l'istanza di database per l'esecuzione in modalità Datastore, rendendo il database compatibile con le versioni precedenti di Datastore. Questa pagina ti aiuta a comprendere la differenza tra le due modalità di database Firestore: modalità Native e modalità Datastore.

Firestore in modalità Native

Firestore è la prossima versione principale di Datastore e un re-branding del prodotto. Sfruttando al meglio Datastore e Firebase Realtime Database, Firestore è un database di documenti NoSQL creato per offrire scalabilità automatica, prestazioni elevate e facilità di sviluppo delle applicazioni.

Firestore introduce nuove funzionalità come:

  • Un nuovo livello di archiviazione a elevata coerenza
  • Un modello di dati a livello di raccolta e documento
  • Aggiornamenti in tempo reale
  • Librerie client web e per dispositivi mobili

Firestore è compatibile con le versioni precedenti di Datastore, al contrario del nuovo modello dei dati, degli aggiornamenti in tempo reale e delle funzionalità delle librerie client web e per dispositivi mobili. Per accedere a tutte le nuove funzionalità di Firestore, devi utilizzare Firestore in modalità Native.

Firestore in modalità Datastore

Firestore in modalità Datastore utilizza il comportamento del sistema Datastore, ma accede al livello di archiviazione di Firestore, rimuovendo le seguenti limitazioni del datastore:

  • Coerenza finale: le query di Datastore diventano altamente coerenti, a meno che non venga richiesta esplicitamente la coerenza finale.
  • Le query nelle transazioni non sono più necessarie come query dei predecessori.
  • Le transazioni non sono più limitate a 25 gruppi di entità.
  • Le scritture a un gruppo di entità non sono più limitate a 1 al secondo.

La modalità Datastore disabilita le funzionalità di Firestore non compatibili con Datastore:

  • Il progetto accetterà le richieste API Datastore e negherà le richieste API Firestore.
  • Il progetto utilizzerà indici Datastore anziché indici Firestore.
  • Con questo progetto puoi utilizzare le librerie client Datastore, ma non le librerie client di Firestore.
  • Le funzionalità di Firestore in tempo reale non saranno disponibili.
  • Nella console Google Cloud, il database utilizza il visualizzatore Datastore.

Upgrade automatico alla modalità Datastore

Per i database Datastore esistenti verrà eseguito l'upgrade automatico a Firestore in modalità Datastore, I nuovi progetti che richiedono un database Datastore devono utilizzare Firestore in modalità Datastore.

Prezzi e località

I database in modalità Native e in modalità Datastore utilizzano la stessa struttura di prezzi e sono disponibili nelle stesse località. I prezzi e le località sono descritti in dettaglio nelle seguenti pagine:

Firestore in modalità Native

Firestore in modalità Datastore

Scegliere una modalità di database

Quando crei un nuovo database Firestore, devi selezionare una modalità di database. Puoi avere database in modalità Datastore e in modalità Native nello stesso progetto, ma ogni database sarà di un solo tipo. Quando scegli una modalità di database, consigliamo quanto segue:

  • Utilizza Firestore in modalità Datastore per i nuovi progetti server.

    Firestore in modalità Datastore consente di utilizzare le architetture dei server Datastore stabilite, rimuovendo al contempo le limitazioni fondamentali di Datastore. La modalità Datastore può scalare automaticamente fino a milioni di scritture al secondo.

  • Utilizza Firestore in modalità Native per le nuove app web e per dispositivi mobili.

    Firestore offre librerie client web e per dispositivi mobili con funzionalità in tempo reale e offline. La modalità Native può scalare automaticamente a milioni di client simultanei.

Confronto delle funzionalità

La tabella seguente confronta il comportamento del sistema delle modalità di database:

Firestore in
modalità nativa
Firestore in
modalità Datastore
Modello dei dati Database di documenti organizzato in documenti e raccolte. Entità organizzate in tipi e gruppi di entità.
Livello di archiviazione Nuovo livello di archiviazione sempre a elevata coerenza Nuovo livello di archiviazione sempre a elevata coerenza
Query e transazioni
  • Query a elevata coerenza nell'intero database
  • Rimuove i precedenti limiti di coerenza di Datastore
  • Query a elevata coerenza nell'intero database
  • Le transazioni possono accedere a un numero qualsiasi di gruppi di entità
Supporto dell'API Datastore v1 No, le richieste vengono rifiutate
Supporto dell'API Firestore v1 No, le richieste vengono rifiutate
Aggiornamenti in tempo reale

Supporta la possibilità di ascoltare un documento o un insieme di documenti per gli aggiornamenti in tempo reale.

Mentre ascoltano un documento o un insieme di documenti, i tuoi clienti vengono informati di eventuali modifiche ai dati e inviano il set di dati più recente.

Non supportata
Persistenza dei dati offline Le librerie client web e per dispositivi mobili supportano la persistenza dei dati offline. Non supportata
Librerie client Librerie client di Firestore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Librerie client di Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • C++
Sicurezza
  • Identity and Access Management (IAM) gestisce l'accesso al database
  • Le regole di sicurezza di Firestore supportano l'autenticazione e l'autorizzazione serverless per le librerie client web e per dispositivi mobili
IAM gestisce l'accesso al database
Prestazioni Scala automaticamente a milioni di client simultanei. Scala automaticamente a milioni di scritture al secondo.
SLA (accordo sul livello del servizio) SLA di Firestore SLA di Firestore
Località

Entrambe le modalità supportano le stesse località:

  • Stati Uniti (più regioni)
  • Europa (più regioni)
  • Oregon
  • Los Angeles
  • Salt Lake City
  • Las Vegas
  • Montréal
  • Los Angeles
  • Carolina del Sud
  • Virginia del Nord
  • San Paolo
  • Londra
  • Francoforte
  • Varsavia
  • Zurigo
  • Mumbai
  • Singapore
  • Giacarta
  • Hong Kong
  • Taiwan
  • Tokyo
  • Osaka
  • Seul
  • Sydney
Prezzi

Entrambe le modalità utilizzano la stessa struttura di prezzi per le operazioni relative a entità e documenti.

Firestore in modalità Datastore non prevede alcun costo per le operazioni piccole.

Entrambe le modalità utilizzano la stessa struttura di prezzi per i dati memorizzati e per la larghezza di banda di rete.

Per ulteriori dettagli sui prezzi, vedi:

Console Visualizzatore Firestore console Firebase e console Google Cloud Visualizzatore Datastore console Google Cloud
Spazi dei nomi Non supportata Spazi dei nomi supportati
Integrazione della libreria client di App Engine

Non supportato nell'ambiente standard di App Engine per i runtime Python 2.7 e PHP 5.5

Supportate nell'ambiente standard di App Engine, tutti gli altri runtime

Supportate nell'ambiente flessibile di App Engine, tutti i runtime

Supportata in tutti i runtime

Creazione di un nuovo database

Puoi creare un nuovo database Firestore in modalità Native o in modalità Datastore. Questa scelta non dipende dalle modalità di eventuali database esistenti nel progetto.

Per saperne di più, vedi Creare e gestire database.

Passaggio dalla modalità Native alla modalità Datastore e viceversa

Se il database è vuoto, puoi passare dalla modalità Native alla modalità Datastore e viceversa.

Cambia il database in modalità Native:

gcloud

Utilizza il comando gcloud firestore Datastore update per impostare il database sulla modalità Native.

gcloud firestore databases update --type=firestore-native

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"

Cambia il database in modalità Datastore:

gcloud

Utilizza il comando gcloud firestore database update per impostare il tuo database in modalità Datastore.

 gcloud firestore databases update --type=datastore-mode

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=type"