Data Connect-Schemas und ‑Connectors bereitstellen und verwalten

Ein Firebase Data Connect-Dienst besteht aus drei Hauptkomponenten:

  • Eine zugrunde liegende PostgreSQL-Datenbank mit einem eigenen SQL-Schema
  • ein Data Connect-Anwendungsschema (in Ihren .gql-Dateien deklariert)
  • über mehrere Connectors, die in deinen .gql-Dateien deklariert sind.

Das SQL-Schema ist die zentrale Informationsquelle für Ihre Daten, die Data Connect. ist, wie die Connectors diese Daten sehen können. APIs, mit denen Ihre Clients auf diese Daten zugreifen können.

Wenn Sie den Data Connect-Dienst über die Befehlszeile bereitstellen, führen Sie folgende Schritte aus: Migrieren Sie zuerst Ihr SQL-Schema, aktualisieren Sie dann das Data Connect-Schema und aktualisieren Sie die einzelnen Connectors.

Wichtige Bereitstellungskonzepte

Für ein umfassendes Verständnis der Bereitstellung müssen die wichtigsten Konzepte Schemas und Connectors.

Schemabereitstellungen

Die Bereitstellung eines Data Connect-Schemas wirkt sich auf das SQL-Schema für Ihre Cloud SQL-Datenbank Data Connect hilft Ihnen bei der Migration Ihrer Schemas während der Bereitstellung, ob Sie nun mit einer neuen Datenbank arbeiten oder eine vorhandene Datenbank zerstörungsfrei anpassen.

Data Connect Schemamigration hat zwei verschiedene Schemavalidierungen Modi: strict und compatible.

  • Bei der Validierung im strengen Modus muss das Datenbankschema genau mit dem Anwendungsschema übereinstimmen, bevor das Anwendungsschema aktualisiert werden kann. Alle Tabellen oder Spalten, die nicht in Ihrem Data Connect-Schema verwendet werden, werden aus der Datenbank gelöscht.

  • Für die Validierung des kompatiblen Modus muss das Datenbankschema mit dem Anwendungsschema kompatibel sein, bevor das Anwendungsschema aktualisiert werden kann. Zusätzliche Änderungen, durch die Schemata, Tabellen oder Spalten gelöscht werden, sind optional.

    Kompatibel bedeutet, dass Schemamigrationen nur Tabellen und Spalten betreffen auf die in Ihrem Anwendungsschema verwiesen wird. Elemente in Ihrer Datenbank, die nicht von Ihrem Anwendungsschema verwendet werden, bleiben unverändert. Daher ist nach Bereitstellung verwenden, enthält Ihre Datenbank möglicherweise Folgendes:

    • Schemas
    • Tables
    • Spalten

Connector-Bereitstellungen

Data Connect-Abfragen und -Mutationen sind nicht vom Clientcode übermittelt und auf dem Server ausgeführt. Bei der Bereitstellung werden diese Data Connect-Vorgänge auf dem Server gespeichert, z. B. Cloud Functions. Das bedeutet, dass die Bereitstellung möglicherweise vorhandene Nutzer beeinträchtigt.

Deployment-Workflow ausführen

Sie können sowohl in einem lokalen Projekt an einem Data Connect-Projekt arbeiten und in der Firebase-Konsole.

Ein empfohlener Bereitstellungsablauf umfasst:

  1. Aktuell bereitgestellte Schemas und Connectors werden mit firebase dataconnect:services:list
  2. Verwalten von Schemaaktualisierungen
    1. Prüfen Sie, ob sich das SQL-Schema in Cloud SQL unterscheidet. Datenbank und lokales Data Connect-Schema mit firebase dataconnect:sql:diff.
    2. Führen Sie bei Bedarf eine SQL-Schemamigration mit dataconnect:sql:migrate aus.
  3. Führen Sie Schema- und Verbindungsbereitstellungen aus, indem Sie firebase deploy ausführen, entweder nur für Ihr Schema, nur für Ihre Connectors oder Ihre Ressourcenkombinationen.

