Cloud Firestore mit Firebase Realtime Database verwenden

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. Zum Beispiel könnten Sie Realtime - Datenbank Unterstützung für Präsenz nutzen, wie es in umrissener Build - Präsenz in Cloud - Firestor .

Erfahren Sie mehr über die Unterschiede zwischen den Datenbanken .

Daten in Cloud Firestore verschieben

Wenn Sie sich entschieden haben, einige Ihrer Daten von der Realtime Database zu Cloud Firestore zu migrieren, ziehen Sie den folgenden Ablauf in Betracht. Da jede Datenbank einzigartige Anforderungen und strukturelle Überlegungen hat, gibt es keinen automatisierten Migrationspfad. Stattdessen können Sie diesem allgemeinen Verlauf folgen:

  1. Ordnen Sie die Datenstruktur und Sicherheitsregeln von Realtime Database zu Cloud Firestore zu. Sowohl Realtime Database als auch Cloud Firestore basieren auf Firebase Authentication, 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 Unterschiede sorgfältig zu berücksichtigen, bevor Sie mit dem Verschieben von Daten in Cloud Firestore beginnen.

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

  3. Spiegeln Sie neue Daten in Echtzeit in Firestore. Verwenden Sie Cloud Functions, um neue Daten in Ihre neue Cloud Firestore-Datenbank zu schreiben, wenn diese zur Realtime Database hinzugefügt wird.

  4. Machen Sie Cloud Firestore zu Ihrer primären Datenbank für die migrierten Daten. Nachdem Sie einige Ihrer Daten migriert haben, verwenden Sie Cloud Firestore als primäre Datenbank und reduzieren Sie die Nutzung der Echtzeitdatenbank für die migrierten Daten. Berücksichtigen Sie Versionen Ihrer App, die für diese Daten noch an die Echtzeitdatenbank gebunden sind, und wie Sie diese weiterhin unterstützen möchten.

Stellen Sie sicher , Sie machen die Kosten Abrechnung sowohl für Echtzeit - Datenbank und Cloud - Firestor .

Ordnen Sie Ihre Daten zu

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

Wichtige Unterschiede zu berücksichtigen

Wenn Sie Daten aus Ihrem bestehenden Echtzeitdatenbankbaum in Cloud Firestore-Dokumente und -Sammlungen verschieben, beachten Sie 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 für alle Ihre Daten mehr und sind effizienter.
  • Die Abrechnungskosten unterscheiden sich zwischen Realtime Database und Cloud Firestore. In vielen Fällen kann Cloud Firestore teurer sein als Realtime Database, insbesondere wenn Sie auf viele kleine Vorgänge angewiesen sind. Erwägen Sie, die Anzahl der Operationen in Ihrer Datenbank zu reduzieren und unnötige Schreibvorgänge zu vermeiden. Erfahren Sie mehr über die Unterschiede in Abrechnung zwischen Realtime - Datenbank und Cloud - Firestor.

Best Practices in Aktion

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

Ziehen Sie eine Stadtführer-App in Betracht, die Benutzern hilft, bemerkenswerte Sehenswürdigkeiten in Städten auf der ganzen Welt zu finden. Da es in Realtime Database 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 bietet flache Lesevorgänge, sodass beim Abfragen von Dokumenten in einer Sammlung keine Daten aus Untersammlungen abgerufen werden. Folglich können Sie Orientierungspunktinformationen 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, Sehenswürdigkeiten als Untersammlung zu speichern, um jedes Stadtdokument klein zu halten, anstatt Dokumente mit verschachtelten Listen aufzublähen.

Die erweiterten Abfragefunktionen von Cloud Firestore reduzieren die Notwendigkeit, Daten für gängige Zugriffsmuster zu duplizieren. Betrachten Sie beispielsweise einen Bildschirm in der Stadtführer-App, der alle Hauptstädte nach Einwohnerzahl sortiert anzeigt. In Echtzeit - Datenbank, der effizienteste Weg , dies zu tun , ist eine separate Liste der Hauptstädte zu halten , dass Duplikate von Daten aus den cities - Liste, wie folgen:

