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 di 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.
(default)
.
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
- Lettura configurazione 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
-
Nella console Google Cloud, vai alla pagina Database.
- Fai clic su Crea database.
- Seleziona una modalità di database. Fai clic su Continua.
- Configura il database. Inserisci un ID database. Seleziona una località. Seleziona le regole di sicurezza per i client web e per dispositivi mobili. Fai clic su Crea database.
gcloud
Utilizza il comando gcloud firestore databases create
.
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
Sostituisci quanto segue:
- DATABASE_ID: un ID database valido.
- LOCATION: il nome di una multiregione o regione di Firestore.
- DATABASE_TYPE:
firestore-native
per la modalità Native o la modalità datastore per la modalità Datastore.
--delete-protection
è un flag facoltativo per abilitare 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.
interfaccia a riga di comando di Firebase
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
Sostituisci quanto segue:
- DATABASE_ID: un ID database valido.
- LOCATION: il nome di una multiregione o regione di Firestore.
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
oDISABLED
.
Il database creato è sempre in modalità Native Firestore.
--delete-protection
è un argomento facoltativo per abilitare la protezione da eliminazione. Non puoi eliminare un database con la protezione da eliminazione abilitata finché non disabiliti questa impostazione. Questa impostazione è 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 multiregione o regione di Firestore.
- DATABASE_TYPE:
FIRESTORE_NATIVE
per la modalità Native oDATASTORE_MODE
per la modalità Datastore. - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
oDELETE_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 disabiliti 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 essere simile 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 del database prima che siano 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 da eliminazione abilitata finché non disabiliti la protezione dall'eliminazione. La protezione da eliminazione è disabilitata per impostazione predefinita. Puoi abilitare la protezione dall'eliminazione quando crei il database oppure aggiornare una configurazione del database per abilitare la protezione dall'eliminazione.
Configura le regole di sicurezza 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 per la gestione e il deployment delle regole di sicurezza Firestore.
Accedere 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.
gcloud
Utilizza 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
firebase firestore:databases:list
Visualizza i dettagli del database
Per visualizzare i dettagli di un singolo database, utilizza il comando gcloud firestore databases describe
:
gcloud
gcloud firestore databases describe --database=DATABASE_ID
Sostituisci DATABASE_ID con un ID database.
Aggiorna configurazione del 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 l'eliminazione della protezione.
Modifica il tipo di database
Per aggiornare il tipo di database, utilizza il comando gcloud firestore databases update
con il flag --type=
. Puoi cambiare 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 odatastore-mode
per la modalità Datastore.
Aggiornare 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 dall'eliminazione, devi prima disabilitare la protezione da 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 elimina automaticamente alcun trigger Eventarc per quel database. L'attivatore smette di pubblicare eventi, ma continua a esistere finché non lo elimini.
Console
-
Nella console Google Cloud, vai alla pagina Database.
- Fai clic su Mostra altro nella riga della tabella relativa al database che vuoi eliminare. Fai clic su Elimina. Viene visualizzata una finestra di dialogo.
Nella finestra di dialogo Vuoi eliminare il database?, conferma l'eliminazione digitando l'ID del database nel campo di testo. Fai clic su Elimina. La console segnala l'esito positivo o negativo dell'operazione.
Se l'operazione non riesce, visualizza i dettagli del database e verifica che la protezione dall'eliminazione sia disabilitata. Per disattivare la protezione da eliminazione, vedi Aggiornare l'impostazione di protezione da eliminazione.
gcloud
Usa il comando `gcloud firestore database 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 gestione di identità e accessi per configurare le autorizzazioni di accesso a livello di singolo 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 progettoEMAIL
: un indirizzo email che rappresenta uno specifico Account Google. 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 uno specifico Account Google. 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 progettoEMAIL
: un indirizzo email che rappresenta uno specifico Account Google. Ad esempio,alice@example.com
.
Cloud Monitoring
Le metriche Firestore sono riportate in due risorse monitorate.
Puoi controllare le metriche aggregate a livello di database osservando 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 dati della Ricerca GAE, potrebbe essere necessario attendere un periodo di attesa prima di poter eliminare il database. - Non puoi eliminare il database
(default)
se contiene entità BLOB. Utilizza l'API Blobstore delete 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 prima che siano trascorsi 5 minuti dall'eliminazione.
- La Cloud Function v1 non supporta i database con nome Firestore. Utilizza i trigger di Cloud Firestore (2a generazione) per configurare gli eventi per i database denominati.
- I attivatori di funzioni Firestore v1 e i attivatori di eventi Firestore potrebbero smettere di funzionare dopo l'eliminazione del database, anche se viene creato un nuovo database con lo stesso nome.