Data Connect-Ressourcen bereitstellen und verwalten

Es empfiehlt sich, die Produktionsressourcen vor der Bereitstellung zu überprüfen.

firebase dataconnect:services:list

Wenn Sie in einem lokalen Projektverzeichnis arbeiten, verwenden Sie in der Regel die Methode Mit dem Befehl firebase deploy können Sie das Schema und die Connectors in der Produktion bereitstellen. mit interaktivem Feedback.

Mit dem Flag --only dataconnect können Sie Data Connect-Bereitstellungen mithilfe eines beliebigen deploy-Befehls von anderen Produkten in Ihrem Projekt trennen.

Normale Bereitstellung

firebase deploy --only dataconnect

Bei dieser normalen Bereitstellung versucht die Firebase-Befehlszeile, Ihr Schema und Ihre Connectors bereitzustellen.

Dabei wird geprüft, ob das neue Schema vorhandene Connectors nicht abbricht. Beachten Sie bei bahnbrechenden Änderungen die Best Practices.

Außerdem wird überprüft, ob das SQL-Schema bereits migriert wurde, bevor der Data Connect-Schema. Andernfalls werden Sie automatisch durch alle erforderlichen Schritte zur Migration von Schemas geführt.

Bereitstellung des Flags --force

firebase deploy --only dataconnect --force

Wenn weder die Validierung des Connectors noch die des SQL-Schemas ein Problem darstellt, können Sie den Befehl mit --force noch einmal ausführen, um sie zu ignorieren.

Beim --force-Bereitstellen wird weiterhin geprüft, ob das SQL-Schema mit dem Data Connect-Schema übereinstimmt. Außerdem werden Inkompatibilitäten erkannt und entsprechende Aufforderungen angezeigt.

Ausgewählte Ressourcen bereitstellen

Wenn Sie die Bereitstellung detaillierter steuern möchten, verwenden Sie das Flag --only mit dem Argument serviceId. So stellen Sie nur Schemaänderungen für einen bestimmten Dienst bereit:

firebase deploy --only dataconnect:serviceId:schema

Sie können auch alle Ressourcen für einen bestimmten Connector und Dienst bereitstellen.

firebase deploy --only dataconnect:serviceId:connectorId

Schließlich können Sie das Schema und alle Connectors für einen einzelnen Dienst bereitstellen.

firebase deploy --only dataconnect:serviceId

Deployment rückgängig machen

Um ein manuelles Rollback durchzuführen, prüfen Sie eine frühere Version Ihres Codes und bereitstellen. Wenn die ursprüngliche Bereitstellung zerstörerische Änderungen umfasste, können Sie die gelöschten Daten möglicherweise nicht vollständig wiederherstellen.

Datenbankschemata migrieren

Wenn Sie schnell Prototypen erstellen, mit Schemas experimentieren und wissen, dass Ihre Schemaänderungen zerstörerisch sind, können Sie Data Connect-Tools verwenden, um die Änderungen zu überprüfen und die Durchführung der Updates zu überwachen.

SQL-Schemaänderungen vergleichen

So überprüfen Sie Änderungen:

firebase dataconnect:sql:diff

Sie können eine durch Kommas getrennte Liste von Diensten übergeben.

Der Befehl vergleicht das lokale Schema für einen Dienst mit dem aktuellen Schema der entsprechenden Cloud SQL-Datenbank. Gibt es einen Unterschied, druckt er SQL-Befehle, die ausgeführt werden, um diesen Unterschied zu beheben

Änderungen übernehmen

Wenn Sie mit den Änderungen zufrieden sind und sie in der Cloud SQL-Instanz des Schemas bereitstellen möchten, geben Sie den Befehl firebase dataconnect:sql:migrate ein. Sie werden um Änderungen zu genehmigen.

firebase dataconnect:sql:migrate [serviceId]

In interaktiven Umgebungen werden SQL-Migrationsanweisungen und Aufforderungen zu Aktionen angezeigt.

Im strikten oder kompatiblen Modus migrieren

