Creazione e gestione di database

Questa pagina descrive come creare, aggiornare ed eliminare i database Firestore con compatibilità MongoDB. Puoi creare più database Firestore per progetto. Puoi utilizzare più database per configurare ambienti di produzione e test, isolare i dati dei clienti e per la regionalizzazione dei dati.

Utilizzo del livello senza costi

Firestore offre un livello senza costi che ti consente di iniziare senza alcun costo.

Il livello senza costi si applica a un solo database Firestore per progetto. Il primo database creato in un progetto senza un database di livello senza costi riceverà il livello senza costi. Se il database con il livello senza costi applicato viene eliminato, il database successivo creato riceverà il livello senza costi.

Prima di iniziare

Prima di creare un database, devi completare le seguenti operazioni:

  1. Verifica che la fatturazione sia abilitata per il tuo Google Cloud progetto.

  2. Assegna i ruoli Identity and Access Management appropriati come descritto nella sezione successiva.

Ruoli obbligatori

Per creare e gestire i database, devi disporre del ruolo Owner o Datastore Owner Identity and Access Management. Questi ruoli concedono le autorizzazioni richieste.

Autorizzazioni obbligatorie

Per gestire i database, devi disporre delle seguenti autorizzazioni:

  • Crea un database: datastore.databases.create
  • Leggi la configurazione del database: 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 Firestore con compatibilità MongoDB, utilizza uno dei seguenti metodi:

Google Cloud Console
  1. Nella Google Cloud console, vai alla pagina Database.

    Vai a Database

  2. Fai clic su Crea un database Firestore.
  3. Inserisci un ID database.
  4. Seleziona Enterprise Edition.
  5. Seleziona Firestore con compatibilità MongoDB.
  6. Seleziona una località per il database.
  7. (Facoltativo) Se devi personalizzare la crittografia, fai clic su Mostra opzioni di crittografia e configura le opzioni di crittografia.
  8. Fai clic su Crea database.
Interfaccia a riga di comando di Firebase
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
Gcloud CLI

Utilizza il gcloud firestore databases create comando e imposta --edition=enterprise.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--enable-mongodb-compatible-data-access

Sostituisci quanto segue:

Per abilitare la protezione da eliminazione, aggiungi il flag --delete-protection. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disabiliti questa impostazione. Questa impostazione è disattivata per impostazione predefinita.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

Per aggiungere tag al database, utilizza il --tags flag. Ad esempio:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

Utilizza la google_firestore_database risorsa e imposta database_edition su ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

Sostituisci quanto segue:

  • DATABASE_ID: un ID database valido.
  • LOCATION: il nome di una regione o di una regione multipla di Firestore con compatibilità MongoDB .
  • DELETE_PROTECTION_ENABLEMENT: o DELETE_PROTECTION_DISABLED.DELETE_PROTECTION_ENABLED

Per abilitare la protezione da eliminazione, imposta delete_protection_state su DELETE_PROTECTION_ENABLED. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disabiliti questa impostazione. Questa impostazione è disattivata per impostazione predefinita.

ID database

Gli ID database validi includono gli ID conformi a quanto segue:

  • Include solo lettere, numeri e caratteri trattino (-).
  • Le lettere devono essere minuscole.
  • Il primo carattere deve essere una lettera.
  • L'ultimo carattere deve essere una lettera o un numero.
  • Minimo 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.

Se elimini un database, non puoi riutilizzare immediatamente l'ID database finché non sono trascorsi 5 minuti.

Elimina protezione

Utilizza la protezione da eliminazione per impedire l'eliminazione accidentale di un database. La protezione da eliminazione funziona nel seguente modo:

  • Non puoi eliminare un database con la protezione da eliminazione abilitata finché non la disabiliti.
  • La protezione da eliminazione è disattivata per impostazione predefinita.
  • Puoi abilitare la protezione da eliminazione quando crei il database oppure puoi aggiornare una configurazione del database per abilitarla.

Elenco database

Utilizza uno dei seguenti metodi per elencare i database:

Console

Nella Google Cloud console, vai alla pagina Database.

Vai a Database

Gcloud CLI

Utilizza il gcloud firestore databases list comando per elencare tutti i database nel tuo progetto.

gcloud firestore databases list

Visualizza i dettagli del database

