Informacje o płatnościach w bazie danych czasu rzeczywistego

Firebase nalicza opłaty za dane przechowywane w bazie danych i cały wychodzący ruch sieciowy w warstwie sesji (warstwie 5) modelu OSI. Ilość miejsca na dane jest naliczana codziennie w wysokości 5 USD za każdy gigabajt na miesiąc. Lokalizacja bazy danych nie ma wpływu na płatności. Ruch wychodzący obejmuje narzut związany z połączeniem i szyfrowaniem ze wszystkich operacji na bazie danych oraz danych pobieranych w ramach odczytów bazy danych. Odczyty i zapisy bazy danych mogą powodować naliczanie opłat za połączenie. Cały ruch do i z bazy danych, w tym operacje odrzucone przez reguły zabezpieczeń, prowadzi do naliczanych kosztów.

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

  • Pobrane dane: gdy klienci pozyskują dane z Twojej bazy danych, Firebase nalicza za nie opłaty. Zwykle stanowi to większość kosztów związanych z przepustowością, ale nie jest jedynym czynnikiem branym pod uwagę w rozliczeniu.
  • Narzut protokołu: do ustanowienia i utrzymania sesji potrzebny jest dodatkowy ruch między serwerem a klientami. W zależności od używanego protokołu ruch może obejmować: narzut protokołu w czasie rzeczywistym w Bazie danych czasu rzeczywistego Firebase, narzut WebSocket i narzut nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut w połączeniu z nakładem pracy związany z szyfrowaniem SSL przyczynia się do wzrostu kosztów połączenia. Chociaż nie zapewnia to dużej przepustowości w przypadku pojedynczego żądania, może stanowić istotną część rachunku, jeśli ładunki są niewielkie lub wykonujesz częste, krótkie połączenia.
  • Narzuty związane z szyfrowaniem SSL: związane z nimi koszty związane z szyfrowaniem SSL niezbędną do zapewnienia bezpiecznych połączeń. Średni koszt początkowego uzgadniania połączenia to około 3, 5 KB, a nagłówków rekordu TLS – około dziesiątek bajtów w przypadku każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki odsetek rachunku. Może to jednak być duży odsetek, jeśli w danym przypadku wymagane jest dużo uzgadniania połączenia SSL. Na przykład urządzenia, które nie obsługują zgłoszeń w sesji TLS, mogą wymagać dużej liczby uzgadniania połączenia SSL.
  • Dane konsoli Firebase: choć zwykle nie jest to znacząca część kosztów Bazy danych czasu rzeczywistego, Firebase nalicza opłaty za dane odczytywane i zapisywane w konsoli Firebase.

Oszacuj rozliczane wykorzystanie

Aby sprawdzić bieżące połączenia z Bazą danych czasu rzeczywistego i wykorzystanie danych, otwórz kartę Użycie w konsoli Firebase. Możesz sprawdzić wykorzystanie w bieżącym okresie rozliczeniowym, w ciągu ostatnich 30 dni lub ostatnich 24 godzin.

Firebase pokazuje statystyki użytkowania tych danych:

  • Połączenia:liczba jednoczesnych, obecnie otwartych połączeń z bazą danych w czasie rzeczywistym. Obejmuje to następujące połączenia w czasie rzeczywistym: WebSocket, długie odpytywanie i zdarzenia wysyłane przez serwer HTML. Nie obejmuje żądań REST.
  • Miejsce na dane: ilość danych przechowywanych w bazie danych. Nie dotyczy to hostingu Firebase ani danych przechowywanych przy użyciu innych usług Firebase.
  • Pobrania: wszystkie bajty pobrane z Twojej bazy danych, w tym narzut związany z protokołem i szyfrowaniem.
  • Obciążenie: ten wykres pokazuje, jaka część bazy danych jest używana podczas przetwarzania żądań w danym 1-minutowym przedziale czasu. Gdy baza danych zbliża się do 100%, mogą wystąpić problemy z wydajnością.

Optymalizuj wykorzystanie

Istnieje kilka sprawdzonych metod, które możesz zastosować, aby zoptymalizować wykorzystanie bazy danych i koszty przepustowości.

  • Używaj natywnych pakietów SDK: w miarę możliwości używaj pakietów SDK odpowiadających platformie aplikacji zamiast interfejsu API REST. Pakiety SDK utrzymują otwarte połączenia, co zmniejsza koszty szyfrowania SSL, które zwykle sumują się w przypadku interfejsu API REST.
  • Sprawdź, czy nie występują błędy: jeśli opłaty za przepustowość są nieoczekiwanie wysokie, sprawdź, czy aplikacja nie synchronizuje większej ilości danych ani nie synchronizuje danych częściej, niż potrzebujesz. Aby wykryć problemy, użyj narzędzia do profilowania, aby mierzyć operacje odczytu i włączyć logowanie debugowania w pakietach SDK na Androida, Objective-C i internetowe. Sprawdź procesy w tle i synchronizacje w aplikacji, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.
  • Ogranicz liczbę połączeń: jeśli to możliwe, spróbuj zoptymalizować przepustowość połączenia. Częste, niewielkie żądania REST mogą być droższe niż pojedyncze, ciągłe połączenie z wykorzystaniem natywnego pakietu SDK. Jeśli używasz interfejsu API typu REST, rozważ użycie zdarzeń wysyłanych przez serwer lub podtrzymujących połączenie HTTP, ponieważ mogą one ograniczyć koszty uzgadniania połączenia SSL.
  • Użyj biletów na sesję TLS: możesz obniżyć koszty związane z szyfrowaniem SSL w przypadku wznowionych połączeń, wysyłając zgłoszenia w sesji TLS. Jest to szczególnie przydatne, gdy wymagasz częstych, bezpiecznych połączeń z bazą danych.
  • Zapytania dotyczące indeksu: indeksowanie danych zmniejsza łączną przepustowość używaną do obsługi zapytań, co ma podwójną korzyść w postaci obniżenia kosztów i zwiększenia wydajności bazy danych. Użyj narzędzia do profilowania, aby znaleźć niezindeksowane zapytania w bazie danych.
  • Zoptymalizuj detektory: dodaj zapytania, aby ograniczyć dane zwracane przez operacje nasłuchiwania i używaj detektorów, które pobierają tylko aktualizacje danych, np. on() zamiast once(). Dodatkowo rozmieszczaj detektory jak najdalej, aby ograniczyć ilość synchronizowanych danych.
  • Zmniejsz koszty przechowywania: uruchamiaj okresowe zadania czyszczenia i ograniczaj liczbę zduplikowanych danych w bazie danych.
  • Użyj reguł: zapobiegaj potencjalnym kosztom i nieautoryzowanym operacjam w bazie danych. Na przykład używanie reguł zabezpieczeń bazy danych czasu rzeczywistego Firebase pozwala uniknąć sytuacji, w której złośliwy użytkownik wielokrotnie pobiera całą bazę danych. Dowiedz się więcej o używaniu reguł bazy danych czasu rzeczywistego Firebase.

Najlepszy plan optymalizacji aplikacji zależy od konkretnego przypadku użycia. Nie jest to wyczerpująca lista sprawdzonych metod, ale więcej porad i wskazówek ekspertów Firebase znajdziesz na kanale Slack lub na Stack Overflow.