Scelta tra la modalità nativa e la modalità Datastore

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

Firestore in modalità Native

Firestore è la prossima versione principale di Datastore e il rebranding del prodotto. Sfruttando il meglio di Datastore e di Firebase Realtime Database,Firestore è un database di documenti NoSQL pensato per la scalabilità automatica, le prestazioni elevate e la 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, ma non lo sono il nuovo modello dei dati, gli aggiornamenti in tempo reale e le funzionalità della libreria client per dispositivi mobili e Web. Per accedere a tutte le nuove funzionalità di Firestore, devi utilizzareFirestore 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 Datastore diventano altamente coerenti, a meno che non richiedi esplicitamente la coerenza finale.
  • Non è più necessario che le query nelle transazioni siano 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 dell'API Datastore e negherà le richieste dell'API Firestore.
  • Il progetto utilizzerà gli indici Datastore anziché gli indici Firestore.
  • Con questo progetto puoi utilizzare le librerie client Datastore, ma non le librerie client Firestore.
  • Le funzionalità in tempo reale di Firestore non saranno disponibili.
  • Nella console, il database utilizzerà il visualizzatore Datastore.

Upgrade automatico alla modalità Datastore

Verrà eseguito automaticamente l'upgrade dei database Datastore a Firestore in modalità Datastore. I nuovi progetti che richiedono un database Datastore devono utilizzareFirestore in modalità Datastore.

Prezzi e località

I database in modalità nativa e in modalità Datastore utilizzano la stessa struttura dei prezzi e sono disponibili nelle stesse località. Le tariffe e le località sono descritte in dettaglio nelle pagine seguenti:

Firestore in modalità Native

Firestore in modalità Datastore

Scelta di una modalità di database

Quando crei un nuovo database Firestore, devi selezionare una modalità database. Non è possibile utilizzare sia la modalità nativa sia la modalità Datastore nello stesso progetto. Quando scegli una modalità di database, ti consigliamo di:

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

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

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

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

Confronto delle funzioni

La seguente tabella mette a confronto 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 coerente Nuovo livello di archiviazione sempre coerente
Query e transazioni
  • Query a coerenza elevata in tutto il database
  • Fino a 500 documenti per transazione per qualsiasi numero di collezioni.
  • Rimuove le limitazioni di coerenza precedenti di Datastore
  • Query a coerenza elevata in tutto il database
  • Le transazioni possono accedere a un numero qualsiasi di gruppi di entità
Supporto per l'API Datastore v1 No, le richieste vengono rifiutate
Assistenza per l'API VMware v1 No, le richieste vengono rifiutate
Aggiornamenti in tempo reale

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

Durante l'ascolto di un documento o un insieme di documenti, i tuoi clienti ricevono una notifica delle modifiche apportate e inviano il set di dati più recente.

Funzionalità non supportata
Persistenza dei dati offline Le librerie client per dispositivi mobili e web supportano la persistenza dei dati offline. Funzionalità 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
Sicurezza
  • Identity and Access Management (IAM) gestisce l'accesso al database
  • Le regole di sicurezza Firestore supportano l'autenticazione e l'autorizzazione serverless per le librerie client per dispositivi mobili e web
IAM gestisce l'accesso al database
Prestazioni Scala automaticamente a milioni di client simultanei. Massimo 10.000 scritture al secondo. 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 posizioni:

  • Stati Uniti (più aree geografiche)
  • Europa (più aree geografiche)
  • 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 dei prezzi per le operazioni con entità e documenti.

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

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

Per ulteriori informazioni sui prezzi, consulta:

Console Visualizzatore Firestore nella Console Firebase e nella console Visualizzatore Datastore Console
Spazi dei nomi Funzionalità non supportata Spazi dei nomi supportati
Integrazione della libreria client di App Engine

Non supportato nell'ambiente standard App Engine Python 2.7 e runtime 5.5

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

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

Supportato in tutti i runtime

Passare dalla modalità nativa alla modalità Datastore

Se il database è vuoto, puoi passare dalla modalità nativa alla modalità Datastore.

Passa al modalità nativa del database:

gcloud

Usa il comando gcloud alpha firestore database update per aggiornare il tuo database sulla modalità Native.

$ gcloud alpha 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"

Passa al modalità Datastore:

gcloud

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

$ gcloud alpha 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"