Creazione e gestione di database

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

Il database (default)

Se la tua app non richiede più database, usa il database (default).

Se non specifichi un database, le librerie client di Firestore e Google Cloud CLI si connettono al database (default) per impostazione predefinita.

Puoi utilizzare la quota gratuita solo con il database (default).

Ruoli obbligatori

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

Autorizzazioni obbligatorie

Per gestire i database, devi disporre delle seguenti autorizzazioni:

  • Crea un database: datastore.databases.create
  • Lettura della configurazione del database: datastore.databases.getMetadata
  • Configura un database: datastore.databases.update
  • Elimina un database: datastore.databases.delete

Crea un database

Per creare un database, utilizza uno dei seguenti metodi:

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

    Vai a Database

  2. Fai clic su Crea database.
  3. Seleziona una modalità di database. Fai clic su Continua.
  4. Configura il database. Inserisci un ID database. Seleziona una località. Seleziona le regole di sicurezza per client mobile e web. Fai clic su Crea database.
gcloud

Usa il comando gcloud firestore databases create.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

Sostituisci quanto segue:

--delete-protection è un flag facoltativo per abilitare la protezione da eliminazione. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disattivi questa impostazione. Questa impostazione è disattivata per impostazione predefinita.

interfaccia a riga di comando di Firebase
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

Sostituisci quanto segue:

--delete-protection è un argomento facoltativo per abilitare la protezione da eliminazione. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disattivi questa impostazione. Questa opzione è disabilitata per impostazione predefinita.

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 più regioni o regioni di 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 abilitare la protezione da eliminazione. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disattivi questa impostazione. Questa impostazione è disattivata per impostazione predefinita.

ID database

Gli ID database validi includono (default) e ID conformi a quanto segue:

  • Include 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.
  • 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 dall'eliminazione per impedire l'eliminazione accidentale di un database. Non puoi eliminare un database con la protezione dall'eliminazione abilitata finché non disabiliti questa protezione. La protezione dall'eliminazione è disattivata per impostazione predefinita. Puoi attivare la protezione dall'eliminazione quando crei il database oppure puoi aggiornare una configurazione del database per abilitare la protezione dall'eliminazione.

Configura le regole di sicurezza di Firestore per i tuoi database

Utilizza l'interfaccia a riga di comando di Firebase per eseguire il deployment delle regole di sicurezza di Firestore in ciascuno dei tuoi database. Consulta la guida alla gestione e al deployment delle regole di sicurezza di Firestore.

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 Firestore (default) in un progetto. Per creare un client connesso a un database denominato, imposta l'ID database quando crei l'istanza di un client.

Elenco database

Utilizza uno dei seguenti metodi per elencare i database:

Console

Nella console Google Cloud, vai alla pagina Database.

Vai a Database

gcloud

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

gcloud firestore databases list
interfaccia a riga di comando di Firebase

Usa il comando firebase firestore:databases:list per elencare tutti i database nel tuo progetto.

firebase firestore:databases:list

Visualizza dettagli database

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

gcloud

Usa il comando gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

interfaccia a riga di comando di Firebase

Usa il comando firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Sostituisci DATABASE_ID con un ID database.

Aggiorna configurazione database

Per aggiornare le impostazioni di configurazione di un database, utilizza il comando gcloud firestore databases update. Utilizza questo comando per modificare il tipo di database o per attivare/disattivare la protezione dall'eliminazione.

Modifica il tipo di database

Per aggiornare il tipo di un database, utilizza il comando gcloud firestore databases update con il flag --type=. Puoi modificare il tipo solo se il database è vuoto.

gcloud
gcloud firestore databases update --database=DATABASE_ID \
--type=DATABASE_TYPE

Sostituisci quanto segue:

  • DATABASE_ID: un ID database.
  • DATABASE_TYPE: firestore-native per la modalità Native o datastore-mode per la modalità Datastore.

Aggiornare l'impostazione della protezione dall'eliminazione

Per abilitare la protezione dall'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 dall'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 della protezione dall'eliminazione, devi prima disabilitare la protezione dall'eliminazione.

Se il database contiene dati di ricerca di App Engine o entità BLOB, devi prima eliminare questi dati.

L'eliminazione di un database non comporta l'eliminazione automatica dei trigger Eventarc per il database. L'attivatore interrompe la pubblicazione degli eventi, ma continua a esistere finché non elimini il trigger.

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

    Vai a Database

  2. Fai clic su Visualizza altro nella riga della tabella relativa al database da 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 se le operazioni sono riuscite o non riuscite.

    Se l'operazione non va a buon fine, visualizza i dettagli del database e verifica che la protezione dall'eliminazione sia disabilitata. Per disabilitare la protezione dall'eliminazione, consulta Aggiornare l'impostazione della protezione dall'eliminazione.

gcloud

Usa il comando `gcloud firestore systems delete`.

gcloud firestore databases delete --database=DATABASE_ID

Sostituisci DATABASE_ID con l'ID del database da eliminare.

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 database. I seguenti esempi utilizzano Google Cloud CLI per assegnare l'accesso condizionale a uno o più database. Puoi anche definire le condizioni IAM nella console Google Cloud.

Visualizza i criteri IAM esistenti

gcloud projects get-iam-policy PROJECT_ID

Imposta PROJECT_ID sul tuo ID progetto.

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

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

Cloud Monitoring

Le metriche Firestore sono riportate in due risorse monitorate.

Puoi esaminare le metriche aggregate a livello di database esaminando firestore.googleapis.com/Database. Le metriche riportate in firestore_instance vengono 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 Index delete per eliminare i dati di ricerca GAE. Se di recente hai eliminato i dati della Ricerca GAE, potrebbe trascorrere un periodo di attesa prima che tu possa eliminare il database.
  • Non puoi eliminare il database (default) se contiene entità BLOB. Utilizza l'API di eliminazione dell'archivio BLOB per eliminare i dati dell'archivio BLOB. Puoi verificare se il database (default) contiene dati dell'archivio BLOB 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.
  • La funzione Cloud Function v1 non supporta i database denominati Firestore. Utilizza i trigger di Cloud Firestore (2a generazione) per configurare gli eventi per i database denominati.
  • I trigger di funzione Firestore v1 e i trigger di evento Firestore potrebbero smettere di funzionare dopo l'eliminazione del database, anche se ne viene creato uno nuovo con lo stesso nome.

Passaggi successivi