Faça a gestão de bases de dados

Esta página descreve como criar, atualizar e eliminar bases de dados do Firestore no modo Datastore. Pode criar várias bases de dados do Firestore por projeto. Pode usar várias bases de dados para configurar ambientes de produção e de testes, isolar dados de clientes e para a regionalização de dados.

A base de dados (default)

Se não especificar uma base de dados, as bibliotecas de cliente do modo Datastore e a CLI Google Cloud estabelecem ligação à base de dados (default) por predefinição.

Funções necessárias

Para criar e gerir bases de dados, precisa da função de gestão de identidade e acesso Owner ou Datastore Owner. Estas funções concedem as autorizações necessárias.

Autorizações necessárias

Para gerir bases de dados, precisa das seguintes autorizações:

  • Crie uma base de dados: datastore.databases.create
  • Ler a configuração da base de dados: datastore.databases.getMetadata
  • Configure uma base de dados: datastore.databases.update
  • Elimine uma base de dados: datastore.databases.delete
  • Clone uma base de dados: datastore.databases.clone

Crie uma base de dados

Para criar uma base de dados, use um dos seguintes métodos:

Consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Clique em Criar base de dados.
  3. Selecione um modo de base de dados. Clique em Continuar.
  4. Configure a base de dados. Introduza um ID da base de dados. Selecione uma localização. Clique em Criar base 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 o seguinte:

--delete-protection é uma flag opcional para ativar a proteção contra eliminação. Não pode eliminar uma base de dados com a proteção contra eliminação ativada até desativar esta definição. Esta definição está desativada por predefinição.

Para adicionar etiquetas à base de dados, use a flag --tags. Por exemplo:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

Substitua o seguinte:

--delete-protection é um argumento opcional para ativar a proteção contra eliminação. Não pode eliminar uma base de dados com a proteção contra eliminação ativada até desativar esta definição. Esta definição está desativada por predefiniçã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 o seguinte:

delete_protection_state é um argumento opcional para ativar a proteção contra eliminação. Não pode eliminar uma base de dados com a proteção contra eliminação ativada até desativar esta definição. Esta definição está desativada por predefinição.

ID da base de dados

Os IDs de base de dados válidos incluem (default) e IDs em conformidade com o seguinte:

  • Inclui apenas letras, números e carateres de hífen (-).
  • As letras têm de ser minúsculas.
  • O primeiro caráter tem de ser uma letra.
  • O último caráter tem de ser uma letra ou um número.
  • Mínimo de 4 carateres.
  • Um máximo de 63 carateres.
  • Não pode ser um UUID nem assemelhar-se a um UUID. Por exemplo, não use um ID como f47ac10b-58cc-0372-8567-0e02b2c3d479.

Se eliminar uma base de dados, não pode voltar a usar imediatamente o ID da base de dados até 5 minutos depois.

Elimine a proteção

Use a proteção contra eliminação para evitar a eliminação acidental de uma base de dados. Não pode eliminar uma base de dados com a proteção contra eliminação ativada até desativar a proteção contra eliminação. A proteção contra eliminação está desativada por predefinição. Pode ativar a proteção contra eliminação quando cria a base de dados ou pode atualizar uma configuração da base de dados para ativar a proteção contra eliminação.

Aceda a uma base de dados com nome através de uma biblioteca cliente

Uma base de dados com nome inclui qualquer base de dados que não se chame (default). Por predefinição, os SDKs Firebase e as bibliotecas cliente da API Google ligam-se à (default) base de dados do Firestore num projeto. Para criar um cliente associado a uma base de dados com nome, defina o ID da base de dados quando instanciar um cliente.

Apresentar bases de dados

Use um dos seguintes métodos para listar as suas bases de dados:

Consola

Na Google Cloud consola, aceda à página Bases de dados.

Aceda a Bases de dados

gcloud

Use o comando gcloud firestore databases list para listar todas as bases de dados no seu projeto.

gcloud firestore databases list
Firebase CLI

Use o comando firebase firestore:databases:list para listar todas as bases de dados no seu projeto.

firebase firestore:databases:list

Veja os detalhes da base de dados