Per visualizzare i dettagli di un singolo database, utilizza uno dei seguenti metodi:

Google Cloud Console
  1. Nella Google Cloud console, vai alla pagina Database.

    Vai a Database

  2. Seleziona un database dall'elenco dei database.
Gcloud CLI

Utilizza il gcloud firestore databases describe comando:

gcloud firestore databases describe --database=DATABASE_ID

Sostituisci DATABASE_ID con un ID database.

Aggiorna la configurazione del database

Per aggiornare le impostazioni di configurazione di un database, utilizza il gcloud firestore databases update comando.

Utilizza questo comando per modificare, abilitare o disabilitare 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 CLI
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 CLI
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. L'eliminazione di un database non comporta addebiti per le operazioni di eliminazione.

Se il database ha l'impostazione di protezione da eliminazione abilitata, devi prima disabilitarla.

Google Cloud Console
  1. Nella Google Cloud console, vai alla pagina Database.

    Vai a Database

  2. Fai clic su Visualizza altro nella colonna Azioni per il database che vuoi eliminare. Fai clic su Elimina. Viene visualizzata una finestra di dialogo.
  3. Nella finestra di dialogo Vuoi eliminare il database?, conferma l'eliminazione digitando l' ID database nel campo di testo. Fai clic su Elimina. La console ti informa dell'esito positivo o negativo dell'operazione.

    Se l'operazione non riesce, visualizza i dettagli del database e verifica che la protezione da eliminazione sia disabilitata. Per disabilitare la protezione da eliminazione, consulta Aggiorna l'impostazione di protezione da eliminazione.

Gcloud CLI

Utilizza il `gcloud firestore databases delete` comando.

gcloud firestore databases delete --database=DATABASE_ID

Sostituisci DATABASE_ID con l'ID del database da eliminare.

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, 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 punto nel tempo nel passato, nel periodo definito dalla finestra PITR:

    • Se PITR è abilitato per il tuo database, seleziona un minuto negli ultimi 7 giorni (o meno se PITR è stato abilitato meno di 7 giorni fa).
    • Se PITR non è abilitato, puoi selezionare un minuto nell'ultima ora.
    • Puoi controllare il timestamp più recente che puoi selezionare nella descrizione del database.

Console

  1. Nella Google Cloud console, vai alla pagina Database.

    Vai a Database

  2. Fai clic su Visualizza altro nella riga della tabella per il database che vuoi clonare. Fai clic su Clona. Viene visualizzata la finestra di dialogo Crea un clone.

  3. Nella finestra di dialogo Crea un clone, fornisci i parametri per la clonazione del database:

    1. Nel campo Assegna un ID al clone, un ID database per un nuovo database clonato. Questo ID database non deve essere associato a un database esistente.

    2. Nel campo Clona da, seleziona un punto nel tempo da utilizzare per la clonazione. L'ora selezionata corrisponde a un timestamp PITR, con una granularità di un minuto.

  4. Fai clic su Crea clone.

gcloud

Utilizza il gcloud firestore databases clone comando 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 del database di un database esistente che vuoi clonare. Il nome utilizza il formato projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: un timestamp PITR in formato RFC 3339, con una granularità di un 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/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

Se vuoi eseguire il binding ad alcuni tag durante la clonazione di un database, utilizza il comando precedente con il flag --tags, che è un elenco facoltativo di coppie KEY=VALUE di tag a cui eseguire il binding.

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' \
--tags=key1=value1,key2=value2

Per impostazione predefinita, il database clonato avrà la stessa configurazione di crittografia del database di origine. Per modificare la configurazione di crittografia, utilizza l'argomento --encryption-type:

  • (Impostazione predefinita) 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/example-source-db' \
--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'

Configura le autorizzazioni di accesso per database

Puoi utilizzare le condizioni Identity and Access Management per configurare le autorizzazioni di accesso a livello di database. Gli esempi seguenti utilizzano Google Cloud CLI per assegnare l'accesso condizionale a uno o più database. Puoi anche definire le condizioni IAM nella Google Cloud console.

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 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 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 determinato membro e ruolo

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 specifico. Ad esempio, alice@example.com.

Limitazioni

Puoi avere un massimo di 100 database per progetto. Puoi contattare l'assistenza per richiedere un aumento di questo limite.

Passaggi successivi