Criar e gerenciar bancos de dados

Relevante apenas para a edição Enterprise do Cloud Firestore.

Nesta página, descrevemos como criar, atualizar e excluir bancos de dados do Cloud Firestore com compatibilidade com o MongoDB. É possível criar vários bancos de dados do Cloud Firestore por projeto. É possível usar vários bancos de dados para configurar ambientes de produção e teste, isolar dados do cliente e regionalizar os dados.

Uso do nível gratuito

O Cloud Firestore oferece um nível gratuito para você começar a usar sem custos.

O Nível gratuito se aplica a apenas um banco de dados Cloud Firestore por projeto. O primeiro banco de dados criado em um projeto sem um banco de dados de nível gratuito vai receber o nível gratuito. Se o banco de dados com o nível gratuito aplicado for excluído, o próximo banco de dados criado vai receber o nível gratuito.

Antes de começar

Antes de criar um banco de dados, faça o seguinte:

  1. Crie um projeto do Firebase se você ainda não fez isso: no console do Firebase, clique em Adicionar projeto e siga as instruções na tela para criar um projeto do Firebase ou para adicionar serviços do Firebase a um projeto do Google Cloud.

  2. Atribua os papéis apropriados do Identity and Access Management (IAM) conforme descrito na próxima seção.

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
  • Clonar um banco de dados: datastore.databases.clone

Criar um banco de dados

Para criar um banco de dados do Cloud Firestore com compatibilidade com o MongoDB, use um dos seguintes métodos:

Console do Firebase
  1. No console do Firebase, acesse a página Banco de dados do Firestore.

    Acesse o banco de dados do Firestore

  2. Clique em Criar banco de dados.
  3. Selecione Edição Enterprise. Clique em Next.
  4. Insira um ID do banco de dados.
  5. Selecione um local para seu banco de dados.
  6. Configure o banco de dados selecionando um modo.
  7. Clique em Criar.
CLI do Firebase
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

Use o comando gcloud firestore databases create e defina --edition=enterprise.

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

Substitua:

Para ativar a proteção contra exclusão, adicione a flag --delete-protection. 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.

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

Para adicionar tags ao banco de dados, use a flag --tags. Exemplo:

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

Use o recurso google_firestore_database e defina database_edition como 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"
}

Substitua:

Para ativar a proteção contra exclusão, defina delete_protection_state como DELETE_PROTECTION_ENABLED. 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 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. A proteção contra exclusão funciona da seguinte maneira:

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

Listar bancos de dados

Use um dos métodos a seguir para listar seus bancos de dados:

Console do Firebase
  1. No console do Firebase, acesse a página Banco de dados do Firestore.

    Acesse o banco de dados do Firestore

  2. Clique em Cloud Firestore para ver todos os bancos de dados do projeto.
gcloud CLI

Use o comando gcloud firestore databases list para listar todos os bancos de dados no seu projeto.

gcloud firestore databases list

Acessar detalhes do banco de dados

Para conferir detalhes sobre um único banco de dados, use um dos seguintes métodos:

Console do Firebase
  1. No console do Firebase, acesse a página Banco de dados do Firestore.

    Acesse o banco de dados do Firestore

  2. Selecione um banco de dados na lista.
gcloud CLI

Use o comando gcloud firestore databases describe:

gcloud firestore databases describe --database=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 ativar ou desativar a proteção contra exclusão.

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. Exemplo:

gcloud CLI
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. Exemplo:

gcloud CLI
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. A exclusão de um banco de dados não gera cobranças por operações de exclusão.

Se o banco de dados tiver a configuração de proteção contra exclusão ativada, primeiro desative a proteção contra exclusão.

Console do Firebase
  1. No console do Firebase, acesse a página Banco de dados do Firestore.

    Acesse o banco de dados do Firestore

  2. Selecione o banco de dados que você quer excluir.
  3. Clique em Ver mais.
  4. Clique em Excluir para remover o banco de dados.
gcloud CLI

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.

Clonar um banco de dados

É possível clonar um banco de dados existente em um carimbo de data/hora selecionado para um novo banco de dados:

  • O banco de dados clonado é um novo banco de dados que será criado no mesmo local do banco de dados de origem.

    Para criar um clone, o Cloud Firestore usa dados de recuperação pontual (PITR) do banco de dados de origem. O banco de dados clonado inclui todos os dados e índices.

  • Por padrão, o banco de dados clonado será criptografado da mesma forma que o banco de dados de origem, usando a criptografia padrão do Google ou CMEK. É possível especificar um tipo de criptografia diferente ou usar outra chave para a criptografia CMEK.

  • O carimbo de data/hora tem uma granularidade de um minuto e especifica um ponto no tempo no passado, no período definido pela janela de PITR:

    • Se a PITR estiver ativada para seu banco de dados, selecione qualquer minuto nos últimos sete dias (ou menos, se a PITR foi ativada há menos de sete dias).
    • Se a PITR não estiver ativada, você poderá selecionar qualquer minuto na última hora.
    • Você pode verificar o carimbo de data/hora mais antigo que pode escolher na descrição do seu banco de dados.

Console

  1. No Console do Google Cloud, acesse a página Bancos de Dados.

    Acessar "Bancos de dados"

  2. Clique em Ver mais na linha da tabela do banco de dados que você quer clonar. Clique em Clone. A caixa de diálogo Criar um clone vai aparecer.

  3. Na caixa de diálogo Criar um clone, forneça parâmetros para clonar o banco de dados:

    1. No campo Atribua um ID ao clone, um ID do banco de dados para um novo banco de dados clonado. Ele não pode estar associado a um banco de dados existente.

    2. No campo Clonar de, selecione um ponto no tempo para usar na clonagem. O horário selecionado corresponde a um carimbo de data/hora da PITR, com granularidade de minutos.

  4. Clique em Criar clone.

gcloud

Use o comando gcloud alpha firestore databases clone para clonar um banco de dados:

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

Substitua:

  • SOURCE_DATABASE: o nome de um banco de dados atual que você quer clonar. O nome usa o formato projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: um carimbo de data/hora da PITR no formato RFC 3339, com granularidade de minutos. Por exemplo: 2025-06-01T10:20:00.00Z ou 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: um ID do banco de dados para um novo banco de dados clonado. Ele não pode estar associado a um banco de dados existente.

Exemplo:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

Mudar a configuração de criptografia do banco de dados clonado

Por padrão, o banco de dados clonado terá a mesma configuração de criptografia do banco de dados de origem. Para mudar a configuração de criptografia, use o argumento --encryption-type:

  • (Padrão) use-source-encryption: use a mesma configuração de criptografia do banco de dados de origem.
  • google-default-encryption: use a criptografia padrão do Google.
  • customer-managed-encryption: use a criptografia CMEK. Especifique um ID da chave no argumento --kms-key-name.

O exemplo a seguir mostra como configurar a criptografia CMEK para o banco de dados clonado:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

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: ID do projeto;
  • EMAIL: 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: ID do projeto;
  • EMAIL: 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: ID do projeto;
  • EMAIL: um endereço de e-mail que representa uma Conta do Google específica. Por exemplo, alice@example.com.

Limitações

É possível ter no máximo 100 bancos de dados por projeto. Entre em contato com o suporte para solicitar um aumento desse limite.

A seguir