Gestionar bases de datos

En esta página se describe cómo crear, actualizar y eliminar bases de datos de Firestore en modo Datastore. Puedes crear varias bases de datos de Firestore por proyecto. Puedes usar varias bases de datos para configurar entornos de producción y de pruebas, aislar los datos de los clientes y regionalizar los datos.

La base de datos (default)

Si no especificas una base de datos, las bibliotecas de cliente del modo Datastore y la CLI de Google Cloud se conectarán a la base de datos (default) de forma predeterminada.

Roles obligatorios

Para crear y gestionar bases de datos, necesitas el rol de Owner o Datastore Owner Gestión de Identidades y Accesos. Estos roles conceden los permisos necesarios.

Permisos obligatorios

Para gestionar bases de datos, necesitas los siguientes permisos:

  • Crear una base de datos: datastore.databases.create
  • Leer la configuración de la base de datos: datastore.databases.getMetadata
  • Configurar una base de datos: datastore.databases.update
  • Eliminar una base de datos: datastore.databases.delete
  • Clonar una base de datos: datastore.databases.clone

Crear una base de datos

Para crear una base de datos, utiliza uno de los siguientes métodos:

Consola
  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Haz clic en Crear base de datos.
  3. Selecciona un modo de base de datos. Haz clic en Continuar.
  4. Configura tu base de datos. Introduce un ID de base de datos. Selecciona una ubicación. Haz clic en Crear base de datos.
gcloud

Usa el comando gcloud firestore databases create.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

Haz los cambios siguientes:

--delete-protection es una marca opcional para habilitar la protección contra la eliminación. No puedes eliminar una base de datos con la protección contra la eliminación habilitada hasta que desactives este ajuste. Este ajuste está inhabilitado de forma predeterminada.

Para añadir etiquetas a la base de datos, usa la marca --tags. Por ejemplo:

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

Haz los cambios siguientes:

--delete-protection es un argumento opcional para habilitar la protección frente a la eliminación. No puedes eliminar una base de datos con la protección contra la eliminación habilitada hasta que desactives este ajuste. Este ajuste está inhabilitado de forma predeterminada.

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
}

Haz los cambios siguientes:

delete_protection_state es un argumento opcional para habilitar la protección contra la eliminación. No puedes eliminar una base de datos con la protección contra la eliminación habilitada hasta que desactives este ajuste. Este ajuste está inhabilitado de forma predeterminada.

ID de base de datos

Los IDs de base de datos válidos incluyen (default) y los IDs que cumplen los siguientes requisitos:

  • Incluye solo letras, números y guiones (-).
  • Las letras deben estar en minúsculas.
  • El primer carácter debe ser una letra.
  • El último carácter debe ser una letra o un número.
  • Mínimo de 4 caracteres.
  • Puede tener una longitud máxima de 63 caracteres.
  • No debe ser un UUID ni parecerse a uno. Por ejemplo, no utilices un ID como f47ac10b-58cc-0372-8567-0e02b2c3d479.

Si eliminas una base de datos, no podrás volver a usar su ID inmediatamente, sino que tendrás que esperar 5 minutos.

Eliminar protección

Usa la protección contra eliminación para evitar que se elimine una base de datos por error. No puedes eliminar una base de datos con la protección contra la eliminación habilitada hasta que la deshabilites. La protección contra la eliminación está inhabilitada de forma predeterminada. Puedes habilitar la protección contra eliminación al crear la base de datos o actualizar la configuración de una base de datos para habilitar la protección contra eliminación.

Acceder a una base de datos con nombre mediante una biblioteca de cliente

Una base de datos con nombre es cualquier base de datos que no se llame (default). De forma predeterminada, los SDKs de Firebase y las bibliotecas de cliente de las APIs de Google se conectan a la (default) base de datos de Firestore de un proyecto. Para crear un cliente conectado a una base de datos con nombre, define el ID de la base de datos al crear una instancia del cliente.

Mostrar bases de datos

Utiliza uno de los siguientes métodos para enumerar tus bases de datos:

Consola

En la Google Cloud consola, ve a la página Bases de datos.