{
   cities: {
    // ...
   },

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

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

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

Lesen Sie mehr über das Cloud - Firestore - Datenmodell und werfen Sie einen Blick auf unseren Lösungen für mehr Ideen, wie Sie Ihre Cloud - Firestore - Datenbank zu strukturieren.

Sichern Sie Ihre Daten

Egal , ob Sie mit Cloud - Firestor Sicherheitsregeln für Android, Apple oder Web - Clients oder Identity Access Management (IAM) für Server, stellen Sie sicher , dass Sie Ihre Daten in Cloud - Firestor sowie Echtzeit - Datenbank zu sichern. Die Benutzerauthentifizierung wird für beide Datenbanken von Authentication verarbeitet, 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 Schutz von Daten verwenden.
  • Cloud Firestore-Sicherheitsregeln werden nur kaskadiert, wenn Sie einen Platzhalter verwenden. Dokumente und Sammlungen erben ansonsten keine Regeln.
  • Sie müssen nicht mehr zu validieren Daten separat (wie Sie in taten Realtime - Datenbank ).
  • Cloud Firestore überprüft Regeln, bevor eine Abfrage ausgeführt wird, um sicherzustellen, dass der Nutzer den entsprechenden Zugriff auf alle von der Abfrage zurückgegebenen Daten hat.

Verlaufsdaten in Cloud Firestore verschieben

Nachdem 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 nach dem Verschieben Ihrer App von der Realtime Database in Cloud Firestore Verlaufsdaten abfragen möchten, fügen Sie einen Export Ihrer alten Daten in Ihre neue Cloud Firestore-Datenbank hinzu. Wenn Sie in Ihrer App sowohl Realtime Database als auch Cloud Firestore verwenden möchten, können Sie diesen Schritt überspringen.

Um zu vermeiden, dass neue Daten mit alten Daten überschrieben werden, möchten Sie möglicherweise zuerst Ihre historischen Daten hinzufügen. Wenn Sie beiden Datenbanken gleichzeitig neue Daten hinzufügen, wie im nächsten Schritt beschrieben, stellen Sie sicher, dass neue Daten, die von Cloud Functions zu Cloud Firestore hinzugefügt werden, Vorrang haben.

Gehen Sie wie folgt vor, um Verlaufsdaten zu Cloud Firestore zu migrieren:

  1. Exportieren Sie Ihre Daten von Realtime - Datenbank oder verwenden Sie eine aktuelle Sicherung .
    1. Gehen Sie auf den Echtzeit - Datenbank - Abschnitt in der Konsole Firebase.
    2. Von den Registerkarte Daten wählen Stammebene Knoten Datenbank der und Export JSON aus dem Menü auswählen.
  2. Erstellen Sie Ihre neue Datenbank in Cloud - Firestor und fügen Sie Ihre Daten .

    Ziehen Sie die folgenden Strategien in Betracht, wenn Sie einige Ihrer Daten in Cloud Firestore verschieben:

    • Schreiben Sie ein benutzerdefiniertes Skript, das Ihre Daten für Sie portiert. Auch wenn wir nicht eine Vorlage für dieses Skript anbieten können, da wird jede Datenbank einzigartige Bedürfnisse hat, Wolke Firestor Experten auf unserem Slack - Kanal oder auf Stack - Überlauf können Ihr Skript oder bietet Beratung für Ihre spezifische Situation überprüfen.
    • Verwenden Sie die Server-SDKs (Node.js, Java, Python oder Go), um Daten direkt in Cloud Firestore zu schreiben. Für Anweisungen auf dem Server SDKs konfigurieren, finden Sie Erste Schritte .
    • Zur Beschleunigung der großen Datenmigrationen, Verwendung batched schreibt und senden bis zu 500 Operationen in einer einzigen Netzwerk Anfrage.
    • Unter bleiben Wolke Firestor Frequenzgrenzen , Grenz Operationen für jede Sammlung auf 500 schreibt / Sekunde.

Neue Daten zu Cloud Firestore hinzufügen

Um die Parität zwischen Ihren Datenbanken beizubehalten, fügen Sie in Echtzeit neue Daten zu beiden Datenbanken hinzu. Verwenden Sie Cloud Functions, um einen Schreibvorgang in Cloud Firestore auszulösen, wenn ein Client in die Realtime Database schreibt. Achten Sie darauf, dass Cloud Firestore neuen Daten aus Cloud Functions Vorrang vor Schreibvorgängen aus der Migration historischer Daten einräumt.

Erstellen Sie eine Funktion, um jedes Mal, wenn ein Client Daten in die Realtime Database schreibt, neue oder sich ändernde Daten in Cloud Firestore zu schreiben. Erfahren Sie mehr über Realtime - Datenbank - Trigger 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 Functions verwendet haben, um die Parität zwischen Ihren Datenbanken aufrechtzuerhalten, stellen Sie sicher, dass Sie Schreibvorgänge nicht in einer Schleife über beide Datenbanken hinweg duplizieren. Stellen Sie Ihre Funktion so um, dass sie in eine einzelne Datenbank schreibt, oder entfernen Sie die Funktion vollständig und beginnen Sie damit, die Schreibfunktion für die migrierten Daten in Apps, die noch an die Echtzeitdatenbank gebunden sind, auslaufen zu lassen. Wie Sie dies für Ihre App handhaben, hängt von Ihren spezifischen Anforderungen und Ihren Benutzern ab.

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