Criar e gerenciar bancos de dados

Nesta página, descrevemos como criar, atualizar e excluir bancos de dados do Firestore com compatibilidade com o MongoDB. É 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.

Uso do nível sem custos financeiros

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

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

Antes de começar

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

  1. Verify that billing is enabled for your Google Cloud project.

  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 Firestore com compatibilidade com o MongoDB, use um dos seguintes métodos:

Console doGoogle Cloud
  1. No console do Google Cloud , acesse a página Bancos de dados.

    Acessar "Bancos de dados"

  2. Clique em Criar um banco de dados do Firestore.
  3. Insira um ID do banco de dados.
  4. Selecione a edição Enterprise.
  5. Selecione um local para seu banco de dados.
  6. (Opcional) Se você precisar personalizar a criptografia, clique em Mostrar opções de criptografia e configure as opções.
  7. Clique em Criar banco de dados.
CLI do Firebase
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
CLI da gcloud

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 sinalização --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

No console do Google Cloud , acesse a página Bancos de dados.

Acessar "Bancos de dados"

CLI da gcloud

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 doGoogle Cloud
  1. No console do Google Cloud , acesse a página Bancos de dados.

    Acessar "Bancos de dados"

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

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:

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

CLI da 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. 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 doGoogle Cloud
  1. No console do Google Cloud , acesse a página Bancos de dados.

    Acessar "Bancos de dados"

  2. Clique em Ver mais na coluna Ações do banco de dados que você quer excluir. Clique em Excluir. Uma caixa de diálogo será exibida.
  3. 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.

CLI da 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.

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 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 condições do IAM no Google Cloud console.

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