Firebase berechnet die Daten, die Sie in Ihrer Datenbank speichern, und den gesamten ausgehenden Netzwerkverkehr auf der Sitzungsebene (Schicht 5) des OSI-Modells. Der Speicherplatz wird täglich abgerechnet und kostet 5 $ pro GB/Monat. Die Abrechnung wird durch den Standort Ihrer Datenbank nicht beeinflusst. Ausgehender Traffic umfasst den Verbindungs- und Verschlüsselungs-Overhead aller Datenbankvorgänge und Daten, die durch Datenbanklesevorgänge heruntergeladen werden. Sowohl Datenbanklese- als auch ‑schreibvorgänge können zu Verbindungskosten auf Ihrer Rechnung führen. Der gesamte Traffic zu und von Ihrer Datenbank, einschließlich der Vorgänge, die durch Sicherheitsregeln abgelehnt werden, führt zu abrechenbaren Kosten.
Hier einige typische Beispiele für abgerechneten Traffic:
- Heruntergeladene Daten:Wenn Clients Daten aus Ihrer Datenbank abrufen, berechnet Firebase die heruntergeladenen Daten. In der Regel macht dies den Großteil Ihrer Bandbreitenkosten aus, ist aber nicht der einzige Faktor auf Ihrer Rechnung.
- Protokoll-Overhead:Für das Einrichten und Aufrechterhalten einer Sitzung ist zusätzlicher Traffic zwischen dem Server und den Clients erforderlich. Je nach zugrunde liegendem Protokoll kann dieser Traffic Folgendes umfassen: Overhead des Echtzeitprotokolls der Firebase Realtime Database, WebSocket-Overhead und HTTP-Header-Overhead. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead in Kombination mit dem Overhead der SSL-Verschlüsselung 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äufige, kurze Verbindungen herstellen.
- SSL-Verschlüsselungs-Overhead:Für die SSL-Verschlüsselung, die für sichere Verbindungen erforderlich ist, fallen Kosten an. Im Durchschnitt betragen die Kosten für den ersten Handshake etwa 3,5 KB und für TLS-Datensatzheader in jeder ausgehenden Nachricht etwa zehn Byte. Bei den meisten Apps macht das nur einen kleinen Prozentsatz Ihrer Rechnung aus. Wenn in Ihrem speziellen Fall jedoch viele SSL-Handshakes erforderlich sind, kann dies einen großen Prozentsatz ausmachen. Geräte, die TLS-Sitzungstickets nicht unterstützen, benötigen möglicherweise eine große Anzahl von SSL-Verbindungs-Handshakes.
- Firebase-Konsolendaten:Obwohl dies in der Regel keinen erheblichen Teil der Realtime Database-Kosten ausmacht, berechnet Firebase Daten, die Sie aus der Firebase-Konsole lesen und in die Firebase-Konsole schreiben.
Abrechnungsfähige Nutzung schätzen
Ihre aktuellen Realtime Database-Verbindungen und die Datennutzung finden Sie 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.
In Firebase werden Nutzungsstatistiken für die folgenden Messwerte angezeigt:
- Verbindungen:Die Anzahl der gleichzeitigen, derzeit offenen Echtzeitverbindungen mit Ihrer Datenbank. Dazu gehören die folgenden Echtzeitverbindungen: WebSocket, Long Polling und HTML Server-Sent Events. RESTful-Anfragen sind nicht enthalten.
- Speicher:Die Menge der in Ihrer Datenbank gespeicherten Daten. Firebase-Hosting oder Daten, die mit anderen Firebase-Produkten gespeichert wurden, sind nicht enthalten.
- Downloads:Alle aus Ihrer Datenbank heruntergeladenen Bytes, einschließlich Protokoll- und Verschlüsselungs-Overhead.
- Auslastung:Dieses Diagramm zeigt, wie viel von Ihrer Datenbank in einem bestimmten 1-Minuten-Intervall mit der Verarbeitung von Anfragen beschäftigt ist. Wenn sich der Wert 100 % nähert, können Leistungsprobleme auftreten.
Nutzung optimieren
Es gibt einige Best Practices, mit denen Sie Ihre Datenbanknutzung und 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 Verbindungen offen, wodurch die Kosten für die SSL-Verschlüsselung reduziert werden, die normalerweise bei der REST API 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 vorgesehen. Verwenden Sie das Profiler-Tool, um Probleme zu ermitteln, indem Sie Ihre Lesevorgänge messen und das Debugging-Logging in den Android-, Objective-C- und Web-SDKs aktivieren. Prüfen Sie die Hintergrund- und Synchronisierungsprozesse in Ihrer App, um sicherzustellen, dass alles wie vorgesehen funktioniert.
- Verbindungen reduzieren:Versuchen Sie, die Bandbreite Ihrer Verbindung 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 HTTP-Keep-Alive oder server-sent events in Betracht ziehen, um die Kosten für SSL-Handshakes zu senken.
- TLS-Sitzungstickets verwenden:Reduzieren Sie die Kosten für den SSL-Verschlüsselungs-Overhead bei fortgesetzten Verbindungen, indem Sie TLS-Sitzungstickets ausstellen. Dies ist besonders hilfreich, wenn Sie häufig sichere Verbindungen zur Datenbank benötigen.
- Indexabfragen:Wenn Sie Ihre Daten indexieren, verringert sich die für Abfragen verwendete Gesamtbandbreite. Das hat den doppelten Vorteil, dass Ihre Kosten sinken und die Leistung Ihrer Datenbank steigt. Mit dem Profiler-Tool können Sie nicht indexierte Abfragen in Ihrer Datenbank finden.
- Listener optimieren:Fügen Sie Abfragen hinzu, um die von Ihren Listen-Vorgängen zurückgegebenen Daten zu begrenzen, und verwenden Sie Listener, die nur Updates für Daten herunterladen, z. B.
on()
anstelle vononce()
. Außerdem sollten Sie Ihre Listener so weit wie möglich unten im Pfad platzieren, um die Menge der Daten zu begrenzen, die synchronisiert werden. - Speicherkosten senken:Führen Sie regelmäßig Bereinigungsjobs aus und reduzieren Sie doppelte Daten in Ihrer Datenbank.
- Regeln verwenden:Verhindern Sie potenziell kostspielige, nicht autorisierte Vorgänge in Ihrer Datenbank. Wenn Sie beispielsweise Firebase Realtime Database Security Rules verwenden, können Sie verhindern, dass ein böswilliger Nutzer Ihre gesamte Datenbank wiederholt 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. Dies ist keine vollständige Liste der Best Practices. Weitere Ratschläge und Tipps von den Firebase-Experten finden Sie in unserem Slack-Channel oder auf Stack Overflow.