Ir a Bases de datos

gcloud

Usa el comando gcloud firestore databases list para mostrar todas las bases de datos de tu proyecto.

gcloud firestore databases list
CLI de Firebase

Usa el comando firebase firestore:databases:list para enumerar todas las bases de datos de tu proyecto.

firebase firestore:databases:list

Ver los detalles de la base de datos

Para ver los detalles de una sola base de datos, utilice uno de los siguientes métodos:

gcloud

Usa el comando gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID
CLI de Firebase

Usa el comando firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Sustituye DATABASE_ID por un ID de base de datos.

Actualizar la configuración de la base de datos

Para actualizar los ajustes de configuración de una base de datos, usa el comando gcloud firestore databases update. Usa este comando para cambiar el tipo de base de datos o para activar o desactivar la protección contra eliminación.

Cambiar el tipo de base de datos

Para actualizar el tipo de una base de datos, usa el comando gcloud firestore databases update con la marca --type=. Solo puedes cambiar el tipo si la base de datos está vacía.

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

Haz los cambios siguientes:

  • DATABASE_ID: un ID de base de datos.
  • DATABASE_TYPE: firestore-native para el modo nativo o datastore-mode para el modo de Datastore.

Actualizar el ajuste de protección frente a la eliminación

Para habilitar la protección contra eliminación en una base de datos, usa el comando gcloud firestore databases update con la marca --delete-protection. Por ejemplo:

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

Sustituye DATABASE_ID por un ID de base de datos.

Para inhabilitar la protección contra eliminación en una base de datos, usa el comando gcloud firestore databases update con la marca --no-delete-protection. Por ejemplo:

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

Sustituye DATABASE_ID por un ID de base de datos.

Eliminar una base de datos

Para eliminar una base de datos, utiliza la consola o la herramienta de línea de comandos.

Si la base de datos tiene habilitada la opción de protección contra la eliminación, primero debes inhabilitarla.

Si la base de datos contiene datos de búsqueda de App Engine o entidades de blob, primero debes eliminar esos datos.

Si eliminas una base de datos, no se eliminarán automáticamente los activadores de Eventarc de esa base de datos. El activador deja de enviar eventos, pero sigue existiendo hasta que lo eliminas.

Eliminar una base de datos no conlleva ningún cargo por las operaciones de eliminación.

Consola
  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. En la fila de la tabla de la base de datos que quieras eliminar, haz clic en Ver más. Haz clic en Eliminar. Aparecerá un cuadro de diálogo.
  3. En el cuadro de diálogo ¿Eliminar base de datos?, confirma la eliminación escribiendo el ID de la base de datos en el campo de texto. Haz clic en Eliminar. La consola te informa si la operación se ha realizado correctamente o no.

    Si la operación falla, consulta los detalles de la base de datos y comprueba que la protección contra eliminación esté inhabilitada. Para inhabilitar la protección contra eliminación, consulta Actualizar el ajuste de protección contra eliminación.

gcloud

