Gestire i database

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:

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
  1. Nella console Firebase, vai a Database e spazio di archiviazione > Firestore.

    Vai a Firestore

  2. Fai clic su Aggiungi database.
  3. Seleziona Versione Standard. Fai clic su Avanti.
  4. Inserisci un ID database.
  5. Seleziona una località per il tuo database. Fai clic su Avanti.
  6. 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
  7. 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:

--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) ENABLED o DISABLED.
  • REALTIME_UPDATES: (solo Enterprise) ENABLED o DISABLED.
  • DELETE_PROTECTION_ENABLEMENT: ENABLED o DISABLED.
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_NATIVE per la modalità Native o DATASTORE_MODE per la modalità Datastore.
  • DELETE_PROTECTION_ENABLEMENT: DELETE_PROTECTION_ENABLED o DELETE_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.

Vai a 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: ENTERPRISE
  • Firestore Data Access: DATA_ACCESS_MODE_ENABLED o DATA_ACCESS_MODE_DISABLED
  • MongoDB Compatible Data Access: DATA_ACCESS_MODE_ENABLED o DATA_ACCESS_MODE_DISABLED
  • Realtime Updates: REALTIME_UPDATES_ENABLED o REALTIME_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
  1. Nella console Firebase, vai a Database e spazio di archiviazione > Firestore.

    Vai a Firestore

  2. Nella scheda Dati, sopra la visualizzazione della tabella dei dati per il database, fai clic su , quindi seleziona Elimina database.
  3. 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

  1. Apri la pagina Database e spazio di archiviazione > Firestore nella console Firebase.

  2. Accanto al nome del database, fai clic su , quindi su Clona database. Viene visualizzato il riquadro Clona database.

  3. Nel riquadro Clona database, fornisci i parametri per la clonazione del database:

    1. 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.

    2. Nel campo Clona da, seleziona un momento da utilizzare per la clonazione. L'ora selezionata corrisponde a un timestamp PITR, con granularità al minuto.

  4. 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.00Z o 2025-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.00Z o 2025-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 progetto
  • EMAIL: 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 progetto
  • EMAIL: 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 progetto
  • EMAIL: 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.

Passaggi successivi