Cloud Firestore mit der Firebase Realtime Database verwenden

Sie können sowohl Firebase Realtime Database als auch Cloud Firestore in Ihrer App verwenden und die Vorteile der jeweiligen Datenbanklösung entsprechend Ihren Anforderungen nutzen. Sie können beispielsweise die Anwesenheitsfunktion von Realtime Database nutzen, wie im Hilfeartikel Build Presence in Cloud Firestore (Anwesenheit in Cloud Firestore erstellen) beschrieben.

Weitere Informationen über den Unterschieden zwischen den Datenbanken.

Daten werden zu Cloud Firestore verschoben

Wenn Sie einige Ihrer Daten von Realtime Database zu Cloud Firestore migrieren möchten, gehen Sie so vor: Da jede Datenbank speziellen Bedürfnissen und strukturellen Überlegungen automatischen Migrationspfad. Stattdessen können Sie dem allgemeinen Verlauf folgen:

  1. Datenstruktur und Sicherheitsregeln von Realtime Database zuordnen Cloud Firestore Sowohl Realtime Database als auch Cloud Firestore nutzen Firebase Authentication, sodass Sie die Nutzerauthentifizierung für Ihre Anwendung nicht ändern müssen. Die Sicherheitsregeln und Datenmodell unterscheiden sich und es ist wichtig, diese Abweichungen zu berücksichtigen, bevor Sie mit dem Verschieben von Daten in die Cloud beginnen. Firestore

  2. Verlaufsdaten verschieben Wenn Sie Ihre neue Datenstruktur in Cloud Firestore einrichten, können Sie vorhandene Daten von Realtime Database in Ihre neue Cloud Firestore-Instanz zuordnen und verschieben. Wenn Sie in Ihrer App jedoch beide Datenbanken verwenden, Sie müssen keine Verlaufsdaten aus Realtime Database verschieben.

  3. Neue Daten in Echtzeit in Firestore spiegeln. Mit Cloud Functions neue Daten in die neue Cloud Firestore schreiben Datenbank, wenn sie zu Realtime Database hinzugefügt wird.

  4. Legen Sie Cloud Firestore als primäre Datenbank für die migrierten Daten fest. Nachdem du einige deiner Daten migriert hast, verwende Cloud Firestore als primäre Datenbank festlegen und die Realtime Database-Nutzung für die migrierten Daten. Überlegen Sie, wie Sie Versionen Ihrer App, die für diese Daten noch mit Realtime Database verknüpft sind, weiter unterstützen möchten.

Achten Sie darauf, Rechnungskosten zu berücksichtigen. für Realtime Database und Cloud Firestore.

Daten zuordnen

Die Daten in der Datei „Realtime Database“ sind in einer einzigen Baumstruktur strukturiert, während die Daten in Cloud Firestore unterstützt explizitere Datenhierarchien durch Dokumente, Sammlungen und Untersammlungen. Wenn Sie einige Ihrer Daten von Realtime Database zu Cloud Firestore verschieben, sollten Sie eine andere Architektur für Ihre Daten in Betracht ziehen.

Wichtige zu berücksichtigende Unterschiede

Wenn Sie Daten aus Ihrer vorhandenen Realtime Database-Struktur in Cloud Firestore verschieben Dokumenten und Sammlungen müssen Sie die folgenden Hauptunterschiede zwischen Datenbanken, die sich auf die Strukturierung von Daten in Cloud Firestore auswirken könnten:

  • Flache Abfragen bieten mehr Flexibilität bei hierarchischen Datenstrukturen.
  • Komplexe Abfragen ermöglichen eine höhere Genauigkeit und reduzieren den Bedarf an doppelten Einträgen. Daten.
  • Abfrage-Cursors bieten eine robustere Paginierung.
  • Transaktionen benötigen keinen gemeinsamen Stamm für alle Ihre Daten mehr effizient zu gestalten.
  • Die Abrechnungskosten unterscheiden sich zwischen Realtime Database und Cloud Firestore. In vielen Fälle kann Cloud Firestore teurer sein als Realtime Database, vor allem, wenn Sie auf viele kleine Vorgänge angewiesen sind. Erwägen Sie die Anzahl der Datenbankvorgänge reduzieren unnötige Schreibvorgänge. Weitere Informationen zu den Unterschieden bei der Abrechnung zwischen Realtime Database und Cloud Firestore

