Scelta tra la modalità nativa e la modalità Datastore

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

Firestore in modalità Native

Firestore è la prossima versione principale di Datastore e è un rebranding del prodotto. Sfruttando 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 le seguenti funzionalità:

  • Un 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 le nuove funzionalità relative al modello dei dati, agli aggiornamenti in tempo reale e alle librerie client web e mobile non lo sono. Per accedere a tutte le funzionalità di Firestore, devi usare 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:

  • Tutte le query Datastore sono ora a elevata coerenza, a meno che non richiedi esplicitamente la coerenza finale.
  • Le query nelle transazioni non devono più essere 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à di Firestore che non sono compatibili con Datastore:

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

Upgrade automatico alla modalità Datastore

Verrà eseguito l'upgrade automatico a Firestore in modalità Datastore dei database Datastore esistenti. I nuovi progetti che richiedono un database Datastore dovrebbero usare Firestore in modalità Datastore.

Prezzi e località

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

Firestore in modalità Native

Firestore in modalità Datastore

Scegli una modalità di database

Quando crei un nuovo database Firestore, devi selezionare una modalità di database. Nello stesso progetto possono essere presenti database in modalità Datastore e in modalità Native, 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 i limiti 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 mobile.

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

Confronto delle funzionalità

La tabella seguente mette a confronto il comportamento del sistema delle modalità di 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 Un livello di archiviazione a elevata coerenza. Un livello di archiviazione a elevata coerenza.
Query e transazioni
  • Query a elevata coerenza in tutto il database
  • Rimuove i precedenti limiti di coerenza di Datastore
  • Query a elevata coerenza in tutto il 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 aggiornamenti in tempo reale.

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

Funzionalità non supportata
Persistenza dei dati offline Le librerie client web e per dispositivi mobili 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
  • C++
Sicurezza
  • Identity and Access Management (IAM) gestisce l'accesso ai 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 ai database
Prestazioni Scala automaticamente fino a milioni di client simultanei. Scala automaticamente fino a milioni di scritture al secondo.
SLA (accordo sul livello del servizio) SLA (accordo sul livello del servizio) di Firestore SLA (accordo sul livello del servizio) di Firestore
Località

Entrambe le modalità supportano le stesse posizioni. Per un elenco dettagliato delle località, consulta le seguenti pagine:

Prezzi

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

Firestore in modalità Datastore non addebita costi per le operazioni ridotte.

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 le seguenti pagine:

Console Visualizzatore Firestore della console Firebase e Google Cloud Visualizzatore Datastore della console Google Cloud
Spazi dei nomi Funzionalità 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

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

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

Funzionalità supportata in tutti i runtime

Crea un nuovo database

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

Per saperne di più, consulta Creare e gestire i database.

Passare dalla modalità Native alla modalità Datastore e viceversa

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

Imposta il database in modalità Native:

gcloud

Usa il comando gcloud firestore logs update per cambiare il database in modalità Native.

gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'

Sostituisci DATABASE_ID con l'ID del tuo database.

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/DATABASE_ID?updateMask=type"

Sostituisci quanto segue:

  • PROJECT_ID: ID progetto
  • DATABASE_ID: l'ID del database

Passa al database in modalità Datastore:

gcloud

Utilizza il comando gcloud firestore logs update per cambiare il database in modalità Datastore.

 gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'

Sostituisci DATABASE_ID con l'ID del tuo database.

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/DATABASE_ID?updateMask=type"

Sostituisci quanto segue:

  • PROJECT_ID: ID progetto
  • DATABASE_ID: l'ID del database