Esegui il deployment e la gestione di schemi e connettori di Data Connect

Un servizio Firebase Data Connect ha tre componenti principali:

  • Un database PostgreSQL sottostante con il proprio schema SQL
  • uno schema di applicazione Data Connect (dichiarato nei file .gql)
  • un numero di connettori (dichiarati nei file .gql).

Lo schema SQL è la fonte di riferimento per i tuoi dati, Data Connect è il modo in cui i connettori possono vedere questi dati e i connettori dichiarano API che i tuoi clienti possono utilizzare per accedere a questi dati.

Quando esegui il deployment del servizio Data Connect con la CLI, esegui la migrazione dello schema SQL, poi aggiorni lo schema Data Connect e infine aggiorni ciascun connettore.

Concetti importanti sul deployment

Per comprendere appieno il deployment, è importante prendere nota dei concetti chiave relativi a schemi e connettori.

Deployment di schemi

Il deployment di uno schema Data Connect influisce sullo schema SQL per il tuo un database Cloud SQL. Data Connect ti aiuta a eseguire la migrazione dei tuoi schemi durante il deployment, che tu stia lavorando con un nuovo database o adattare in modo non distruttivo un database esistente.

Data Connect migrazione dello schema ha due diverse convalida dello schema modalità: restrittiva e compatibile.

  • La convalida in modalità rigorosa richiede che lo schema del database corrisponda esattamente a lo schema dell'applicazione prima di poter essere aggiornato. Qualsiasi tabelle o colonne non utilizzate nello schema Data Connect verrà eliminato dal database.

  • La convalida della modalità compatibile richiede che lo schema del database sia compatibile con lo schema dell'applicazione prima che lo schema possa essere aggiornato; qualsiasi Ulteriori modifiche che eliminano schemi, tabelle o colonne sono facoltative.

    Con compatibile si intende che le migrazioni dello schema influiscono solo sulle tabelle e sulle colonne a cui si fa riferimento nello schema dell'applicazione. Elementi nel database che non sono usati dallo schema dell'applicazione non vengono modificati. Pertanto, dopo il deployment, il database potrebbe contenere:

    • Schemi
    • Tabelle
    • Colonne

Deployment di connettori

Data Connect query e mutazioni non sono inviate dal codice del client ed eseguite sul server. Al contrario, quando vengono implementate, queste operazioni Data Connect vengono archiviate sul server, ad esempio Cloud Functions. Ciò significa che il deployment potrebbe interrompere gli utenti esistenti.

Segui il flusso di lavoro del deployment

Puoi lavorare a un progetto Data Connect sia in un progetto locale e nella console Firebase.

Un flusso di deployment consigliato prevede:

  1. Elenco di schemi e connettori attualmente di cui è stato eseguito il deployment con firebase dataconnect:services:list.
  2. Gestire eventuali aggiornamenti dello schema.
    1. Verifica le differenze nello schema SQL tra il database Cloud SQL e lo schema locale di Data Connect con firebase dataconnect:sql:diff.
    2. Se necessario, esegui la migrazione dello schema SQL con dataconnect:sql:migrate.
  3. Esegui deployment di schema e connessione eseguendo firebase deploy, per solo lo schema, solo i connettori o combinazioni di risorse.

Esegui il deployment e gestisci le risorse di Data Connect

È buona norma verificare le risorse di produzione prima di eseguire i deployment.

firebase dataconnect:services:list

Quando lavori nella directory di un progetto locale, in genere usi firebase deploy per eseguire il deployment dello schema e dei connettori in produzione, con feedback interattivi.

Utilizzando qualsiasi comando deploy, il flag --only dataconnect ti consente di separare i deployment di Data Connect dagli altri prodotti nel tuo progetto.

Deployment normale

firebase deploy --only dataconnect

In questo deployment normale, l'interfaccia a riga di comando Firebase tenta di eseguire il deployment dello schema e connettori.

Verifica che il nuovo schema non interrompa i connettori esistenti. Segui le best practice quando apporti modifiche che comportano interruzioni.

Verifica inoltre che sia già stata eseguita la migrazione dello schema SQL prima di aggiornare lo schema Data Connect. In caso contrario, ti chiede automaticamente passaggi necessari per eseguire la migrazione degli schemi.

--force deployment del flag

firebase deploy --only dataconnect --force

Se né le convalide dello schema SQL né il connettore sono interessati, puoi esegui nuovamente il comando con --force per ignorarli.

Il deployment --force continua a controllare se lo schema SQL corrisponde alla Schema Data Connect, avvisi di incompatibilità e prompt.

Esegui il deployment delle risorse selezionate

Per eseguire il deployment con un controllo più granulare, utilizza il flag --only con l'argomento serviceId. Per eseguire il deployment solo delle modifiche allo schema per un particolare servizio:

firebase deploy --only dataconnect:serviceId:schema

Puoi anche eseguire il deployment di tutte le risorse per un connettore e un servizio specifici.

firebase deploy --only dataconnect:serviceId:connectorId

