Scelta tra la modalità nativa e la modalità Datastore

Quando crei un database Firestore, devi scegliere tra due modalità: modalità Native o modalità Datastore. Questa pagina spiega la differenza tra le due modalità.

Scegliere una modalità database

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

Quando scegli una modalità database, ti consigliamo di:

  • Utilizzare Firestore in modalità Native per tutte le nuove applicazioni (server, mobile e web).

    Firestore in modalità Native utilizza un modello dei dati basato su documenti conforme agli standard di settore. Oltre a un database a elevata coerenza e scalabile, Firestore in modalità Native fornisce la sincronizzazione dei dati in tempo reale e funzionalità di backend-as-a-service.

  • Utilizzare Firestore in modalità Datastore se la tua app dipende dall'API Datastore.

    La modalità Datastore è completamente supportata ed è consigliata per le applicazioni che dipendono dall'API Datastore. La modalità Native e la modalità Datastore condividono un livello di archiviazione sottostante con le stesse funzionalità di disponibilità, coerenza e scalabilità.

Firestore in modalità Native

Firestore è la prossima versione principale di Datastore e un rebranding del prodotto. Basato sul 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 dei 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 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:

  • Tutte le query Datastore sono ora a elevata coerenza, a meno che tu non richieda esplicitamente la coerenza finale.
  • Le query nelle transazioni non devono più essere query di antenati.
  • 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 disattiva 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 anziché gli indici Firestore.
  • Puoi utilizzare le librerie client Datastore con questo progetto, ma non le librerie client Firestore.
  • Le funzionalità in tempo reale di Firestore non saranno disponibili.
  • Nella Google Cloud console, il database utilizzerà il visualizzatore Datastore.

Prezzi e località

I database in modalità Native e in modalità Datastore utilizzano la stessa struttura dei 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

Confronto delle funzioni

La seguente tabella confronta il comportamento del sistema delle modalità 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 sull'intero database
  • Le transazioni possono accedere a un numero qualsiasi di raccolte e documenti
  • Rimuove le precedenti limitazioni di coerenza di Datastore
  • Query a elevata coerenza sull'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.

Durante l'ascolto di un documento o di un insieme di documenti, i client ricevono una notifica di eventuali modifiche ai dati e viene inviato l'insieme 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 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
SLA (accordo sul livello del servizio) SLA di Firestore SLA di Firestore
Località

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

Prezzi

Entrambe le modalità utilizzano la stessa struttura dei prezzi per le operazioni su entità e documenti.

Firestore in modalità Datastore non addebita le piccole operazioni.

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

Per maggiori dettagli sui prezzi, consulta le seguenti pagine:

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

Non supportata negli ambienti di runtime Python 2.7 e PHP 5.5 dell'ambiente standard di App Engine

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

Supportata nell'ambiente flessibile di App Engine, tutti gli ambienti di runtime

Supportata in tutti gli ambienti di runtime

Crea 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ù, 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.

Modifica il database in modalità Native:

gcloud

Utilizza il comando gcloud firestore databases update per modificare il database in modalità Native.

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

Sostituisci DATABASE_ID con l'ID del 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: l'ID progetto
  • DATABASE_ID: l'ID database

Modifica il database in modalità Datastore:

gcloud

Utilizza il comando gcloud firestore databases update per modificare il database in modalità Datastore.

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

Sostituisci DATABASE_ID con l'ID del 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: l'ID progetto
  • DATABASE_ID: l'ID database