Firebase berechnet die Daten, die Sie in Ihrer Datenbank speichern, und den gesamten ausgehenden Netzwerkverkehr auf der Sitzungsschicht (Schicht 5) des OSI-Modells. Der Speicherplatz wird mit 5 $ pro GB/Monat abgerechnet und täglich neu berechnet. Der Speicherort Ihrer Datenbank hat keine Auswirkungen auf die Abrechnung. Der ausgehende Traffic umfasst den Verbindungs- und Verschlüsselungsoverhead aller Datenbankvorgänge und Daten, die über Datenbanklesevorgänge heruntergeladen werden. Sowohl Lese- als auch Schreibvorgänge in der Datenbank können zu Verbindungskosten auf Ihrer Rechnung führen. Alle Zugriffe auf und von Ihrer Datenbank, einschließlich Vorgänge, die durch Sicherheitsregeln abgelehnt werden, führen zu abrechenbaren Kosten.
Beispiele für in Rechnung gestellte Zugriffe:
- Heruntergeladene Daten:Wenn Clients Daten aus Ihrer Datenbank abrufen, berechnet Firebase die heruntergeladenen Daten. Dies macht in der Regel den Großteil Ihrer Bandbreitenkosten aus, ist aber nicht der einzige Faktor auf Ihrer Rechnung.
- Protokoll-Overhead: Es ist ein gewisser zusätzlicher Traffic zwischen dem Server und den Clients erforderlich, um eine Sitzung herzustellen und aufrechtzuerhalten. Je nach zugrunde liegendem Protokoll kann dieser Traffic Folgendes umfassen: den Overhead des Echtzeitprotokolls von Firebase Realtime Database, den WebSocket-Overhead und den HTTP-Header-Overhead. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead in Kombination mit dem SSL-Verschlüsselungsoverhead zu den Verbindungskosten bei. Das ist zwar nicht viel Bandbreite für eine einzelne Anfrage, kann aber einen erheblichen Teil Ihrer Rechnung ausmachen, wenn Ihre Nutzlasten klein sind oder Sie häufig kurze Verbindungen herstellen.
- SSL-Verschlüsselungsoverhead:Für sichere Verbindungen ist ein SSL-Verschlüsselungsoverhead erforderlich, der mit Kosten verbunden ist. Im Durchschnitt betragen diese Kosten etwa 3,5 KB für den anfänglichen Handshake und etwa zehn Byte für TLS-Eintragsheader in jeder ausgehenden Nachricht. Bei den meisten Apps ist dies ein kleiner Prozentsatz Ihrer Rechnung. Dies kann jedoch einen großen Prozentsatz ausmachen, wenn in Ihrem Fall viele SSL-Handshakes erforderlich sind. Beispielsweise erfordern Geräte, die keine TLS-Sitzungstickets unterstützen, möglicherweise eine große Anzahl von SSL-Verbindungs-Handshakes.
- Firebase Console-Daten:Dies ist normalerweise kein wesentlicher Teil der Realtime Database-Kosten. Firebase berechnet jedoch Daten, die Sie in der Firebase Console lesen und schreiben.
In Rechnung gestellte Nutzung schätzen
Deine aktuellen Realtime Database-Verbindungen und die Datennutzung findest du in der Firebase-Konsole auf dem Tab Nutzung. Sie können die Nutzung für den aktuellen Abrechnungszeitraum, die letzten 30 Tage oder die letzten 24 Stunden prüfen.
Firebase zeigt Nutzungsstatistiken für die folgenden Messwerte an:
- Verbindungen:Die Anzahl der gleichzeitigen, derzeit geöffneten Echtzeitverbindungen zu Ihrer Datenbank. Dazu gehören die folgenden Echtzeitverbindungen: WebSocket, Long Polling und vom Server gesendete HTML-Ereignisse. RESTful-Anfragen sind nicht enthalten.
- Speicherplatz:Gibt an, wie viele Daten in Ihrer Datenbank gespeichert sind. Das gilt nicht für Firebase-Hosting oder Daten, die mit anderen Firebase-Produkten gespeichert wurden.
- Downloads:Alle aus Ihrer Datenbank heruntergeladenen Bytes, einschließlich Protokoll- und Verschlüsselungsoverhead.
- Auslastung:In diesem Diagramm sehen Sie, wie viel Prozent Ihrer Datenbank in einem bestimmten Intervall von einer Minute für die Verarbeitung von Anfragen verwendet werden. Wenn sich der Wert 100 % nähert, können Leistungsprobleme auftreten.
Nutzung optimieren
Es gibt einige Best Practices, mit denen Sie die Datenbanknutzung und die Bandbreitenkosten optimieren können.
- Native SDKs verwenden:Verwenden Sie nach Möglichkeit die SDKs, die der Plattform Ihrer App entsprechen, anstelle der REST API. Die SDKs halten offene Verbindungen aufrecht, wodurch die SSL-Verschlüsselungskosten reduziert werden, die bei der REST API normalerweise anfallen.
- Auf Fehler prüfen:Wenn Ihre Bandbreitenkosten unerwartet hoch sind, prüfen Sie, ob Ihre App mehr Daten oder häufiger synchronisiert, als ursprünglich beabsichtigt. Verwenden Sie das Profiler-Tool, um Lesevorgänge zu messen und die Debug-Protokollierung in den Android-, Objective-C- und Web-SDKs zu aktivieren, um Probleme zu ermitteln. Prüfen Sie die Hintergrund- und Synchronisierungsprozesse in Ihrer App, um sicherzustellen, dass alles wie gewünscht funktioniert.
- Verbindungen reduzieren:Optimieren Sie nach Möglichkeit die Bandbreite Ihrer Verbindung. Häufige, kleine REST-Anfragen können teurer sein als eine einzelne, kontinuierliche Verbindung über das native SDK. Wenn Sie die REST API verwenden, sollten Sie ein HTTP-Keep-Alive oder servergesendete Ereignisse verwenden, um die Kosten für SSL-Handshakes zu senken.
- TLS-Sitzungstickets verwenden:Reduzieren Sie die SSL-Verschlüsselungs-Overheadkosten bei fortgesetzten Verbindungen, indem Sie TLS-Sitzungstickets ausstellen. Das ist besonders hilfreich, wenn Sie häufige, sichere Verbindungen zur Datenbank benötigen.
- Indexabfragen: Wenn Sie Ihre Daten indexieren, wird die Gesamtbandbreite, die Sie für Abfragen verwenden, reduziert. Das hat den doppelten Vorteil, dass Sie Ihre Kosten senken und die Leistung Ihrer Datenbank steigern. Mit dem Profiler-Tool können Sie nicht indexierte Abfragen in Ihrer Datenbank finden.
- Listener optimieren:Füge Abfragen hinzu, um die Daten zu begrenzen, die deine Listener zurückgeben, und verwende Listener, die nur Datenupdates herunterladen, z. B.
on()
anstelle vononce()
. Außerdem sollten Sie die Listener so weit unten im Pfad platzieren, wie möglich, um die Menge der synchronisierten Daten zu begrenzen. - Speicherkosten senken:Führen Sie regelmäßige Bereinigungsjobs aus und reduzieren Sie doppelte Daten in Ihrer Datenbank.
- Verwendungsregeln:Sie können damit potenziell kostspielige, nicht autorisierte Vorgänge in Ihrer Datenbank verhindern. Mit Firebase Realtime Database Security Rules lässt sich beispielsweise verhindern, dass ein böswilliger Nutzer wiederholt Ihre gesamte Datenbank herunterlädt. Weitere Informationen zur Verwendung von Firebase Realtime Database-Regeln
Der beste Optimierungsplan für Ihre App hängt von Ihrem jeweiligen Anwendungsfall ab. Das ist keine vollständige Liste der Best Practices. Weitere Ratschläge und Tipps von Firebase-Experten finden Sie in unserem Slack-Kanal oder auf Stack Overflow.