In einem ganz neuen Projekt wird standardmäßig der Schemavalidierungsmodus verwendet. gilt. Der Befehl migrate wendet alle Datenbankschemaänderungen an, die für Ihr Anwendungsschema erforderlich sind, und fordert Sie dann auf, optionale Vorgänge zu genehmigen, bei denen Schemas, Tabellen oder Spalten gelöscht werden, damit Ihr Datenbankschema genau mit Ihrem Anwendungsschema übereinstimmt.

Sie können dieses Verhalten anpassen, indem Sie die dataconnect.yaml-Datei ändern. Entfernen Sie die Kommentarzeichen des Schlüssels schemaValidation und deklarieren Sie COMPATIBLE, sodass nur erforderliche Änderungen werden auf Migrationen angewendet.

schemaValidation: "COMPATIBLE"

Sie können das Verhalten auch auf STRICT festlegen, damit alle Schemaänderungen angewendet werden und das Datenbankschema dem Anwendungsschema entsprechen muss.

schemaValidation: "STRICT"

Weitere Informationen finden Sie in der Data Connect-Befehlszeilenreferenz.

Best Practices für das Verwalten von Schemas und Verbindungen

Firebase empfiehlt einige Praktiken, die Sie in Ihren Data Connect-Projekten beachten sollten.

Nicht abwärtskompatible Änderungen minimieren

  • Firebase empfiehlt, die Data Connect-Schema- und ‑Verbindungsdateien in der Versionskontrolle zu verwalten.
  • Vermeiden Sie nach Möglichkeit funktionsgefährdende Änderungen. Einige gängige Beispiele für Probleme Zu den Änderungen gehören:
    • Feld aus Ihrem Schema entfernen
    • Ein Feld in Ihrem Schema, für das Nullwerte zulässig sind, so ändern, dass keine Nullwerte zulässig sind (Int -> Int!)
    • Feld in Ihrem Schema umbenennen
  • Wenn Sie ein Feld aus Ihrem Schema entfernen müssen, sollten Sie es in mehrere Bereitstellungen aufteilen, um die Auswirkungen zu minimieren:
    • Entfernen Sie zuerst alle Verweise auf das Feld in Ihren Connectors und implementieren Sie die Änderung.
    • Aktualisieren Sie als Nächstes Ihre Apps, damit sie die neu generierten SDKs verwenden.
    • Entfernen Sie abschließend das Feld in der Schemadatei .gql, migrieren Sie Ihr SQL-Schema und stellen Sie es noch einmal bereit.

Bei der Arbeit mit neuen Datenbanken den strikten Modus verwenden

Wenn Sie Data Connect mit einer neuen Datenbank verwenden und Ihr Anwendungsschema aktiv entwickeln und dafür sorgen möchten, dass Ihr Datenbankschema genau mit Ihrem Anwendungsschema übereinstimmt, können Sie schemaValidation: "STRICT" in Ihrer dataconnect.yaml angeben.

So werden auch optionale Änderungen angewendet.

Kompatiblen Modus verwenden, wenn Produktionsdaten in der Datenbank vorhanden sind

Wenn Sie Änderungen an einer Datenbank mit Produktionsdaten vornehmen, empfehlen, dass Sie die Schemamigrationen im kompatiblen Modus ausführen, vorhandene Daten nicht verworfen werden. Sie können schemaValidation: "COMPATIBLE" angeben in deinem dataconnect.yaml

Im kompatiblen Modus werden nur erforderliche Änderungen der Schemamigration auf Ihre Datenbank.

  • DROP SCHEMA, DROP TABLE und DROP COLUMN gelten als optional Anweisungen und werden nicht für Ihren Plan generiert, selbst wenn Ihr Datenbankschema Schemas, Tabellen oder Spalten enthält, die nicht in Ihrem Anwendungsschema definiert sind.
  • Wenn Ihre Datenbanktabelle eine Spalte enthält, die nicht null ist, die nicht in Ihrem Anwendungsschema wird die Einschränkung NOT NULL entfernt, damit Daten werden der Tabelle mit den definierten Connectors hinzugefügt.

Nächste Schritte