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 sowie Daten, die über Datenbanklesevorgänge heruntergeladen wurden. 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. Abhängig vom zugrunde liegenden Protokoll kann dieser Traffic Folgendes umfassen: Echtzeitprotokoll-Overhead, WebSocket- und HTTP-Header-Overhead von Firebase Realtime Database. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead in Kombination mit dem SSL-Verschlüsselungsoverhead zu den Verbindungskosten bei. Obwohl dies nicht viel Bandbreite für eine einzelne Anfrage ist, kann sie einen erheblichen Teil Ihrer Rechnung ausmachen, wenn Ihre Nutzlasten klein sind oder Sie häufig, kurze Verbindungen herstellen.
- SSL-Verschlüsselungs-Overhead: Der Aufwand für die SSL-Verschlüsselung, der für sichere Verbindungen erforderlich ist, verursacht Kosten. 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 über die Firebase Console lesen und schreiben.
In Rechnung gestellte Nutzung schätzen
Aktuelle Realtime Database-Verbindungen und 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 Ihre Datenbank 100 % nähert, kann es zu Leistungsproblemen kommen.
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 immer 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.
- Nach Programmfehlern suchen:Wenn die Kosten für Ihre Bandbreite unerwartet hoch sind, prüfen Sie, ob Ihre App nicht mehr Daten synchronisiert oder häufiger als ursprünglich beabsichtigt synchronisiert wird. 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:Versuchen Sie, wenn möglich, die Verbindungsbandbreite zu optimieren. 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. Verwenden Sie das Profiler-Tool, um in Ihrer Datenbank nicht indexierte Abfragen zu 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 finden Sie hier.
Der beste Optimierungsplan für Ihre App hängt von Ihrem jeweiligen Anwendungsfall ab. Dies 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.