Para ver detalhes sobre uma única base de dados, use um dos seguintes métodos:

gcloud

Use o comando gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI

Use o comando firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Substitua DATABASE_ID por um ID da base de dados.

Atualize a configuração da base de dados

Para atualizar as definições de configuração de uma base de dados, use o comando gcloud firestore databases update. Use este comando para alterar o tipo de base de dados ou ativar/desativar a proteção contra eliminação.

Altere o tipo de base de dados

Para atualizar o tipo de uma base de dados, use o comando gcloud firestore databases update com a flag --type=. Só pode alterar o tipo se a base de dados estiver vazia.

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

Substitua o seguinte:

  • DATABASE_ID: um ID da base de dados.
  • DATABASE_TYPE: firestore-native para o modo nativo ou datastore-mode para o modo de armazenamento de dados.

Atualize a definição de proteção contra eliminação

Para ativar a proteção contra eliminação numa base de dados, use o comando gcloud firestore databases update com a flag --delete-protection. Por exemplo:

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

Substitua DATABASE_ID por um ID da base de dados.

Para desativar a proteção contra eliminação numa base de dados, use o comando gcloud firestore databases update com a flag --no-delete-protection. Por exemplo:

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

Substitua DATABASE_ID por um ID da base de dados.

Elimine uma base de dados

Para eliminar uma base de dados, use a consola ou a ferramenta de linha de comandos.

Se a base de dados tiver a definição de proteção contra eliminação ativada, tem de desativar primeiro a proteção contra eliminação.

Se a base de dados contiver dados de pesquisa do App Engine ou entidades blob, tem de eliminar esses dados primeiro.

A eliminação de uma base de dados não elimina automaticamente os acionadores do Eventarc dessa base de dados. O acionador deixa de enviar eventos, mas continua a existir até eliminar o acionador.

A eliminação de uma base de dados não incorre em custos para operações de eliminação.

Consola
  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Clique em Ver mais na linha da tabela da base de dados que quer eliminar. Clique em Eliminar. É apresentada uma caixa de diálogo.
  3. Na caixa de diálogo Eliminar base de dados?, confirme a eliminação escrevendo o ID da base de dados no campo de texto. Clique em Eliminar. A consola informa-o sobre o êxito ou a falha da operação.

    Se a operação falhar, veja os detalhes da base de dados e verifique se a proteção contra eliminação está desativada. Para desativar a proteção contra eliminação, consulte o artigo Atualize a definição de proteção contra eliminação.

gcloud

