Un servicio Firebase Data Connect tiene tres componentes principales:
- Una base de datos subyacente de PostgreSQL con su propio esquema SQL
- un esquema de aplicación Data Connect (declarado en tus archivos
.gql
) - una serie de conectores (declarados en tus archivos
.gql
).
El esquema SQL es la fuente de información de tus datos, el esquema Data Connect es la forma en que tus conectores pueden ver esos datos, y los conectores declaran las APIs que tus clientes pueden usar para acceder a esos datos.
Cuando implementes tu servicio de Data Connect con la CLI, migrarás tu esquema de SQL, luego actualizarás tu esquema de Data Connect y, luego, actualizarás cada uno de tus conectores.
Conceptos importantes de la implementación
Para comprender completamente la implementación, es importante tener en cuenta los conceptos clave sobre los esquemas y los conectores.
Implementaciones de esquemas
La implementación de un esquema Data Connect afecta el esquema SQL de tu base de datos de Cloud SQL. Data Connect te ayuda a migrar tus esquemas durante la implementación, ya sea que trabajes con una base de datos nueva o necesites adaptar una base de datos existente de forma no destructiva.
Las migraciones de esquemas Data Connect tienen dos modos de validación de esquemas diferentes: estricto y compatible.
La validación del modo estricto requiere que el esquema de la base de datos coincida exactamente con el esquema de la aplicación antes de que se pueda actualizar. Todas las tablas o columnas que no se usen en tu esquema Data Connect se borrarán de la base de datos.
La validación del modo compatible requiere que el esquema de la base de datos sea compatible con el esquema de la aplicación antes de que se pueda actualizar. Los cambios adicionales que eliminen esquemas, tablas o columnas son opcionales.
Compatible significa que las migraciones de esquemas solo afectan a las tablas y columnas a las que se hace referencia en el esquema de tu aplicación. Los elementos de la base de datos que no use el esquema de tu aplicación no se modifican. Por lo tanto, después de la implementación, es posible que tu base de datos contenga lo siguiente sin usar:
- Esquemas
- Tables
- Columnas
Implementaciones de conectores
El código del cliente no envía las consultas ni las mutaciones de Data Connect, y no se ejecutan en el servidor. En cambio, cuando se implementan, estas operaciones Data Connect se almacenan en el servidor, como Cloud Functions. Esto significa que la implementación puede dañar a los usuarios existentes.
Sigue el flujo de trabajo de implementación
Puedes trabajar en un proyecto Data Connect en un directorio de proyectos local y en la consola de Firebase.
Un flujo de implementación recomendado implica lo siguiente:
- Muestra una lista de los esquemas y conectores implementados actualmente con
firebase dataconnect:services:list
. - Administrar las actualizaciones de esquemas
- Verifica si hay diferencias en el esquema de SQL entre tu base de datos de Cloud SQL
y el esquema local de Data Connect con
firebase dataconnect:sql:diff
. - Si es necesario, realiza la migración del esquema de SQL con
dataconnect:sql:migrate
.
- Verifica si hay diferencias en el esquema de SQL entre tu base de datos de Cloud SQL
y el esquema local de Data Connect con
- Ejecutar
firebase deploy
para realizar implementaciones de esquemas y conexiones, ya sea solo para tu esquema, solo para tus conectores o combinaciones de recursos
Implementa y administra recursos de Data Connect
Es recomendable verificar los recursos de producción antes de realizar implementaciones.
firebase dataconnect:services:list
Cuando trabajes en un directorio de proyecto local, por lo general, usarás el comando firebase deploy
para implementar tu esquema y conectores en producción, con comentarios interactivos.
Con cualquier comando deploy
, la marca --only dataconnect
te permite separar
las implementaciones de Data Connect de otros productos de tu proyecto.
Implementación normal
firebase deploy --only dataconnect
En esta implementación normal, la CLI de Firebase intenta implementar tu esquema y conectores.
Valida que el esquema nuevo no rompa ningún conector existente. Sigue las prácticas recomendadas cuando realices cambios que generen interrupciones.
También verifica que el esquema SQL ya se haya migrado antes de actualizar el esquema Data Connect. De lo contrario, se te solicitará automáticamente que realices los pasos necesarios para migrar los esquemas.
Implementación de la marca --force
firebase deploy --only dataconnect --force
Si no te preocupan las validaciones del conector ni del esquema de SQL, puedes volver a ejecutar el comando con --force
para ignorarlas.
La implementación de --force
aún verifica si el esquema SQL coincide con el esquema Data Connect, advierte sobre la incompatibilidad y muestra mensajes.
Implementa los recursos seleccionados
Para implementar con un control más detallado, usa la marca --only
con el argumento serviceId
. Para implementar solo los cambios de esquema de un servicio en particular, haz lo siguiente:
firebase deploy --only dataconnect:serviceId:schema
También puedes implementar todos los recursos de un conector y un servicio específicos.
firebase deploy --only dataconnect:serviceId:connectorId
Por último, puedes implementar el esquema y todos los conectores para un solo servicio.
firebase deploy --only dataconnect:serviceId
Revierte una implementación
Para realizar una reversión manual, consulta una versión anterior de tu código y implementala. Si la implementación original incluyó cambios destructivos, es posible que no puedas recuperar por completo los datos borrados.
Cómo migrar esquemas de bases de datos
Si creas prototipos con rapidez, experimentas con esquemas y sabes que los cambios en ellos son destructivos, puedes planificar el uso de herramientas de Data Connect para verificar los cambios y supervisar cómo se llevan a cabo las actualizaciones.
Diferencia los cambios en el esquema de SQL
Puedes verificar los cambios de la siguiente manera:
firebase dataconnect:sql:diff
Puedes pasar una lista de servicios separados por comas.
El comando compara el esquema local de un servicio con el esquema actual de la base de datos de Cloud SQL correspondiente. Si hay una diferencia, imprime los comandos SQL que se ejecutarían para corregirla.
Aplica cambios
Cuando estés conforme y listo para implementar los cambios en la instancia de Cloud SQL del esquema, emite el comando firebase dataconnect:sql:migrate
. Se te pedirá que apruebes los cambios.
firebase dataconnect:sql:migrate [serviceId]
En los entornos interactivos, se muestran instrucciones de migración de SQL y mensajes de acción.
Cómo migrar en modo estricto o compatible
En un proyecto nuevo, se aplica el modo de validación de esquemas predeterminada. El comportamiento del comando migrate
es aplicar todos los cambios en el esquema de la base de datos que requiere el esquema de tu aplicación y, luego, solicitarte que apruebes las operaciones opcionales que eliminan esquemas, tablas o columnas para forzar que el esquema de la base de datos coincida exactamente con el esquema de tu aplicación.
Para ajustar este comportamiento, modifica el archivo dataconnect.yaml
.
Quita el comentario de la clave schemaValidation
y declara COMPATIBLE
para que solo se apliquen los cambios necesarios en las migraciones.
schemaValidation: "COMPATIBLE"
O bien establece el comportamiento en STRICT
para que se apliquen todos los cambios de esquema y el esquema de la base de datos se vea obligado a coincidir con el esquema de la aplicación.
schemaValidation: "STRICT"
Consulta la referencia de la CLI de Data Connect para obtener más información.
Prácticas recomendadas para administrar esquemas y conectores
Firebase recomienda algunas prácticas que debes seguir en tus proyectos de Data Connect.
Minimiza los cambios rotundos
- Firebase recomienda mantener el esquema y los archivos del conector Data Connect en el control de código fuente.
- Evita los cambios bruscos siempre que sea posible. Estos son algunos ejemplos comunes de cambios que generan errores:
- Cómo quitar un campo de tu esquema
- Hacer que un campo anulable en tu esquema no sea anulable (es decir,
Int
->Int!
) - Cambiar el nombre de un campo en tu esquema
- Si necesitas quitar un campo de tu esquema, considera dividirlo
en algunas implementaciones para minimizar el impacto:
- Primero, quita todas las referencias al campo en tus conectores y, luego, implementa el cambio.
- A continuación, actualiza tus apps para que usen los SDKs recién generados.
- Por último, quita el campo del archivo
.gql
del esquema, migra el esquema SQL y, luego, vuelve a realizar la implementación.
Usa el modo estricto cuando trabajes con bases de datos nuevas
Si usas Data Connect con una base de datos nueva y desarrollas de forma activa el esquema de tu aplicación, y deseas asegurarte de que el esquema de la base de datos permanezca exactamente alineado con el esquema de tu aplicación, puedes especificar schemaValidation: "STRICT"
en tu dataconnect.yaml
.
Esto garantizará que también se apliquen los cambios opcionales.
Usa el modo compatible cuando tengas datos de producción en tu base de datos
Si realizas cambios en una base de datos que contiene datos de producción, te recomendamos que ejecutes las migraciones de esquemas en modo compatible para asegurarte de que no se descarten los datos existentes. Puedes especificar schemaValidation: "COMPATIBLE"
en tu dataconnect.yaml
.
En el modo compatible, solo se aplican a tu base de datos los cambios de migración de esquema necesarios.
DROP SCHEMA
,DROP TABLE
yDROP COLUMN
se consideran instrucciones opcionales y no se generarán para tu plan, incluso si el esquema de tu base de datos contiene esquemas, tablas o columnas que no están definidos en el esquema de tu aplicación.- Si la tabla de la base de datos contiene una columna no nula que no se incluye en el esquema de la aplicación, se quitará la restricción
NOT NULL
para que los datos se puedan agregar a la tabla con los conectores definidos.
Próximos pasos
- La implementación y administración del código cliente que desarrollas con los SDKs generados se abordan en las guías para Android, iOS, Web y Flutter.
- Para obtener más información sobre las herramientas de implementación, consulta la referencia de la CLI de Data Connect y la referencia del archivo de configuración de Data Connect.