Crea y administra bases de datos
En esta página, se describe cómo crear, actualizar y borrar bases de datos de Firestore. 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 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 Firestore
y Google Cloud CLI se conectarán a la base de datos (default)
de forma predeterminada.
(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
-
En la consola de Google Cloud, ve a la página Bases de datos.
- Haz clic en Crear base de datos.
- Selecciona un modo de base de datos. Haga clic en Continue.
- Configura tu base de datos. Ingresa un ID de la base de datos. Seleccionar una ubicación. Selecciona reglas de seguridad para clientes web y para dispositivos móviles. 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]
Reemplaza lo siguiente:
- DATABASE_ID: Es un ID de base de datos válido.
- LOCATION: Es el nombre de una región o multirregión de Firestore.
- DATABASE_TYPE: Es
firestore-native
para el modo nativo odatastore-mode
para el modo Datastore.
--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:
- DATABASE_ID: Es un ID de base de datos válido.
- LOCATION: Es el nombre de una región o multirregión de Firestore.
- DELETE_PROTECTION_ENABLEMENT por
ENABLED
oDISABLED
.
La base de datos creada siempre está en modo nativo de Firestore.
--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:
- DATABASE_ID: Es un ID de base de datos válido.
- LOCATION: Es el nombre de una región o multirregión de Firestore.
- DATABASE_TYPE: Es
FIRESTORE_NATIVE
para el modo nativo oDATASTORE_MODE
para el modo Datastore. - DELETE_PROTECTION_ENABLEMENT por
DELETE_PROTECTION_ENABLED
oDELETE_PROTECTION_DISABLED
.
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 reglas de seguridad de Firestore para tus bases de datos
Usa Firebase CLI para implementar reglas de seguridad de Firestore en cada una de tus bases de datos. Consulta la guía para administrar e implementar reglas de seguridad de Firestore.
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 (default)
de 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.
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 cambiar el tipo de base de datos o activar o desactivar la protección contra eliminaciones.
Cambia 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
Reemplaza lo siguiente:
- DATABASE_ID: Un ID de base de datos.
- DATABASE_TYPE: Es
firestore-native
para el modo nativo odatastore-mode
para el modo Datastore.
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
-
En la consola de Google Cloud, ve a la página Bases de datos.
- Haz clic en Ver más en la fila de la tabla de la base de datos que quieras borrar. Haz clic en Borrar. Aparecerá un cuadro de diálogo.
En el cuadro de diálogo ¿Quieres borrar la base de datos?, escribe el ID de la base de datos en el campo de texto para confirmar la eliminación. Haz clic en Borrar. La consola te informa sobre el éxito o el fracaso de la operación.
Si la operación falla, consulta los detalles de la base de datos y verifica que la protección contra eliminaciones esté inhabilitada. Si quieres inhabilitar la protección contra eliminaciones, consulta Actualiza la configuración de la protección contra eliminaciones.
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 proyectoEMAIL
: 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 proyectoEMAIL
: 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 proyectoEMAIL
: 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 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
- Puedes tener un máximo de 100 bases de datos por proyecto y comunicarte con el equipo de asistencia para solicitar un aumento de este límite.
- No puedes borrar tu base de datos de
(default)
si contiene datos de búsqueda de GAE. Usa la API de eliminación de índices para borrar los datos de búsqueda de GAE. Si borraste recientemente los datos de GAE Search, es posible que haya un período de espera antes de que puedas borrar la base de datos. - No puedes borrar la base de datos
(default)
si contiene alguna entidad de BLOB. Usa la API de eliminación de Blobstore para borrar los datos de Blobstore. Para verificar si tu base de datos(default)
tiene datos de Blobstore, ejecuta la siguiente consulta de GQL en la consola de Google Cloud:SELECT * FROM __BlobInfo__
. - No puedes volver a usar el ID de una base de datos hasta 5 minutos después de que se realiza la eliminación.
- Cloud Function v1 no es compatible con las bases de datos con nombre de Firestore. Usa los activadores de Cloud Firestore (2ª gen.) para configurar eventos para bases de datos con nombre.
- Es posible que los activadores de funciones de Firestore v1 y los activadores de eventos de Firestore dejen de funcionar después de que se borre la base de datos, incluso si se crea una nueva con el mismo nombre.