Administrar bases de datos

En esta página, se describe cómo crear, actualizar y borrar bases de datos de Cloud Firestore. Puedes crear múltiples bases de datos Cloud Firestore por en un proyecto final. Puedes usar varias bases de datos para configurar entornos de producción y de pruebas, aislar datos de clientes y regionalizarlos.

La base de datos (default)

Si tu app no requiere varias bases de datos, usa la base de datos (default).

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

Puedes usar la cuota gratuita solo en la base de datos (default).

Roles obligatorios

Para crear y administrar bases de datos, necesitas el rol de Identity and Access Management Owner o Datastore Owner. Estos roles otorgan los permisos necesarios.

Permisos necesarios

Para administrar 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
  • Borrae una base de datos: datastore.databases.delete

Crea una base de datos

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

Console
  1. En la consola Firebase, ve a la página Base de datos de Firestore:

    Ir a la base de datos de Firestore

  2. Si esta es la primera base de datos con nombre, haz clic en Agregar base de datos.
  3. De lo contrario, haz clic en (predeterminada) y, luego, en Agregar base de datos.
  4. Configura tu base de datos. Ingresa un ID de la base de datos. Seleccionar una ubicación. Haga 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]

Reemplaza lo siguiente:

--delete-protection es una marca opcional para habilitar la protección contra la eliminación. No puedes borrar una base de datos que tenga habilitada la protección contra la eliminación hasta que inhabilites este parámetro de configuración. Esta configuración está inhabilitada de forma predeterminada.

Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

Reemplaza lo siguiente:

--delete-protection es un argumento opcional para habilitar la protección contra la eliminación. No puedes borrar una base de datos que tenga habilitada la protección contra la eliminación hasta que inhabilites este parámetro de configuración. Esta configuración está inhabilitada 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
}

Reemplaza lo siguiente:

delete_protection_state es un argumento opcional para habilitar la protección contra la eliminación. No puedes borrar una base de datos que tenga habilitada la protección contra la eliminación hasta que inhabilites este parámetro de configuración. Esta configuración está inhabilitada de forma predeterminada.

ID de la base de datos

Los IDs válidos de bases de datos incluyen (default) y los IDs que cumplen con lo siguiente:

  • 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.
  • Con 4 caracteres como mínimo
  • Puede tener un máximo de 63 caracteres.
  • No debe ser un UUID ni parecerse a un UUID. Por ejemplo, no uses un ID como f47ac10b-58cc-0372-8567-0e02b2c3d479.

Si borras una base de datos, no podrás volver a usar de inmediato su ID hasta después de 5 minutos.

Protección contra la eliminación

Usa la protección contra la eliminación para evitar que se borre accidentalmente una base de datos. No puedes borrar una base de datos que tenga habilitada la protección contra la eliminación hasta que la inhabilites. La protección contra la eliminación está inhabilitada de forma predeterminada. Puedes habilitarla cuando creas la base de datos o puedes actualizar la configuración de una base de datos.

Configura Cloud Firestore Security Rules para tus bases de datos

Usa la CLI de Firebase para implementar Cloud Firestore Security Rules en cada uno de tus bases de datos. Consulta la guía para administrar e implementar Cloud Firestore Security Rules.

Accede a una base de datos con nombre con una biblioteca cliente

Una base de datos con nombre incluye cualquier base de datos que no tenga el nombre (default). De forma predeterminada, los SDK de Firebase y las bibliotecas cliente de la API de Google se conectan a la base de datos de (default) Cloud Firestore en un proyecto. Para crear un cliente conectado a una base de datos con nombre, configura el ID de la base de datos cuando crees una instancia de cliente.

Enumerar bases de datos

Usa uno de los siguientes métodos para obtener una lista de tus bases de datos:

Console

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

Ir a Bases de datos

gcloud

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

gcloud firestore databases list
Firebase CLI

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

firebase firestore:databases:list

Visualiza los detalles de la base de datos

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

gcloud

Usa el comando gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

Firebase CLI

Usa el comando firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Reemplaza DATABASE_ID por un ID de la base de datos.

Actualiza la configuración de la base de datos

Para actualizar la configuración de una base de datos, usa el comando gcloud firestore databases update. Usa este comando para habilitar o inhabilitar la protección contra eliminaciones.

Actualiza la configuración de protección contra eliminaciones

Para habilitar la protección contra eliminaciones 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

Reemplaza DATABASE_ID por un ID de la base de datos.

Para inhabilitar la protección contra eliminaciones 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

Reemplaza DATABASE_ID por un ID de la base de datos.

Borrar una base de datos

Para borrar una base de datos, usa la consola o la herramienta de línea de comandos.

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

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

Cuando se borra una base de datos, no se borra automáticamente ningún activador de Eventarc de la base de datos. El activador deja de entregar eventos, pero sigue existiendo hasta que lo borras.

Console
  1. En la consola Firebase, ve a la página Base de datos de Firestore:

    Ir a la base de datos de Firestore

  2. En la pestaña Datos, sobre la vista de tabla de datos de la base de datos, haz clic en y, luego, selecciona Borrar base de datos.
  3. Sigue las instrucciones para borrar la base de datos.
gcloud

Usa el comando `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Reemplaza DATABASE_ID por el ID de la base de datos que deseas borrar.

Configura permisos de acceso por base de datos

Puedes usar las Condiciones de Identity and Access Management para configurar los permisos de acceso a nivel de cada base de datos. En los siguientes ejemplos, se usa Google Cloud CLI para asignar acceso condicional a una o más bases de datos. También puedes definir las condiciones de IAM en la consola de Google Cloud.

Ve las políticas de IAM existentes

gcloud projects get-iam-policy PROJECT_ID

PROJECT_ID: Establece el ID del proyecto.

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

Establezca lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • EMAIL: Una dirección de correo electrónico 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.

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

Establezca lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • EMAIL: Una dirección de correo electrónico 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.

Quita las políticas de un miembro y un rol determinados

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

Establezca lo siguiente:

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

Cloud Monitoring

Las métricas de Cloud Firestore se informan en dos recursos supervisados.

Para inspeccionar las métricas agregadas a nivel de la base de datos, observa firestore.googleapis.com/Database. Las métricas que se informan en firestore_instance se agregan a nivel del proyecto.

Limitaciones

Próximos pasos