Poznaj rozliczenia za bazę danych w czasie rzeczywistym

Firebase wystawia rachunki za dane przechowywane w bazie danych i cały wychodzący ruch sieciowy w warstwie sesji (warstwa 5) modelu OSI. Opłata za pamięć masową wynosi 5 USD za każdy GB miesięcznie, rozliczana codziennie. Lokalizacja Twojej bazy danych nie ma wpływu na rozliczenia. Ruch wychodzący obejmuje narzut związany z połączeniem i szyfrowaniem ze wszystkich operacji na bazie danych oraz danych pobieranych w wyniku odczytów bazy danych. Zarówno odczyty, jak i zapisy bazy danych mogą skutkować naliczeniem kosztów połączenia na rachunku. Cały ruch do i z bazy danych, w tym operacje zabronione przez reguły bezpieczeństwa, prowadzi do naliczanych kosztów.

Oto kilka typowych przykładów płatnego ruchu:

  • Pobrane dane: gdy klienci pobierają dane z Twojej bazy danych, Firebase pobiera opłaty za pobrane dane. Zwykle stanowi to większość kosztów przepustowości, ale nie jest to jedyny czynnik wpływający na rachunek.
  • Narzut protokołu: do ustanowienia i utrzymania sesji niezbędny jest dodatkowy ruch między serwerem a klientami. W zależności od protokołu bazowego ruch ten może obejmować: narzut protokołu Firebase Realtime Database, narzut protokołu WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy połączenie jest nawiązywane, narzut ten, w połączeniu z narzutem związanym z szyfrowaniem SSL, zwiększa koszty połączenia. Chociaż nie jest to duża przepustowość na pojedyncze żądanie, może stanowić znaczną część rachunku, jeśli ładunki są niewielkie lub wykonujesz częste, krótkie połączenia.
  • Narzut szyfrowania SSL: Z narzutem szyfrowania SSL niezbędnym do bezpiecznych połączeń wiążą się koszty. Średnio koszt ten wynosi około 3,5 KB w przypadku początkowego uzgadniania i około kilkudziesięciu bajtów nagłówków rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent rachunku. Może to jednak stanowić duży procent, jeśli Twój konkretny przypadek wymaga wielu uzgadniań SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.
  • Dane konsoli Firebase: chociaż zwykle nie stanowi to znacznej części kosztów bazy danych czasu rzeczywistego, Firebase pobiera opłaty za dane odczytywane i zapisywane z konsoli Firebase.

Oszacuj swoje rozliczone użycie

Aby zobaczyć bieżące połączenia z bazą danych czasu rzeczywistego i wykorzystanie danych, sprawdź kartę Użycie w konsoli Firebase. Możesz sprawdzić wykorzystanie w bieżącym okresie rozliczeniowym, ostatnich 30 dniach lub ostatnich 24 godzinach.

Firebase pokazuje statystyki użytkowania dla następujących wskaźników:

  • Połączenia: Liczba jednoczesnych, aktualnie otwartych połączeń w czasie rzeczywistym z Twoją bazą danych. Obejmuje to następujące połączenia w czasie rzeczywistym: WebSocket, długie odpytywanie i zdarzenia wysyłane przez serwer HTML. Nie obejmuje żądań RESTful.
  • Przechowywanie: ilość danych przechowywanych w bazie danych. Nie obejmuje to hostingu Firebase ani danych przechowywanych za pośrednictwem innych produktów Firebase.
  • Pobieranie: wszystkie bajty pobrane z bazy danych, łącznie z narzutem protokołu i szyfrowania.
  • Obciążenie: Ten wykres pokazuje, jaka część bazy danych jest używana i przetwarza żądania w danym przedziale 1 minuty. Gdy baza danych zbliża się do 100%, mogą wystąpić problemy z wydajnością.

Optymalizuj wykorzystanie

Istnieje kilka najlepszych praktyk, które można zastosować w celu optymalizacji wykorzystania bazy danych i kosztów przepustowości.

  • Użyj natywnych zestawów SDK: jeśli to możliwe, używaj zestawów SDK odpowiadających platformie Twojej aplikacji zamiast interfejsu API REST. Zestawy SDK utrzymują otwarte połączenia, zmniejszając koszty szyfrowania SSL, które zazwyczaj sumują się w przypadku interfejsu API REST.
  • Sprawdź błędy: jeśli koszty przepustowości są nieoczekiwanie wysokie, sprawdź, czy aplikacja nie synchronizuje więcej danych lub nie synchronizuje częściej, niż pierwotnie planowano. Aby wykryć problemy, użyj narzędzia profilera do pomiaru operacji odczytu i włącz rejestrowanie debugowania w zestawach SDK dla systemów Android , Objective-C i Web . Sprawdź procesy w tle i synchronizację w swojej aplikacji, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.
  • Zmniejsz liczbę połączeń: Jeśli to możliwe, spróbuj zoptymalizować przepustowość połączenia. Częste, małe żądania REST mogą być droższe niż pojedyncze, ciągłe połączenie przy użyciu natywnego zestawu SDK. Jeśli korzystasz z interfejsu API REST, rozważ użycie zdarzeń HTTP utrzymujących działanie lub wysyłanych przez serwer , co może zmniejszyć koszty związane z uzgadnianiem SSL.
  • Używaj biletów sesyjnych TLS: Zmniejsz koszty ogólne szyfrowania SSL w przypadku wznowionych połączeń, wydając bilety sesyjne TLS . Jest to szczególnie przydatne, jeśli wymagane są częste i bezpieczne połączenia z bazą danych.
  • Zapytania indeksujące: Indeksowanie danych zmniejsza całkowitą przepustowość wykorzystywaną do zapytań, co ma podwójną korzyść w postaci obniżenia kosztów i zwiększenia wydajności bazy danych. Użyj narzędzia profilera, aby znaleźć niezindeksowane zapytania w bazie danych.
  • Zoptymalizuj swoje odbiorniki: Dodaj zapytania, aby ograniczyć dane zwracane przez operacje nasłuchiwania i używaj odbiorników, które pobierają tylko aktualizacje danych — na przykład on() zamiast once() . Dodatkowo umieść słuchaczy jak najdalej od ścieżki, aby ograniczyć ilość synchronizowanych danych.
  • Zmniejsz koszty przechowywania: wykonuj okresowe zadania czyszczenia i eliminuj wszelkie duplikaty danych w bazie danych.
  • Użyj reguł: Zapobiegaj potencjalnie kosztownym, nieautoryzowanym operacjom na bazie danych. Na przykład użycie reguł bezpieczeństwa bazy danych Firebase Realtime pozwala uniknąć scenariusza, w którym złośliwy użytkownik wielokrotnie pobiera całą bazę danych. Dowiedz się więcej o korzystaniu z reguł bazy danych czasu rzeczywistego Firebase .

Najlepszy plan optymalizacji Twojej aplikacji zależy od konkretnego przypadku użycia. Chociaż nie jest to wyczerpująca lista najlepszych praktyk, więcej porad i wskazówek od ekspertów Firebase można znaleźć na naszym kanale Slack lub na Stack Overflow .