Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Verwenden Sie den Cloud Firestore mit der Firebase-Echtzeitdatenbank

Sie können sowohl Firebase Realtime Database als auch Cloud Firestore in Ihrer App verwenden und die Vorteile jeder Datenbanklösung entsprechend Ihren Anforderungen nutzen. Beispielsweise möchten Sie möglicherweise die Unterstützung der Echtzeitdatenbank für die Präsenz nutzen, wie unter Erstellen der Präsenz im Cloud Firestore beschrieben .

Erfahren Sie mehr über die Unterschiede zwischen den Datenbanken .

Verschieben von Daten in den Cloud Firestore

Wenn Sie beschlossen haben, einige Ihrer Daten von der Echtzeitdatenbank in den Cloud Firestore zu migrieren, sollten Sie den folgenden Ablauf berücksichtigen. Da jede Datenbank spezielle Anforderungen und strukturelle Überlegungen hat, gibt es keinen automatisierten Migrationspfad. Stattdessen können Sie diesen allgemeinen Fortschritt verfolgen:

  1. Ordnen Sie die Datenstruktur und die Sicherheitsregeln von der Echtzeitdatenbank dem Cloud Firestore zu. Sowohl Realtime Database als auch Cloud Firestore basieren auf der Firebase-Authentifizierung, sodass Sie die Benutzerauthentifizierung für Ihre App nicht ändern müssen. Die Sicherheitsregeln und das Datenmodell sind jedoch unterschiedlich und es ist wichtig, diese Abweichungen sorgfältig zu berücksichtigen, bevor Sie Daten in den Cloud Firestore verschieben.

  2. Verschieben Sie historische Daten. Während Sie Ihre neue Datenstruktur im Cloud Firestore einrichten, können Sie vorhandene Daten aus der Echtzeitdatenbank zuordnen und in Ihre neue Cloud Firestore-Instanz verschieben. Wenn Sie jedoch beide Datenbanken in Ihrer App verwenden, müssen Sie keine historischen Daten aus der Echtzeitdatenbank verschieben.

  3. Spiegeln Sie neue Daten in Echtzeit in den Firestore. Verwenden Sie Cloud-Funktionen, um neue Daten in Ihre neue Cloud Firestore-Datenbank zu schreiben, wenn diese zur Echtzeitdatenbank hinzugefügt werden.

  4. Machen Sie Cloud Firestore zu Ihrer primären Datenbank für die migrierten Daten. Wenn Sie einige Ihrer Daten migriert haben, verwenden Sie Cloud Firestore als primäre Datenbank und reduzieren Sie die Verwendung Ihrer Echtzeitdatenbank für die migrierten Daten. Überlegen Sie, welche Versionen Ihrer App für diese Daten noch an die Echtzeitdatenbank gebunden sind und wie Sie sie weiterhin unterstützen möchten.

Stellen Sie sicher, dass Sie die Abrechnungskosten sowohl für die Echtzeitdatenbank als auch für den Cloud Firestore berücksichtigen.

Ordnen Sie Ihre Daten zu

Daten in der Echtzeitdatenbank sind als ein einziger Baum strukturiert, während Cloud Firestore explizitere Datenhierarchien durch Dokumente, Sammlungen und Untersammlungen unterstützt. Wenn Sie einige Ihrer Daten aus der Echtzeitdatenbank in den Cloud Firestore verschieben, sollten Sie eine andere Architektur für Ihre Daten in Betracht ziehen.

Wichtige Unterschiede zu berücksichtigen

Beachten Sie beim Verschieben von Daten aus Ihrer vorhandenen Echtzeitdatenbankstruktur in Cloud Firestore-Dokumente und -Sammlungen die folgenden Hauptunterschiede zwischen den Datenbanken, die sich auf die Strukturierung von Daten in Cloud Firestore auswirken können:

  • Flache Abfragen bieten mehr Flexibilität in hierarchischen Datenstrukturen.
  • Komplexe Abfragen bieten mehr Granularität und reduzieren den Bedarf an doppelten Daten.
  • Abfragecursor bieten eine robustere Paginierung.
  • Transaktionen erfordern keine gemeinsame Wurzel mehr für alle Ihre Daten und sind effizienter.
  • Die Abrechnungskosten unterscheiden sich zwischen Realtime Database und Cloud Firestore. In vielen Fällen ist der Cloud Firestore möglicherweise teurer als die Echtzeitdatenbank, insbesondere wenn Sie sich auf viele kleine Vorgänge verlassen. Reduzieren Sie die Anzahl der Vorgänge in Ihrer Datenbank und vermeiden Sie unnötige Schreibvorgänge. Erfahren Sie mehr über die Unterschiede bei der Abrechnung zwischen Realtime Database und Cloud Firestore.

