Criar e gerenciar bancos de dados
Esta página descreve como criar, atualizar e excluir bancos de dados do Firestore. É possível criar vários bancos de dados do Firestore por projeto. É possível usar vários bancos de dados para configurar ambientes de produção e teste, isolar dados de clientes e regionalizar os dados.
O banco de dados (default)
Se o app não exigir vários bancos de dados, use o (default)
.
Se você não especificar um banco de dados, as bibliotecas de cliente do Firestore
e a Google Cloud CLI vão se conectar ao banco de dados (default)
por padrão.
(default)
.
Funções exigidas
Para criar e gerenciar bancos de dados, você precisa do papel de gerenciamento de identidade e acesso Owner
ou Datastore Owner
. Esses papéis concedem as permissões necessárias.
Permissões necessárias
Para gerenciar bancos de dados, você precisa das seguintes permissões:
- Criar um banco de dados:
datastore.databases.create
- Ler configuração de banco de dados:
datastore.databases.getMetadata
- Configurar um banco de dados:
datastore.databases.update
- Excluir um banco de dados:
datastore.databases.delete
criar um banco de dados
Para criar um banco de dados, use um dos seguintes métodos:
Console
-
No Console do Google Cloud, acesse a página Bancos de Dados.
- Clique em Criar banco de dados.
- Selecione um modo de banco de dados. Clique em Continuar.
- Configurar o banco de dados. Insira um ID do banco de dados. Selecione um local. Selecione regras de segurança para clientes da Web e de dispositivos móveis. Clique em Criar banco de dados.
gcloud
Use o comando gcloud firestore databases create
.
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
Substitua:
- DATABASE_ID: um ID válido do banco de dados.
- LOCATION: o nome de uma multirregião ou região do Firestore.
- DATABASE_TYPE:
firestore-native
para o modo nativo oudatastore-mode
para o modo Datastore.
--delete-protection
é uma sinalização opcional para ativar a proteção contra exclusão.
Não é possível excluir um banco de dados com a proteção contra exclusão ativada até que essa configuração seja desativada. Esta configuração fica desativada por padrão.
CLI do Firebase
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
Substitua:
- DATABASE_ID: um ID válido do banco de dados.
- LOCATION: o nome de uma multirregião ou região do Firestore.
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
ouDISABLED
.
O banco de dados criado está sempre no modo nativo do Firestore.
--delete-protection
é um argumento opcional para ativar a proteção contra exclusão. Não é possível excluir um banco de dados com a proteção contra exclusão ativada até que essa configuração seja desativada. Esta configuração fica desativada por padrão.
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 }
Substitua:
- DATABASE_ID: um ID válido do banco de dados.
- LOCATION: o nome de uma multirregião ou região do Firestore.
- DATABASE_TYPE:
FIRESTORE_NATIVE
para o modo nativo ouDATASTORE_MODE
para o modo Datastore. - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
ouDELETE_PROTECTION_DISABLED
.
delete_protection_state
é um argumento opcional para ativar a proteção contra exclusão. Não é possível excluir um banco de dados com a proteção contra exclusão ativada até que essa configuração seja desativada. Esta configuração fica desativada por padrão.
ID do banco de dados
IDs de banco de dados válidos incluem (default)
e IDs que estão em conformidade com o seguinte:
- Inclui apenas letras, números e hífen (
-
). - As letras precisam ser minúsculas.
- O primeiro caractere precisa ser uma letra.
- O último caractere precisa ser uma letra ou um número.
- Mínimo de 4 caracteres
- Tem no máximo 512 caracteres.
- Não pode ser um UUID ou se parecer com um UUID. Por exemplo, não use um ID como
f47ac10b-58cc-0372-8567-0e02b2c3d479
.
Se você excluir um banco de dados, não poderá reutilizar o ID imediatamente após cinco minutos.
Proteção contra exclusão
Use a proteção contra exclusão para evitar a exclusão acidental de um banco de dados. Não é possível excluir um banco de dados com a proteção contra exclusão ativada até que você desative o recurso. A proteção contra exclusão está desativada por padrão. É possível ativar a proteção contra exclusão ao criar o banco de dados ou atualizar uma configuração de banco de dados para ativar a proteção contra exclusão.
Configurar regras de segurança do Firestore para seus bancos de dados
Use a CLI do Firebase para implantar as regras de segurança do Firestore em cada um dos bancos de dados. Consulte o guia para gerenciar e implantar regras de segurança do Firestore.
Acessar um banco de dados nomeado com uma biblioteca de cliente
Um banco de dados nomeado inclui qualquer banco de dados não denominado (default)
. Por padrão,
os SDKs do Firebase e as bibliotecas de cliente da API do Google se conectam ao banco de dados (default)
do Firestore em um projeto. Para criar um cliente conectado a um banco de dados nomeado, defina o ID do banco de dados ao instanciar um cliente.
Listar bancos de dados
Use um dos métodos a seguir para listar seus bancos de dados:
Console
No Console do Google Cloud, acesse a página Bancos de Dados.
gcloud
Use o comando gcloud firestore databases list
para listar todos os bancos de dados no seu projeto.
gcloud firestore databases list
CLI do Firebase
Use o comando firebase firestore:databases:list
para listar todos os bancos de dados no seu projeto.
firebase firestore:databases:list
Acessar detalhes do banco de dados
Para conferir detalhes sobre um único banco de dados, use um dos seguintes métodos:
gcloud
Use o comando gcloud firestore databases describe
:
gcloud firestore databases describe --database=DATABASE_ID
CLI do Firebase
Use o comando firebase firestore:databases:get
:
firebase firestore:databases:get DATABASE_ID
Substitua DATABASE_ID por um ID do banco de dados.
Atualizar configuração do banco de dados
Para atualizar as definições de configuração de um banco de dados, use o comando gcloud firestore databases update
.
Use este comando para mudar o tipo de banco de dados ou ativar ou desativar a proteção
contra exclusão.
Mudar o tipo de banco de dados
Para atualizar o tipo de um banco de dados, use o comando gcloud firestore databases update
com a flag --type=
. Só é possível mudar o tipo se o banco de dados
estiver vazio.
gcloud
gcloud firestore databases update --database=DATABASE_ID \ --type=DATABASE_TYPE
Substitua:
- DATABASE_ID: um ID do banco de dados.
- DATABASE_TYPE:
firestore-native
para o modo nativo oudatastore-mode
para o modo Datastore.
Atualizar a configuração de proteção contra exclusão
Para ativar a proteção contra exclusão em um banco de dados, use o comando gcloud firestore databases update
com a sinalização --delete-protection
. Por exemplo:
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
Substitua DATABASE_ID por um ID do banco de dados.
Para desativar a proteção contra exclusão em um banco de dados, use o comando gcloud firestore databases update
com a sinalização --no-delete-protection
. Por exemplo:
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
Substitua DATABASE_ID por um ID do banco de dados.
Excluir um banco de dados
Para excluir um banco de dados, use o console ou a ferramenta de linha de comando.
Se o banco de dados tiver a configuração de proteção contra exclusão ativada, primeiro desative a proteção contra exclusão.
Se o banco de dados contiver dados de pesquisa do App Engine ou entidades de blob, será necessário remover esses dados primeiro.
A exclusão de um banco de dados não remove automaticamente nenhum gatilho do Eventarc nele. O acionador deixa de entregar eventos, mas continua existindo até que você o exclua.
Console
-
No Console do Google Cloud, acesse a página Bancos de Dados.
- Clique em Ver mais na linha da tabela do banco de dados que você quer excluir. Clique em Excluir. Uma caixa de diálogo será exibida.
Na caixa de diálogo Excluir banco de dados?, confirme a exclusão digitando o ID do banco de dados no campo de texto. Clique em Excluir. O console informa sobre o sucesso ou a falha da operação.
Se a operação falhar, confira os detalhes do banco de dados e verifique se a proteção contra exclusão está desativada. Para desativar a proteção contra exclusão, consulte Atualizar a configuração de proteção contra exclusão.
gcloud
Use o comando `gcloud firestore database delete`.
gcloud firestore databases delete --database=DATABASE_ID
Substitua DATABASE_ID pelo ID do banco de dados a ser excluído.
Configurar permissões de acesso por banco de dados
Use as Condições do Identity and Access Management para configurar as permissões de acesso por banco de dados. Os exemplos a seguir usam a CLI do Google Cloud para atribuir acesso condicional a um ou mais bancos de dados. Também é possível definir as condições do IAM no console do Google Cloud.
Conferir políticas do IAM atuais
gcloud projects get-iam-policy PROJECT_ID
Defina PROJECT_ID
como o ID do projeto.
Conceder acesso a um banco de dados
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'
Defina o seguinte:
PROJECT_ID
: o ID do projetoEMAIL
: um endereço de e-mail que representa uma Conta do Google específica. Por exemplo,alice@example.com
.DATABASE_ID
: um ID do banco de dados.TITLE
: um título opcional para a expressão.DESCRIPTION
: uma descrição opcional da expressão.
Conceder acesso a todos, exceto a um banco de dados
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'
Defina o seguinte:
PROJECT_ID
: o ID do projetoEMAIL
: um endereço de e-mail que representa uma Conta do Google específica. Por exemplo,alice@example.com
.DATABASE_ID
: um ID do banco de dados.TITLE
: um título opcional para a expressão.DESCRIPTION
: uma descrição opcional da expressão.
Remover políticas para um determinado membro e papel
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all
Defina o seguinte:
PROJECT_ID
: o ID do projetoEMAIL
: um endereço de e-mail que representa uma Conta do Google específica. Por exemplo,alice@example.com
.
Cloud Monitoring
As métricas do Firestore são informadas em dois recursos monitorados.
É possível inspecionar métricas agregadas no nível do banco de dados observando firestore.googleapis.com/Database
. As métricas informadas em firestore_instance
são agregadas no nível do projeto.
Limitações
- É possível ter no máximo 100 bancos de dados por projeto. Você pode entrar em contato com o suporte para solicitar um aumento desse limite.
- Não é possível excluir o banco de dados
(default)
se ele tiver dados de pesquisa do GAE. Use a API index delete para excluir os dados de pesquisa do GAE. Se você excluiu recentemente dados de pesquisa do GAE, talvez seja necessário aguardar um período antes de excluir o banco de dados. - Não é possível excluir o banco de dados
(default)
se ele tiver entidades de blob. Use a API Blobstore delete para excluir os dados do Blobstore. Para verificar se o banco de dados(default)
tem dados do Blobstore, execute a seguinte consulta GQL no console do Google Cloud:SELECT * FROM __BlobInfo__
. - Não é possível reutilizar um ID de banco de dados até cinco minutos após a exclusão.
- O Cloud Function v1 não é compatível com bancos de dados nomeados do Firestore. Use os gatilhos do Cloud Firestore (2a geração) para configurar eventos para bancos de dados nomeados.
- Os acionadores de função do Firestore v1 e os acionadores de evento do Firestore podem parar de funcionar depois que o banco de dados for excluído, mesmo que um novo banco de dados seja criado com o mesmo nome.