Questa pagina descrive come creare, aggiornare ed eliminare i database Cloud Firestore. Puoi creare più database Cloud Firestore per progetto. Puoi utilizzare più database per configurare ambienti di produzione e di test, per isolare i dati dei clienti e per la regionalizzazione dei dati.
Ruoli e autorizzazioni richiesti
Per creare e gestire i database, devi disporre del seguente ruolo Identity and Access Management:
- Cloud Datastore Owner
(
roles/datastore.owner)
Questo ruolo concede le seguenti autorizzazioni necessarie per creare e gestire i database:
- Crea un database:
datastore.databases.create - Configurazione del database di lettura:
datastore.databases.getMetadata - Configura un database:
datastore.databases.update - Elimina un database:
datastore.databases.delete - Clona un database:
datastore.databases.clone
Crea un database
Per creare un database, utilizza uno dei seguenti metodi:
Console
Console Firebase
-
Nella console Firebase, vai a Database e spazio di archiviazione > Firestore.
- Fai clic su Aggiungi database.
- Seleziona Versione Standard. Fai clic su Avanti.
- Inserisci un ID database.
- Seleziona una località per il tuo database. Fai clic su Avanti.
-
Seleziona una modalità di avvio per Cloud Firestore Security Rules:
- Modalità di test
- Ideale per iniziare a utilizzare le librerie client web e per dispositivi mobili, ma consente a chiunque di leggere e sovrascrivere i tuoi dati. Dopo i test, assicurati di esaminare la sezione Proteggi i tuoi dati.
- Modalità di produzione
- Rifiuta tutte le operazioni di lettura e scrittura dei client web e su dispositivi mobili. I tuoi server delle applicazioni autenticati (Node.js, Python, Java) possono comunque accedere al tuo database
- Fai clic su Crea.
gcloud
Utilizza il comando gcloud firestore databases create.
-
Per creare un database Cloud Firestore Standard:
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --edition=standard --type=DATABASE_TYPE
Sostituisci quanto segue:
- DATABASE_ID: un ID database valido.
- LOCATION: il nome di una multiregione o regione Cloud Firestore.
- DATABASE_TYPE:
firestore-nativeper la modalità nativa odatastore-modeper la modalità Datastore.
--delete-protection è un flag facoltativo per attivare la protezione da eliminazione.
Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disabiliti questa impostazione. Questa impostazione è disattivata per impostazione predefinita.
Per aggiungere tag al database, utilizza il flag --tags. Ad esempio:
--tags=123/environment=production,123/costCenter=marketing--tags=tagKeys/333=tagValues/444
Interfaccia a riga di comando di Firebase
firebase firestore:databases:create DATABASE_ID \n--location=LOCATION \n[--edition EDITION] \n[--firestore-data-access FIRESTORE_ACCESS] \n[--realtime-updates REALTIME_UPDATES] \n[--delete-protection DELETE_PROTECTION_ENABLEMENT]
Sostituisci quanto segue:
- DATABASE_ID: un ID database valido.
- LOCATION: il nome di una regione o multi-regione Cloud Firestore.
- EDITION: per le funzionalità Enterprise, imposta su
enterprise. - FIRESTORE_ACCESS: (solo Enterprise)
ENABLEDoDISABLED. - REALTIME_UPDATES: (solo Enterprise)
ENABLEDoDISABLED. - DELETE_PROTECTION_ENABLEMENT:
ENABLEDoDISABLED.
Terraform
resource "google_firestore_database" "database" { project = "project-id" name = DATABASE_ID location_id = LOCATION type = DATABASE_TYPE // Optional delete_protection_state = DELETE_PROTECTION_STATE }
Sostituisci quanto segue:
- DATABASE_ID: un ID database valido.
- LOCATION: il nome di una regione o multi-regione Cloud Firestore.
- DATABASE_TYPE:
FIRESTORE_NATIVEper la modalità Native oDATASTORE_MODEper la modalità Datastore. - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLEDoDELETE_PROTECTION_DISABLED.
delete_protection_state è un argomento facoltativo per attivare la protezione da eliminazione. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non la disabiliti. Questa impostazione è disattivata per impostazione predefinita.
ID database
Un ID database valido deve essere conforme alle seguenti regole:
- Includi solo lettere, numeri e trattini (
-). - Le lettere devono essere minuscole.
- Il primo carattere deve essere una lettera.
- L'ultimo carattere deve essere una lettera o un numero.
- Almeno 4 caratteri.
- Massimo 63 caratteri.
- Non deve essere un UUID o assomigliare a un UUID. Ad esempio, non utilizzare un ID come
f47ac10b-58cc-0372-8567-0e02b2c3d479.
Esiste un'eccezione a queste regole: la versione Standard creerà un database denominato (default) se non inserisci un ID.
Tieni presente che, dopo aver eliminato un database, non puoi riutilizzarne l'ID per circa 5 minuti.
Elimina protezione
Utilizza la protezione da eliminazione per evitare l'eliminazione accidentale di un database. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non la disabiliti. La protezione da eliminazione è disattivata per impostazione predefinita. Puoi aggiornare la configurazione del database per attivare o disattivare la protezione da eliminazione.
Configura Cloud Firestore Security Rules per i tuoi database
Utilizza l'interfaccia a riga di comando Firebase per eseguire il deployment di Cloud Firestore Security Rules in ciascuno dei tuoi database. Consulta la guida alla gestione e al deployment di Cloud Firestore Security Rules.
Accedi a un database denominato con una libreria client
Un database denominato include qualsiasi database non denominato (default). Per impostazione predefinita, gli SDK Firebase e le librerie client delle API di Google si connettono al database Cloud Firestore (default) in un progetto. Per creare un client connesso a un database denominato, imposta l'ID del database quando crei un'istanza di un client.
Elenco database
Utilizza uno dei seguenti metodi per elencare i tuoi database:
Console
Nella console Google Cloud, vai alla pagina Database.
gcloud
Utilizza il comando gcloud firestore databases list per elencare tutti i database del tuo progetto.
gcloud firestore databases list
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:databases:list per elencare tutti i database del tuo progetto.
firebase firestore:databases:list
Visualizza dettagli database
Per visualizzare i dettagli di un singolo database, utilizza uno dei seguenti metodi:
gcloud
Utilizza il comando gcloud firestore databases describe:
gcloud firestore databases describe --database=DATABASE_ID
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:databases:get:
firebase firestore:databases:get DATABASE_ID
L'output per un database Enterprise include i seguenti campi:
Edition:ENTERPRISEFirestore Data Access:DATA_ACCESS_MODE_ENABLEDoDATA_ACCESS_MODE_DISABLEDMongoDB Compatible Data Access:DATA_ACCESS_MODE_ENABLEDoDATA_ACCESS_MODE_DISABLEDRealtime Updates:REALTIME_UPDATES_ENABLEDoREALTIME_UPDATES_DISABLED
Sostituisci DATABASE_ID con un ID database.
Aggiorna la configurazione del database
Per aggiornare le impostazioni di configurazione di un database, utilizza il comando gcloud firestore
databases
update.
Utilizza questo comando per attivare o disattivare la protezione da eliminazione.
Aggiorna l'impostazione di protezione da eliminazione
Per abilitare la protezione da eliminazione su un database, utilizza il comando gcloud firestore databases
update con il flag --delete-protection. Ad esempio:
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
Sostituisci DATABASE_ID con un ID database.
Per disabilitare la protezione da eliminazione su un database, utilizza il comando gcloud firestore databases
update con il flag --no-delete-protection. Ad esempio:
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
Sostituisci DATABASE_ID con un ID database.
Elimina un database
Per eliminare un database, utilizza la console o lo strumento a riga di comando.
Se nel database è abilitata l'impostazione di protezione da eliminazione, devi prima disabilitare la protezione da eliminazione.
Se il database contiene dati di ricerca App Engine o entità blob, devi prima eliminare questi dati.
L'eliminazione di un database non comporta l'eliminazione automatica di eventuali triggerEventarc per quel database. Il trigger smette di inviare eventi, ma continua a esistere finché non lo elimini.
L'eliminazione di un database non comporta addebiti per le operazioni di eliminazione.
Console
-
Nella console Firebase, vai a Database e spazio di archiviazione > Firestore.
- Nella scheda Dati, sopra la visualizzazione della tabella dei dati per il database, fai clic su , quindi seleziona Elimina database.
- Segui le istruzioni per eliminare il database.
gcloud
Utilizza il comando "gcloud firestore databases delete".
gcloud firestore databases delete --database=DATABASE_ID
Sostituisci DATABASE_ID con l'ID del database da eliminare. Per eliminare il database predefinito, utilizza l'ID '(default)'
Clona un database
Puoi clonare un database esistente in un timestamp selezionato in un nuovo database:
Il database clonato è un nuovo database che verrà creato nella stessa località del database di origine.
Per creare un clone, Cloud Firestore utilizza i dati di recupero point-in-time (PITR) del database di origine. Il database clonato include tutti i dati e gli indici.
Per impostazione predefinita, il database clonato verrà criptato nello stesso modo del database di origine, utilizzando la crittografia predefinita di Google o la crittografia CMEK. Puoi specificare un tipo di crittografia diverso o utilizzare una chiave diversa per la crittografia CMEK.
Il timestamp ha una granularità di un minuto e specifica un momento nel passato, nel periodo definito dalla finestra PITR:
- Se il PITR è abilitato per il tuo database, seleziona un minuto qualsiasi degli ultimi 7 giorni (o meno se il PITR è stato abilitato meno di 7 giorni fa).
- Se il PITR non è abilitato, puoi selezionare un minuto qualsiasi nell'ultima ora.
- Puoi controllare il timestamp più recente che puoi scegliere nella descrizione del tuo database.
Console
Apri la pagina Database e spazio di archiviazione > Firestore nella console Firebase.
Accanto al nome del database, fai clic su , quindi su Clona database. Viene visualizzato il riquadro Clona database.
Nel riquadro Clona database, fornisci i parametri per la clonazione del database:
Nel campo ID database, inserisci un ID database per il nuovo database clonato. L'ID database non deve essere già utilizzato da un database esistente.
Nel campo Clona da, seleziona un momento da utilizzare per la clonazione. L'ora selezionata corrisponde a un timestamp PITR, con granularità al minuto.
Fai clic su Clona.
gcloud
Utilizza il comando gcloud firestore databases
clone per clonare un database:
gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'
Sostituisci quanto segue:
SOURCE_DATABASE: il nome di un database esistente che vuoi clonare. Il nome utilizza il formato
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.PITR_TIMESTAMP: un timestamp PITR nel formato RFC 3339, con granularità al minuto. Ad esempio,
2025-06-01T10:20:00.00Zo2025-06-01T10:30:00.00-07:00.DESTINATION_DATABASE_ID: un ID database per un nuovo database clonato. Questo ID database non deve essere associato a un database esistente.
Esempio:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
Se vuoi eseguire l'associazione ad alcuni tag durante la clonazione di un database, utilizza il comando precedente con il flag --tags, che è un elenco facoltativo di coppie CHIAVE=VALORE di tag da associare.
Esempio:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'
Per impostazione predefinita, il database clonato avrà la stessa configurazione di crittografia del database di origine. Per modificare la configurazione della crittografia, utilizza l'argomento --encryption-type:
- (Predefinito)
use-source-encryption: utilizza la stessa configurazione di crittografia del database di origine. google-default-encryption: utilizza la crittografia predefinita di Google.customer-managed-encryption: utilizza la crittografia CMEK. Specifica un ID chiave nell'argomento--kms-key-name.
L'esempio seguente mostra come configurare la crittografia CMEK per il database clonato:
gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'
Interfaccia a riga di comando di Firebase
Utilizza il comando firebase firestore:databases:clone per clonare un database:
firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'
Sostituisci quanto segue:
SOURCE_DATABASE: il nome di un database esistente che vuoi clonare. Il nome utilizza il formato
projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.DESTINATION_DATABASE: un nome per un nuovo database clonato. Il nome utilizza il formato
projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID. Questo nome di database non deve essere associato a un database esistente.PITR_TIMESTAMP: un timestamp PITR nel formato RFC 3339, con granularità al minuto. Ad esempio,
2025-06-01T10:20:00.00Zo2025-06-01T10:30:00.00-07:00. Se non viene specificato, lo snapshot scelto sarà l'ora corrente, arrotondata per difetto al minuto.
Per impostazione predefinita, il database clonato avrà la stessa configurazione di crittografia del database di origine. Per modificare la configurazione della crittografia, utilizza l'argomento --encryption-type:
- (Predefinito)
USE_SOURCE_ENCRYPTION: utilizza la stessa configurazione di crittografia del database di origine. GOOGLE_DEFAULT_ENCRYPTION: utilizza la crittografia predefinita di Google.CUSTOMER_MANAGED_ENCRYPTION: utilizza la crittografia CMEK. Specifica un ID chiave nell'argomento--kms-key-name.
Configura le autorizzazioni di accesso per database
Puoi utilizzare le condizioni di Identity and Access Management per configurare le autorizzazioni di accesso a livello di singolo database. Gli esempi seguenti utilizzano Google Cloud CLI per assegnare l'accesso condizionale per uno o più database. Puoi anche definire le condizioni IAM nella console Google Cloud.
Visualizza le policy IAM esistenti
gcloud projects get-iam-policy PROJECT_ID
Imposta PROJECT_ID sull'ID progetto.
Concedi l'accesso a un database
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
Imposta quanto segue:
PROJECT_ID: il tuo ID progettoEMAIL: un indirizzo email che rappresenta un Account Google specifico. Ad esempio,alice@example.com.DATABASE_ID: un ID database.TITLE: un titolo facoltativo per l'espressione.DESCRIPTION: una descrizione facoltativa dell'espressione.
Concedi l'accesso a tutti i database tranne uno
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
Imposta quanto segue:
PROJECT_ID: il tuo ID progettoEMAIL: un indirizzo email che rappresenta un Account Google specifico. Ad esempio,alice@example.com.DATABASE_ID: un ID database.TITLE: un titolo facoltativo per l'espressione.DESCRIPTION: una descrizione facoltativa dell'espressione.
Rimuovi le policy per un membro e un ruolo specifici
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all
Imposta quanto segue:
PROJECT_ID: il tuo ID progettoEMAIL: un indirizzo email che rappresenta un Account Google specifico. Ad esempio,alice@example.com.
Cloud Monitoring
Le metriche Cloud Firestore vengono riportate in due risorse monitorate.
Puoi ispezionare le metriche aggregate a livello di database esaminando
firestore.googleapis.com/Database. Le metriche riportate in firestore_instance sono aggregate a livello di progetto.
Limitazioni
- Puoi avere un massimo di 100 database per progetto. Puoi contattare l'assistenza per richiedere un aumento di questo limite.
- Non puoi eliminare il database
(default)se contiene dati di ricerca GAE. Utilizza l'API di eliminazione dell'indice per eliminare i dati di ricerca di GAE. Se di recente hai eliminato i dati di GAE Search, potrebbe essere necessario un periodo di attesa prima di poter eliminare il database. - Non puoi eliminare il tuo database
(default)se contiene entità blob. Utilizza l'API di eliminazione di Blobstore per eliminare i dati di Blobstore. Puoi verificare se il tuo database(default)contiene dati Blobstore eseguendo la seguente query GQL nella console Google Cloud:SELECT * FROM __BlobInfo__. - Non puoi riutilizzare un ID database fino a 5 minuti dopo l'eliminazione.
- Cloud Functions (1ª gen.) non supporta i database denominati Firestore. Utilizza i trigger di Cloud Firestore (2ª gen.) per configurare gli eventi per i database denominati.
- I trigger di funzioni Firestore v1 e i trigger di eventi Firestore potrebbero smettere di funzionare dopo l'eliminazione del database, anche se viene creato un nuovo database con lo stesso nome.