Use o comando `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Substitua DATABASE_ID pelo ID da base de dados a eliminar. Para eliminar a base de dados predefinida, use o ID '(default)'

Clone uma base de dados

Pode clonar uma base de dados existente num momento específico selecionado para uma nova base de dados:

  • A base de dados clonada é uma nova base de dados que vai ser criada na mesma localização que a base de dados de origem.

    Para fazer um clone, o Firestore usa dados de recuperação num determinado momento (PITR) da base de dados de origem. A base de dados clonada inclui todos os dados e índices.

  • Por predefinição, a base de dados clonada é encriptada da mesma forma que a base de dados de origem, através da encriptação predefinida da Google ou da encriptação CMEK. Pode especificar um tipo de encriptação diferente ou usar uma chave diferente para a encriptação CMEK.

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

    • Se a PITR estiver ativada para a sua base de dados, pode selecionar qualquer minuto nos últimos 7 dias (ou menos, se a PITR tiver sido ativada há menos de 7 dias).
    • Se a PITR não estiver ativada, pode selecionar qualquer minuto na última hora.
    • Pode verificar a data/hora mais antiga que pode escolher na descrição da base de dados.

Consola

  1. Na Google Cloud consola, aceda à página Bases de dados.

    Aceda a Bases de dados

  2. Clique em Ver mais na linha da tabela da base de dados que quer clonar. Clique em Clonar. É apresentada a caixa de diálogo Criar um clone.

  3. Na caixa de diálogo Crie um clone, indique os parâmetros para clonar a base de dados:

    1. No campo Atribua um ID ao clone, introduza um ID da base de dados para uma nova base de dados clonada. Este ID da base de dados não pode estar associado a uma base de dados existente.

    2. No campo Clonar a partir de, selecione um ponto no tempo a usar para a clonagem. A hora selecionada corresponde a uma data/hora de PITR, com granularidade de minutos.

  4. Clique em Criar clone.

gcloud

Use o comando gcloud alpha firestore databases clone para clonar uma base de dados:

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

Substitua o seguinte:

  • SOURCE_DATABASE: o nome da base de dados de uma base de dados existente que quer clonar. O nome usa o formato projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: a data/hora de 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 da base de dados para uma nova base de dados clonada. Este ID da base de dados não pode estar associado a uma base 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'

Altere a configuração de encriptação da base de dados clonada

Por predefinição, a base de dados clonada tem a mesma configuração de encriptação que a base de dados de origem. Para alterar a configuração de encriptação, use o argumento --encryption-type:

  • (Predefinição) use-source-encryption: use a mesma configuração de encriptação que a base de dados de origem.
  • google-default-encryption: use a encriptação predefinida da Google.
  • customer-managed-encryption: use a encriptação CMEK. Especifique um ID da chave no argumento --kms-key-name.

O exemplo seguinte mostra como configurar a encriptação CMEK para a base de dados clonada:

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'

Configure autorizações de acesso por base de dados

Pode usar as condições de gestão de identidades e acessos para configurar autorizações de acesso ao nível da base de dados. Os exemplos seguintes usam a CLI Google Cloud para atribuir acesso condicional a uma ou mais bases de dados. Também pode definir condições da IAM na Google Cloud consola.

Veja as políticas IAM existentes

gcloud projects get-iam-policy PROJECT_ID

Defina PROJECT_ID como o ID do seu projeto.

Conceda acesso a uma base 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 seu projeto
  • EMAIL: um endereço de email que representa uma Conta Google específica. Por exemplo, alice@example.com.
  • DATABASE_ID: um ID da base de dados.
  • TITLE: um título opcional para a expressão.
  • DESCRIPTION: uma descrição opcional da expressão.

Conceder acesso a tudo, exceto a uma base 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 seu projeto
  • EMAIL: um endereço de email que representa uma Conta Google específica. Por exemplo, alice@example.com.
  • DATABASE_ID: um ID da base de dados.
  • TITLE: um título opcional para a expressão.
  • DESCRIPTION: uma descrição opcional da expressão.

Remova políticas para um determinado membro e função

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

Defina o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • EMAIL: um endereço de email que representa uma Conta Google específica. Por exemplo, alice@example.com.

Cloud Monitoring

As métricas do Firestore são comunicadas em dois recursos monitorizados.

Pode inspecionar métricas agregadas ao nível da base de dados consultando firestore.googleapis.com/Database. As métricas comunicadas em firestore_instance são agregadas ao nível do projeto.

Limitações

  • Pode ter um máximo de 100 bases de dados por projeto. Pode contactar o apoio técnico para solicitar um aumento deste limite.
  • Não pode eliminar a sua base de dados do (default) se contiver dados de pesquisa do GAE. Use a API de eliminação de índice para eliminar dados de pesquisa do GAE. Se eliminou recentemente dados da Pesquisa do GAE, pode haver um período de espera antes de poder eliminar a base de dados.
  • Não pode eliminar a sua base de dados (default) se contiver entidades blob. Use a API Blobstore delete para eliminar dados do Blobstore. Pode verificar se a sua base de dados (default) tem dados do Blobstore executando a seguinte consulta GQL na consola Google Cloud : SELECT * FROM __BlobInfo__.
  • Não pode reutilizar um ID da base de dados até 5 minutos após a eliminação.
  • A Cloud Function v1 não suporta bases de dados com nome do Firestore. Use os acionadores do Cloud Firestore (2.ª geração) para configurar eventos para bases de dados com nome.
  • Os acionadores de funções do Firestore v1 e os acionadores de eventos do Firestore podem deixar de funcionar após a eliminação da base de dados, mesmo que seja criada uma nova base de dados com o mesmo nome.

O que se segue?