Scelta tra la modalità nativa e la modalità Datastore

Quando crei un nuovo database Firestore, puoi configurare l'esecuzione del database in modalità Datastore in modo che il database sia 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. Con il meglio di 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, ma il nuovo modello di dati, gli aggiornamenti in tempo reale e le funzionalità della libreria client web e per dispositivi mobili non lo sono. 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 di Datastore:

  • Coerenza finale: le query Datastore diventano a elevata coerenza, a meno che non richieda esplicitamente la coerenza finale.
  • Le query nelle transazioni non sono più richieste come query predecessore.
  • 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à Firestore che non sono compatibili con Datastore:

  • Il progetto accetterà richieste API Datastore e rifiuterà le richieste API Firestore.
  • Il progetto utilizzerà gli indici Datastore invece degli indici Firestore.
  • Per questo progetto puoi utilizzare librerie client Datastore, ma non librerie client Firestore.
  • Le funzionalità Firestore in tempo reale non saranno disponibili.
  • Nella console Google Cloud, il database utilizza il visualizzatore Datastore.

Upgrade automatico alla modalità Datastore

I database Datastore esistenti verranno aggiornati automaticamente 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à nativa e Datastore utilizzano la stessa struttura di prezzo e sono disponibili nelle stesse località. Le località e i prezzi sono descritti in dettaglio nelle seguenti pagine:

Firestore in modalità Native

Firestore in modalità Datastore

Scelta di una modalità di database

Quando crei un nuovo database Firestore, devi selezionare una modalità di database. Non puoi utilizzare sia la modalità Native sia la modalità Datastore nello stesso progetto. Quando scegli una modalità di database, ti consigliamo di seguire questi suggerimenti:

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

    Firestore in modalità Datastore ti consente di utilizzare le architetture di server Datastore consolidate eliminando le limitazioni di Datastore fondamentali. 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à offline e in tempo reale. La modalità nativa può scalare automaticamente a milioni di client in contemporanea.

Confronto delle funzioni

La tabella seguente mette a confronto il comportamento di sistema delle modalità del database:

Firestore in
modalità Native
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 a elevata coerenza Nuovo livello di archiviazione a elevata coerenza
Query e transazioni
  • Query a elevata coerenza nell'intero database
  • Fino a 500 documenti per transazione per qualsiasi numero di raccolte.
  • Rimuove le limitazioni di coerenza precedenti di Datastore
  • Query a elevata coerenza nell'intero database
  • Le transazioni possono accedere a qualsiasi numero 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 ricevere aggiornamenti in tempo reale.

Durante l'ascolto di un documento o un insieme di documenti, i tuoi clienti ricevono una notifica in caso di modifiche ai dati e inviano i set di dati più recenti.

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++
  • Unità
Librerie client Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
Security
  • Identity and Access Management (IAM) gestisce l'accesso al database
  • Le regole di sicurezza di Firestore supportano l'autenticazione e l'autenticazione serverless per le librerie client web e per dispositivi mobili.
IAM gestisce l'accesso al database
Prestazioni Scala automaticamente a milioni di client in contemporanea. 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ù 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 prezzo per le operazioni di entità e documenti.

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

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

Per ulteriori dettagli sui prezzi, consulta:

Console Visualizzatore Firestore della Console Firebase e di Google Cloud Console Visualizzatore Datastore Google Cloud 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 PHP 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à Native alla modalità Datastore e viceversa

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

Cambia il database in modalità Native:

gcloud

Usa il comando gcloud alpha firestore database update (Aggiornamento database gcloud firestore) per impostare il 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"

Cambia il database in modalità Datastore:

gcloud

Utilizza il comando gcloud alpha firestore database update (Aggiornamento database gcloud alpha) per modificare il 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"