Infine, puoi eseguire il deployment dello schema e di tutti i connettori per un singolo servizio.

firebase deploy --only dataconnect:serviceId

Esegui il rollback di un deployment

Per eseguire un rollback manuale, controlla una versione precedente del codice e eseguirne il deployment. Se il deployment originale includeva modifiche distruttive, potresti non essere in grado di recuperare completamente i dati eliminati.

Esegui la migrazione degli schemi di database

Se stai creando rapidamente prototipi, esegui esperimenti con gli schemi e sai che le modifiche allo schema sono distruttive, puoi pianificare l'utilizzo degli strumenti Data Connect per verificare le modifiche e supervisionare la modalità di aggiornamento.

Modifiche allo schema SQL Diff

Puoi verificare le modifiche:

firebase dataconnect:sql:diff

Puoi trasmettere un elenco di servizi separati da virgole.

Il comando confronta lo schema locale di un servizio con lo schema attuale dell'elemento corrispondente al database Cloud SQL. Se esiste una differenza, vengono stampati i comandi SQL che verranno eseguiti per correggerla.

Applica le modifiche

Quando hai finito e vuoi implementare le modifiche allo schema dell'istanza Cloud SQL, esegui il comando firebase dataconnect:sql:migrate. Ti verrà chiesto di approvare le modifiche.

firebase dataconnect:sql:migrate [serviceId]

Negli ambienti interattivi vengono visualizzati comandi di migrazione SQL e richieste di azione.

Migrazione in modalità rigorosa o compatibile

In un progetto nuovo di zecca, viene applicata la modalità di convalida dello schema predefinita. Il comportamento del comando migrate è applicare tutto lo schema del database modifiche richieste dallo schema dell'applicazione, poi ti verrà chiesto di approvare Operazioni facoltative che eliminano schemi, tabelle o colonne per forzare il database in modo che corrisponda esattamente a quello dell'applicazione.

Puoi modificare questo comportamento modificando il file dataconnect.yaml. Rimuovi il commento dalla chiave schemaValidation e dichiara COMPATIBLE in modo che vengono applicate alle migrazioni.

schemaValidation: "COMPATIBLE"

In alternativa, imposta il comportamento su STRICT in modo che tutte le modifiche allo schema vengano applicate e lo schema del database venga forzato in modo che corrisponda allo schema dell'applicazione.

schemaValidation: "STRICT"

Consulta il riferimento per l'interfaccia a riga di comando di Data Connect per ulteriori informazioni.

Best practice per la gestione di schemi e connettori

Firebase consiglia alcune pratiche da seguire in Data Connect in modo programmatico a gestire i progetti.

Riduci al minimo le modifiche che provocano un errore

  • Firebase consiglia di mantenere i file dello schema e del connettore Data Connect nel controllo del codice sorgente.
  • Se possibile, evita di interrompere le modifiche. Alcuni esempi comuni di interruzione del servizio le modifiche includono:
    • Rimozione di un campo dallo schema
    • Impostazione di un campo con valori null nello schema come non nullo (ad es. Int -> Int!)
    • Ridenominazione di un campo nello schema.
  • Se devi rimuovere un campo dallo schema, valuta la possibilità di suddividerlo in alcuni deployment per ridurre al minimo l'impatto:
    • Innanzitutto, rimuovi tutti i riferimenti al campo nei connettori e esegui il deployment della modifica.
    • Aggiorna le app in modo che utilizzino gli SDK appena generati.
    • Infine, rimuovi il campo nel file di schema .gql, esegui la migrazione del codice SQL ed eseguire ancora il deployment.

Utilizza la modalità con restrizioni quando lavori con nuovi database

Se utilizzi Data Connect con un nuovo database e stai sviluppando attivamente lo schema dell'applicazione e vuoi assicurarti che lo schema del database rimanga esattamente in linea con lo schema dell'applicazione, puoi specificare schemaValidation: "STRICT" in dataconnect.yaml.

In questo modo verranno applicate anche le modifiche facoltative.

Utilizza la modalità compatibile se nel database sono presenti dati di produzione

Se apporti modifiche a un database contenente dati di produzione, ti consigliamo di eseguire le migrazioni dello schema in modalità compatibile per assicurarti che i dati esistenti non vengano eliminati. Puoi specificare schemaValidation: "COMPATIBLE" nel tuo dataconnect.yaml

In modalità compatibile, vengono applicate al tuo account solo le modifiche richieste per la migrazione dello schema per configurare un database.

  • DROP SCHEMA, DROP TABLE e DROP COLUMN sono considerati comandi facoltativi e non verranno generati per il piano, anche se lo schema del database contiene schemi, tabelle o colonne non definiti nello schema dell'applicazione.
  • Se la tabella di database contiene una colonna non null non inclusa nello schema dell'applicazione, la limitazione NOT NULL verrà rimossa in modo che i dati possano essere comunque aggiunti alla tabella con i connettori definiti.

Quali sono i passaggi successivi?