Usa el comando `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Sustituye DATABASE_ID por el ID de la base de datos que quieras eliminar. Para eliminar la base de datos predeterminada, usa el ID '(default)'.

Clonar una base de datos

Puedes clonar una base de datos en una marca de tiempo seleccionada en una base de datos nueva:

  • La base de datos clonada es una base de datos nueva que se creará en la misma ubicación que la base de datos de origen.

    Para crear un clon, Firestore usa los datos de recuperación a un momento dado (PITR) de la base de datos de origen. La base de datos clonada incluye todos los datos e índices.

  • De forma predeterminada, la base de datos clonada se cifrará de la misma forma que la base de datos de origen, con el cifrado predeterminado de Google o con el cifrado CMEK. Puedes especificar otro tipo de cifrado o usar otra clave para el cifrado con CMEK.

  • La marca de tiempo tiene una granularidad de un minuto y especifica un momento del pasado, en el periodo definido por la ventana de PITR:

    • Si PITR está habilitado en tu base de datos, puedes seleccionar cualquier minuto de los últimos 7 días (o menos si PITR se habilitó hace menos de 7 días).
    • Si PITR no está habilitada, puedes seleccionar cualquier minuto de la última hora.
    • Puedes consultar la marca de tiempo más antigua que puedes elegir en la descripción de tu base de datos.

Consola

  1. En la Google Cloud consola, ve a la página Bases de datos.

    Ir a Bases de datos

  2. En la fila de la tabla de la base de datos que quieras clonar, haz clic en Ver más. Haz clic en Clonar. Aparecerá el cuadro de diálogo Crear un clon.

  3. En el cuadro de diálogo Crear un clon, proporciona los parámetros para clonar la base de datos:

    1. En el campo Proporciona un ID al clon, introduce un ID de base de datos para la nueva base de datos clonada. Este ID de base de datos no debe estar asociado a ninguna base de datos.

    2. En el campo Clonar desde, selecciona un momento para usarlo en la clonación. La hora seleccionada corresponde a una marca de tiempo de PITR con una granularidad de un minuto.

  4. Haz clic en Crear clon.

gcloud

Usa el comando gcloud alpha firestore databases clone para clonar una base de datos:

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

Haz los cambios siguientes:

  • SOURCE_DATABASE: el nombre de la base de datos que quieres clonar. El nombre tiene el formato projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: una marca de tiempo de PITR en el formato RFC 3339, con una granularidad de minutos. Por ejemplo, 2025-06-01T10:20:00.00Z o 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: un ID de base de datos de una nueva base de datos clonada. Este ID de base de datos no debe estar asociado a ninguna base de datos.

Ejemplo:

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'

Cambiar la configuración de cifrado de la base de datos clonada

De forma predeterminada, la base de datos clonada tendrá la misma configuración de cifrado que la base de datos de origen. Para cambiar la configuración del cifrado, usa el argumento --encryption-type:

  • (Valor predeterminado) use-source-encryption: usa la misma configuración de cifrado que la base de datos de origen.
  • google-default-encryption: usa el cifrado predeterminado de Google.
  • customer-managed-encryption: usa el cifrado CMEK. Especifica un ID de clave en el argumento --kms-key-name.

En el siguiente ejemplo se muestra cómo configurar el cifrado con CMEK para la base de datos 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'

Configurar permisos de acceso por base de datos

Puedes usar condiciones de Gestión de Identidades y Accesos para configurar permisos de acceso a nivel de base de datos. En los siguientes ejemplos se usa la CLI de Google Cloud para asignar acceso condicional a una o varias bases de datos. También puedes definir condiciones de gestión de identidades y accesos en la Google Cloud consola.

Ver las políticas de gestión de identidades y accesos

gcloud projects get-iam-policy PROJECT_ID

Asigna a PROJECT_ID el ID de tu proyecto.

Conceder acceso a una base de datos

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'

Configura lo siguiente:

  • PROJECT_ID: tu ID de proyecto
  • EMAIL: una dirección de correo que representa una cuenta de Google específica. Por ejemplo, alice@example.com.
  • DATABASE_ID: un ID de base de datos.
  • TITLE: un título opcional para la expresión.
  • DESCRIPTION: una descripción opcional de la expresión.

Conceder acceso a todas las bases de datos excepto a una

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'

Configura lo siguiente:

  • PROJECT_ID: tu ID de proyecto
  • EMAIL: una dirección de correo que representa una cuenta de Google específica. Por ejemplo, alice@example.com.
  • DATABASE_ID: un ID de base de datos.
  • TITLE: un título opcional para la expresión.
  • DESCRIPTION: una descripción opcional de la expresión.

Quitar políticas de un miembro y un rol concretos

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

Configura lo siguiente:

  • PROJECT_ID: tu ID de proyecto
  • EMAIL: una dirección de correo que representa una cuenta de Google específica. Por ejemplo, alice@example.com.

Cloud Monitoring

Las métricas de Firestore se registran en dos recursos monitorizados.

Para consultar las métricas agregadas a nivel de base de datos, consulte firestore.googleapis.com/Database. Las métricas que se muestran en firestore_instance se agregan a nivel de proyecto.

Limitaciones

Siguientes pasos