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:
-
Verify that billing is enabled for your Google Cloud project.
- 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
-
En la Google Cloud consola, ve a la página Bases de datos.
- Haz clic en Crear una base de datos de Firestore.
- Introduce un ID de base de datos.
- Selecciona Enterprise Edition.
- Selecciona una ubicación para tu base de datos.
- (Opcional) Si necesitas personalizar el cifrado, haz clic en Mostrar opciones de cifrado y configura las opciones de cifrado.
- 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:
- DATABASE_ID: un ID de base de datos válido.
- LOCATION: el nombre de una multirregión o una región de Firestore con compatibilidad con MongoDB.
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:
- DATABASE_ID: un ID de base de datos válido.
- LOCATION: el nombre de una multirregión o una región de Firestore con compatibilidad con MongoDB.
- DELETE_PROTECTION_ENABLEMENT: puede ser
DELETE_PROTECTION_ENABLED
oDELETE_PROTECTION_DISABLED
.
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.
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
-
En la Google Cloud consola, ve a la página Bases de datos.
- 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
-
En la Google Cloud consola, ve a la página Bases de datos.
- 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.
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
En la Google Cloud consola, ve a la página Bases de datos.
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.En el cuadro de diálogo Crear un clon, proporciona los parámetros para clonar la base de datos:
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.
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.
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
o2025-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 proyectoEMAIL
: 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 proyectoEMAIL
: 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 proyectoEMAIL
: 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
- Sigue los pasos de la guía de inicio rápido para crear una base de datos y conectarte a ella.
- Consulta las diferencias de comportamiento.
- Consulta información sobre las métricas de Cloud Monitoring de Firestore con compatibilidad con MongoDB.