Abrechnung für Realtime Database

Wenn Ihr Projekt den kostenlosen Spark-Tarif nutzt, werden Ihnen keine Kosten für die Nutzung von Realtime Database in Rechnung gestellt. Sie erhalten eine kostenlose Nutzung, die 1 GB Datenspeicher und 10 GB Daten-Downloads pro Monat umfasst.

Wenn Sie auf den Blaze-Tarif mit nutzungsabhängiger Bezahlung umsteigen, behalten Sie die kostenlose Nutzung bei (1 GB Datenspeicher und 10 GB Daten-Downloads pro Monat). Für jede Nutzung über dieses Kontingent hinaus werden Ihnen Kosten in Rechnung gestellt. Wenn Ihr Projekt den Blaze-Tarif nutzt, empfehlen wir, Budgetbenachrichtigungen für Ihr Projekt einzurichten.

Im Rest dieser Seite wird die Abrechnung genauer beschrieben.

So werden die Kosten für Realtime Database berechnet

Firebase stellt Ihnen die in Ihrer Datenbank gespeicherten Daten und den gesamten ausgehenden Netzwerk-Traffic auf der Sitzungsebene (Ebene 5) des OSI-Modells in Rechnung. Die Speicherkosten werden täglich berechnet und betragen 5 $ pro GB und Monat. Der Standort Ihrer Datenbank hat keinen Einfluss auf die Abrechnung. Der ausgehende 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. Für den gesamten Traffic zu und von Ihrer Datenbank, einschließlich Vorgängen, die durch Sicherheitsregeln abgelehnt werden, fallen Kosten an.

Einige häufige Beispiele für kostenpflichtigen Traffic:

  • Heruntergeladene Daten:Wenn Clients Daten aus Ihrer Datenbank abrufen, berechnet Firebase die Kosten für die heruntergeladenen Daten. In der Regel machen diese Kosten den Großteil Ihrer Bandbreitenkosten aus, sind 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: Realtime-Protokoll-Overhead der Firebase Realtime Database, WebSocket-Overhead und HTTP-Header-Overhead. Jedes Mal, wenn eine Verbindung hergestellt wird, trägt dieser Overhead zusammen mit dem SSL-Verschlüsselungs-Overhead 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üsselungs-Overhead:Für den SSL-Verschlüsselungs-Overhead, der für sichere Verbindungen erforderlich ist, fallen Kosten an. Im Durchschnitt betragen diese Kosten etwa 3,5 KB für den ersten Handshake und etwa zehn Byte für TLS-Datensatzheader in jeder ausgehenden Nachricht. Bei den meisten Apps macht dies einen kleinen Prozentsatz Ihrer Rechnung aus. Das kann jedoch ein großer Prozentsatz werden, wenn in Ihrem Fall viele SSL-Handshakes erforderlich sind. Beispielsweise können Geräte die keine TLS-Sitzungstickets unterstützen, eine große Anzahl von SSL-Verbindungs-Handshakes erfordern.
  • Firebase Konsolendaten: Obwohl dies in der Regel keinen erheblichen Teil der Realtime Database Kosten ausmacht, berechnet Firebase die Kosten für Daten, die Sie in der Firebase Konsole lesen und schreiben.

Kostenpflichtige Nutzung schätzen

Auf dem Tab „Nutzung“ in der Firebase Konsole können Sie Ihre aktuellen Realtime Database Verbindungen und die Datennutzung einsehen. 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 offenen Echtzeitverbindungen zu Ihrer Datenbank. Dazu gehören die folgenden Echtzeitverbindungen: WebSocket, Long Polling und serverseitige HTML-Ereignisse. RESTful-Anfragen sind nicht enthalten.
  • Speicher:Die Menge der in Ihrer Datenbank gespeicherten Daten. Firebase-Hosting oder Daten, die über andere Firebase-Produkte gespeichert wurden, sind nicht enthalten.
  • Downloads:Alle aus Ihrer Datenbank heruntergeladenen Byte, einschließlich Protokoll- und Verschlüsselungs-Overhead.
  • Last:In diesem Diagramm wird angezeigt, wie viel von Ihrer Datenbank in einem bestimmten 1-Minuten-Intervall verwendet wird, um Anfragen zu verarbeiten. Wenn sich die Auslastung Ihrer Datenbank 100 % nähert, können Leistungsprobleme auftreten.

Nutzung optimieren

Es gibt einige Best Practices, mit denen Sie die Nutzung Ihrer Datenbank 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 Kosten für die SSL-Verschlüsselung reduziert werden, die sich bei der REST API in der Regel summieren.
  • 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 Probleme zu ermitteln, Ihre Lesevorgänge zu messen und die Debug-Protokollierung in den Android, Objective-C und Web SDKs zu aktivieren. Prüfen Sie die Hintergrund- und Synchronisierungsprozesse in Ihrer App, um sicherzustellen, dass alles wie beabsichtigt 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 mit dem nativen SDK. Wenn Sie die REST API verwenden, sollten Sie HTTP-Keep-Alive-Verbindungen oder serverseitige Ereignisse, um die Kosten für SSL-Handshakes zu senken.
  • TLS-Sitzungstickets verwenden: Reduzieren Sie die Kosten für den SSL-Verschlüsselungs-Overhead bei wiederaufgenommenen Verbindungen, indem Sie TLS-Sitzungstickets ausstellen. Dies ist besonders hilfreich, wenn Sie häufig sichere Verbindungen zur Datenbank benötigen.
  • Abfragen indexieren: Durch das Indexieren Ihrer Daten wird die für Abfragen verwendete Gesamtbandbreite reduziert. Das hat den doppelten Vorteil, dass Ihre Kosten sinken und die Leistung Ihrer Datenbank steigt. Verwenden Sie das Profiler-Tool, um nicht indexierte Abfragen in Ihrer Datenbank zu finden.
  • Listener optimieren:Fügen Sie Abfragen hinzu, um die Daten zu begrenzen, die von Ihren Listener-Vorgängen zurückgegeben werden, und verwenden Sie Listener, die nur Aktualisierungen von Daten herunterladen, z. B. on() anstelle von once(). Platzieren Sie Ihre Listener außerdem so weit unten im Pfad wie möglich, um die Menge der Daten zu begrenzen, die sie synchronisieren.
  • 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. Mit Firebase Realtime Database Security Rules können Sie beispielsweise 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.