Best Practices in Aktion

Das folgende Beispiel spiegelt einige der Überlegungen wider, die Sie beim Verschieben Ihrer Daten zwischen Datenbanken treffen könnten. Sie können flache Lesevorgänge und verbesserte Abfragefunktionen für natürlichere Datenstrukturen nutzen, als Sie sie möglicherweise mit der Echtzeitdatenbank verwendet haben.

Stellen Sie sich eine Stadtführer-App vor, mit der Benutzer bemerkenswerte Sehenswürdigkeiten in Städten auf der ganzen Welt finden können. Da es in der Echtzeitdatenbank keine flachen Lesevorgänge gibt, mussten Sie die Daten möglicherweise wie folgt in zwei Knoten der obersten Ebene strukturieren:

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

Cloud Firestore hat flache Lesevorgänge, sodass beim Abfragen von Dokumenten in einer Sammlung keine Daten aus Untersammlungen abgerufen werden. Folglich können Sie wegweisende Informationen in einer Untersammlung speichern:

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

Dokumente haben eine maximale Größe von 1 MB. Dies ist ein weiterer Grund, Orientierungspunkte als Untersammlung zu speichern, wobei jedes Stadtdokument klein gehalten wird, anstatt Dokumente mit verschachtelten Listen aufzublähen.

Die erweiterten Abfragefunktionen von Cloud Firestore reduzieren die Notwendigkeit, Daten für allgemeine Zugriffsmuster zu duplizieren. Betrachten Sie beispielsweise einen Bildschirm in der Stadtführer-App, auf dem alle nach Bevölkerungsgruppen geordneten Hauptstädte angezeigt werden. In der Echtzeitdatenbank besteht die effizienteste Möglichkeit darin, eine separate Liste der Hauptstädte zu führen, in der Daten aus der cities wie folgt dupliziert werden:

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

Im Cloud Firestore können Sie eine Liste der Hauptstädte in der Reihenfolge ihrer Bevölkerungszahl als einzelne Abfrage ausdrücken:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

Lesen Sie mehr über das Cloud Firestore-Datenmodell und sehen Sie sich unsere Lösungen an, um weitere Ideen zur Strukturierung Ihrer Cloud Firestore-Datenbank zu erhalten.

Sichern Sie Ihre Daten

Unabhängig davon, ob Sie Cloud Firestore-Sicherheitsregeln für Android-, iOS- oder Webclients oder Identity Access Management (IAM) für Server verwenden, stellen Sie sicher, dass Sie Ihre Daten sowohl im Cloud Firestore als auch in der Echtzeitdatenbank sichern. Die Benutzerauthentifizierung wird von der Authentifizierung für beide Datenbanken verwaltet, sodass Sie Ihre Implementierung der Authentifizierung nicht ändern müssen, wenn Sie Cloud Firestore verwenden.

Wichtige Unterschiede zu berücksichtigen

  • Mobile und Web-SDKs verwenden Cloud Firestore-Sicherheitsregeln, während Server-SDKs Identity Access Management (IAM) zum Sichern von Daten verwenden.
  • Die Sicherheitsregeln für Cloud Firestore werden nur dann kaskadiert, wenn Sie einen Platzhalter verwenden. Dokumente und Sammlungen erben ansonsten keine Regeln.
  • Sie müssen Daten nicht mehr separat validieren (wie in der Echtzeitdatenbank ).
  • Cloud Firestore überprüft Regeln, bevor eine Abfrage ausgeführt wird, um sicherzustellen, dass der Benutzer über den entsprechenden Zugriff für alle von der Abfrage zurückgegebenen Daten verfügt.

Verschieben Sie historische Daten in den Cloud Firestore

Sobald Sie Ihre Daten- und Sicherheitsstrukturen den Daten- und Sicherheitsmodellen von Cloud Firestore zugeordnet haben, können Sie mit dem Hinzufügen Ihrer Daten beginnen. Wenn Sie historische Daten abfragen möchten, nachdem Sie Ihre App von der Echtzeitdatenbank in den Cloud Firestore verschoben haben, fügen Sie Ihrer neuen Cloud Firestore-Datenbank einen Export Ihrer alten Daten hinzu. Wenn Sie sowohl die Echtzeitdatenbank als auch den Cloud Firestore in Ihrer App verwenden möchten, können Sie diesen Schritt überspringen.

