Crear y administrar bases de datos

En esta página se describe cómo crear, actualizar y eliminar bases de datos de Firestore con compatibilidad con MongoDB. 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.

Uso del nivel gratuito

Firestore ofrece un nivel gratuito que te permite dar tus primeros pasos sin coste alguno.

El nivel gratuito se aplica a una sola base de datos de Firestore por proyecto. La primera base de datos que se cree en un proyecto sin una base de datos de nivel gratuito obtendrá el nivel gratuito. Si se elimina la base de datos con el nivel gratuito aplicado, la siguiente base de datos que se cree recibirá el nivel gratuito.

Antes de empezar

Antes de crear una base de datos, debes completar los siguientes pasos:

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

  2. Asigna los roles de Gestión de Identidades y Accesos adecuados, tal como se describe en la siguiente sección.

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 de Firestore con compatibilidad con MongoDB, usa uno de los siguientes métodos:

Google Cloud 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 una base de datos de Firestore.
  3. Introduce un ID de base de datos.
  4. Selecciona Enterprise Edition.
  5. Selecciona una ubicación para tu base de datos.
  6. (Opcional) Si necesitas personalizar el cifrado, haz clic en Mostrar opciones de cifrado y configura las opciones de cifrado.
  7. Haz clic en Crear base de datos.
CLI de Firebase
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
CLI de gcloud

Usa el comando gcloud firestore databases create y define --edition=enterprise.

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

Haz los cambios siguientes:

Para habilitar la protección frente a la eliminación, añade la marca --delete-protection. 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.

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

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
Terraform

Usa el recurso google_firestore_database y asigna a database_edition el valor 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"
}

Haz los cambios siguientes:

Para habilitar la protección frente a la eliminación, asigna el valor DELETE_PROTECTION_ENABLED a delete_protection_state. 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 son aquellos 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. La protección contra la eliminación funciona de la siguiente manera:

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

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

CLI de gcloud

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

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

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

    Ir a Bases de datos

  2. Selecciona una base de datos de la lista.
CLI de gcloud

Usa el comando gcloud firestore databases describe:

gcloud firestore databases describe --database=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, habilitar o inhabilitar la protección contra eliminación.

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:

CLI de 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:

CLI de 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. Eliminar una base de datos no conlleva ningún cargo por las operaciones de eliminación.

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

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

    Ir a Bases de datos

  2. En la columna Acciones de la base de datos que quiere eliminar, haga 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.

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

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 clonar. 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: a 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 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 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 específica. Por ejemplo, alice@example.com.

Limitaciones

Puedes tener un máximo de 100 bases de datos por proyecto. Puedes ponerte en contacto con el equipo de Asistencia para solicitar que se aumente este límite.

Siguientes pasos