Best Practices in der Praxis

Das folgende Beispiel zeigt einige der Überlegungen, die Sie bei der Ihre Daten zwischen Datenbanken zu verschieben. Sie können oberflächliche Lesevorgänge nutzen und Abfragefunktionen für natürlichere Datenstrukturen, als Sie mit Realtime Database.

Denken Sie über eine Stadtführer-App nach, die Nutzenden hilft, wichtige Sehenswürdigkeiten in Städten zu finden. auf der ganzen Welt. Da Realtime Database keine flachen Lesevorgänge unterstützt, mussten Sie die Daten möglicherweise in zwei Knoten der obersten Ebene strukturieren, wie hier dargestellt:

// /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 oberflächliche Lesevorgänge, sodass das Abfragen von Dokumenten in einer Sammlung Es werden keine Daten aus Untersammlungen abgerufen. Daher können Sie Informationen zu Sehenswürdigkeiten in einer untergeordneten Sammlung speichern:

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

Dokumente dürfen maximal 1 MB groß sein – ein weiterer Grund zum Speichern. Sehenswürdigkeiten als Untersammlung darstellen, sodass jedes Stadtdokument klein gehalten wird, mit verschachtelten Listen überflüssige Dokumente.

Dank der erweiterten Abfragefunktionen von Cloud Firestore müssen Sie sich weniger um doppelte Daten für häufige Zugriffsmuster. Stellen Sie sich zum Beispiel einen Bildschirm in der Stadtführer, in der alle Hauptstädte nach Bevölkerung sortiert sind. In Realtime Database ist dies am effizientesten, indem eine separate Liste der Hauptstädte, für die Daten aus der cities-Liste dupliziert werden:

{
   cities: {
    // ...
   },

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

In Cloud Firestore kannst du eine Liste der Hauptstädte in der Reihenfolge der Population als einzelne Abfrage verwenden:

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

Weitere Informationen zum Cloud Firestore-Datenmodell finden Sie in unseren Lösungen weitere Ideen zur Strukturierung Ihrer Cloud Firestore-Datenbank.

Daten schützen

Unabhängig davon, ob Sie Cloud Firestore Security Rules für Android-, Apple- oder Webclients oder Identity Access Management (IAM) für Server müssen Sie Ihre Daten auch in Cloud Firestore sichern als Realtime Database. Die Nutzerauthentifizierung erfolgt bei der Authentifizierung für beide Datenbanken, sodass Sie die Authentifizierungsimplementierung nicht ändern müssen, mit Cloud Firestore.

Wichtige Unterschiede

  • Mobile und Web-SDKs nutzen Cloud Firestore Security Rules, während Server SDKs nutzen Identity Access Management (IAM), um Daten zu sichern.
  • Cloud Firestore Security Rules wird nur dann kaskadiert, wenn Sie einen Platzhalter verwenden. Dokumente und Für Sammlungen werden ansonsten keine Regeln übernommen.
  • Sie müssen Daten nicht mehr separat validieren (wie in Realtime Database).
  • Cloud Firestore prüft vor dem Ausführen einer Abfrage die Regeln , dass der Nutzer den entsprechenden Zugriff für alle von der Abfrage zurückgegebenen Daten hat.

Verlaufsdaten in Cloud Firestore verschieben

Nachdem Sie Ihre Daten- und Sicherheitsstrukturen der Cloud Firestore zugeordnet haben Daten- und Sicherheitsmodelle haben, können Sie Ihre Daten hinzufügen. Wenn du nach der Verschiebung deiner App von Realtime Database Verlaufsdaten abfragen möchtest zu Cloud Firestore einen Export Ihrer alten Daten zu Ihrem neuen hinzufügen Cloud Firestore-Datenbank. Wenn Sie sowohl Realtime Database als auch 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 Ihre zuerst Verlaufsdaten. Wenn Sie beiden Datenbanken gleichzeitig neue Daten hinzufügen, wie im nächsten Schritt erläutert wird, achten Sie darauf, dass Sie neuen Daten, Cloud Firestore von Cloud Functions.

So migrieren Sie Verlaufsdaten zu Cloud Firestore:

  1. Daten aus Realtime Database exportieren oder eine aktuelle Sicherung verwenden.
    1. Rufen Sie in der Firebase-Konsole den Bereich Realtime Database auf.
    2. Wählen Sie auf dem Tab 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 in Cloud Firestore und Daten hinzufügen.

    Ziehen Sie beim Verschieben einiger Ihrer Daten zu Cloud Firestore die folgenden Strategien in Betracht:

    • Schreiben Sie ein benutzerdefiniertes Skript, das Ihre Daten für Sie portiert. Wir können Ihnen zwar für dieses Skript eine Vorlage erstellen, da jede Datenbank eigene Anforderungen hat, Cloud Firestore-Experten in unserem Slack-Kanal oder auf Stack Overflow Ihr Skript überprüfen oder Ratschläge für Ihre spezifische Situation geben.
    • Mit den Server-SDKs (Node.js, Java, Python oder Go) Daten direkt schreiben an Cloud Firestore. Eine Anleitung zum Einrichten der Server-SDKs finden Sie unter Jetzt starten
    • Um große Datenmigrationen zu beschleunigen, verwenden Sie Batch-Schreibvorgänge und bis zu 500 Vorgänge in einer einzigen Netzwerkanfrage senden.
    • Um unter Cloud Firestore Ratenbegrenzungen zu bleiben, Vorgänge für jede Sammlung auf 500 Schreibvorgänge pro Sekunde beschränken.

Cloud Firestore neue Daten hinzufügen

Fügen Sie neue Daten zu beiden Datenbanken in in Echtzeit. Verwenden Sie Cloud Functions, um einen Schreibvorgang in Cloud Firestore auszulösen. wenn ein Client in Realtime Database schreibt. Achten Sie darauf, dass in Cloud Firestore neue Daten von Cloud Functions Vorrang vor Schreibvorgängen haben, die Sie bei der Migration Ihrer Verlaufsdaten ausführen.

Erstellen Sie eine Funktion, um neue oder sich ändernde Daten in Cloud Firestore zu schreiben jedes Mal, wenn ein Client Daten in Realtime Database schreibt. Weitere Informationen über Realtime Database Trigger für Cloud Functions.

Cloud Firestore als primäre Datenbank für die migrierten Daten festlegen

Wenn Sie Cloud Firestore als primäre Datenbank für einige Ihrer Daten verwenden, achten Sie darauf, dass Sie alle zuvor Cloud Firestore Security Rules einrichten und validieren.

  1. Wenn Sie Cloud Functions verwendet haben, um die Gleichheit zwischen Ihren Datenbanken aufrechtzuerhalten, dass Sie Schreibvorgänge nicht in beiden Datenbanken eines Schleife Stellen Sie die Funktion so um, dass sie in eine einzelne Datenbank schreibt, oder entfernen Sie den vollständig funktionieren und die Schreibfunktion für die migrierte Daten in Apps, die noch mit Realtime Database verknüpft sind. Wie gehen Sie damit um? Ihre App von Ihren spezifischen Bedürfnissen und Ihren Nutzenden abhängig ist.

  2. Prüfen Sie, ob Ihre Daten ordnungsgemäß gesichert sind. Cloud Firestore Security Rules validieren oder IAM-Einrichtung.