Um zu vermeiden, dass neue Daten mit alten Daten überschrieben werden, sollten Sie zuerst Ihre historischen Daten hinzufügen. Wenn Sie beiden Datenbanken gleichzeitig neue Daten hinzufügen, wie im nächsten Schritt erläutert, stellen Sie sicher, dass neuen Daten, die durch Cloud-Funktionen zum Cloud Firestore hinzugefügt wurden, Vorrang eingeräumt wird.

Gehen Sie folgendermaßen vor, um historische Daten in den Cloud Firestore zu migrieren:

  1. Exportieren Sie Ihre Daten aus der Echtzeitdatenbank oder verwenden Sie eine aktuelle Sicherung .
    1. Wechseln Sie in der Firebase-Konsole zum Abschnitt Echtzeitdatenbank .
    2. Wählen Sie auf der Registerkarte Daten den Knoten auf Stammebene Ihrer Datenbank aus und wählen Sie im Menü die Option JSON exportieren aus.
  2. Erstellen Sie Ihre neue Datenbank im Cloud Firestore und fügen Sie Ihre Daten hinzu .

    Berücksichtigen Sie die folgenden Strategien, wenn Sie einige Ihrer Daten in den Cloud Firestore verschieben:

    • Schreiben Sie ein benutzerdefiniertes Skript, das Ihre Daten für Sie portiert. Obwohl wir keine Vorlage für dieses Skript anbieten können, da jede Datenbank spezielle Anforderungen hat, können Cloud Firestore-Experten in unserem Slack-Kanal oder bei Stack Overflow Ihr Skript überprüfen oder Ratschläge für Ihre spezifische Situation geben.
    • Verwenden Sie die Server-SDKs (Node.js, Java, Python oder Go), um Daten direkt in den Cloud Firestore zu schreiben. Anweisungen zum Einrichten der Server-SDKs finden Sie unter Erste Schritte .
    • Verwenden Sie Stapelschreibvorgänge und senden Sie bis zu 500 Vorgänge in einer einzigen Netzwerkanforderung, um die Migration großer Datenmengen zu beschleunigen.
    • Um unter den Ratenbeschränkungen für Cloud Firestore zu bleiben, beschränken Sie die Vorgänge für jede Sammlung auf 500 Schreibvorgänge pro Sekunde.

Fügen Sie dem Cloud Firestore neue Daten hinzu

Um die Parität zwischen Ihren Datenbanken aufrechtzuerhalten, fügen Sie beiden Datenbanken in Echtzeit neue Daten hinzu. Verwenden Sie Cloud-Funktionen, um einen Schreibvorgang in den Cloud Firestore auszulösen, wenn ein Client in die Echtzeitdatenbank schreibt. Stellen Sie sicher, dass der Cloud Firestore neuen Daten aus Cloud-Funktionen Vorrang vor allen Schreibvorgängen einräumt, die Sie aus Ihrer Migration historischer Daten vornehmen.

Erstellen Sie eine Funktion, um jedes Mal, wenn ein Client Daten in die Echtzeitdatenbank schreibt, neue oder geänderte Daten in den Cloud Firestore zu schreiben. Weitere Informationen zu Echtzeitdatenbank-Triggern für Cloud-Funktionen.

Machen Sie Cloud Firestore zu Ihrer primären Datenbank für die migrierten Daten

Wenn Sie sich entschieden haben, Cloud Firestore als primäre Datenbank für einige Ihrer Daten zu verwenden, stellen Sie sicher, dass Sie alle von Ihnen eingerichteten Datenspiegelungsfunktionen berücksichtigen und Ihre Cloud Firestore-Sicherheitsregeln validieren.

  1. Wenn Sie Cloud-Funktionen verwendet haben, um die Parität zwischen Ihren Datenbanken aufrechtzuerhalten, stellen Sie sicher, dass Sie keine Schreibvorgänge über beide Datenbanken in einer Schleife duplizieren. Schalten Sie Ihre Funktion so um, dass sie in eine einzelne Datenbank schreibt, oder entfernen Sie die Funktion vollständig und stellen Sie die Schreibfunktion für die migrierten Daten in Apps ein, die noch an die Echtzeitdatenbank gebunden sind. Wie Sie damit für Ihre App umgehen, hängt von Ihren spezifischen Anforderungen und Ihren Benutzern ab.

  2. Stellen Sie sicher, dass Ihre Daten ordnungsgemäß gesichert sind. Überprüfen Sie Ihre Cloud Firestore-Sicherheitsregeln oder Ihr IAM-Setup.