Omówienie rozliczania baz danych w czasie rzeczywistym

Firebase rozlicza dane przechowywane w bazie danych i cały wychodzący ruch sieciowy w warstwie sesji (warstwa 5) modelu OSI. Pamięć masowa jest rozliczana w wysokości 5 USD za każdy GB miesięcznie, oceniana codziennie. Lokalizacja Twojej bazy danych nie ma wpływu na rozliczenia. Ruch wychodzący obejmuje obciążenie związane z połączeniami i szyfrowaniem ze wszystkich operacji bazy danych oraz danych pobranych za pomocą odczytów bazy danych. Zarówno odczyt, jak i zapis bazy danych może prowadzić do kosztów połączenia na rachunku. Cały ruch do iz bazy danych, w tym operacje odrzucone przez reguły bezpieczeństwa, prowadzi do naliczania kosztów.

Oto kilka typowych przykładów rozliczanego ruchu:

  • Pobrane dane: gdy klienci pobierają dane z Twojej bazy danych, Firebase pobiera opłaty za pobrane dane. Zazwyczaj stanowi to większość kosztów przepustowości, ale nie jest to jedyny czynnik na rachunku.
  • Narzut protokołu: pewien dodatkowy ruch między serwerem a klientami jest niezbędny do ustanowienia i utrzymania sesji. W zależności od protokołu bazowego ten ruch może obejmować: obciążenie protokołu czasu rzeczywistego Firebase Realtime Database, obciążenie WebSocket i obciążenie nagłówka HTTP. Za każdym razem, gdy nawiązywane jest połączenie, ten narzut, w połączeniu z dowolnym narzutem szyfrowania SSL, przyczynia się do kosztów połączenia. Chociaż nie jest to duża przepustowość dla pojedynczego żądania, może to stanowić znaczną część rachunku, jeśli Twoje ładunki są małe lub jeśli nawiązujesz częste, krótkie połączenia.
  • Narzuty na szyfrowanie SSL: Istnieje koszt związany z narzutami na szyfrowanie SSL niezbędnymi do bezpiecznych połączeń. Średnio koszt ten wynosi około 3,5 KB dla początkowego uzgadniania i około dziesiątek bajtów na nagłówki rekordów TLS w każdej wiadomości wychodzącej. W przypadku większości aplikacji jest to niewielki procent Twojego rachunku. Jednak może to stać się dużym odsetkiem, jeśli Twój konkretny przypadek wymaga wielu uścisków dłoni SSL. Na przykład urządzenia, które nie obsługują biletów sesji TLS, mogą wymagać dużej liczby uzgadniania połączeń SSL.
  • Dane konsoli Firebase: chociaż zazwyczaj nie jest to znacząca część 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 danych:

  • Połączenia: liczba jednoczesnych, aktualnie otwartych połączeń z bazą danych w czasie rzeczywistym. Obejmuje to następujące połączenia w czasie rzeczywistym: WebSocket, długie sondowanie i zdarzenia wysyłane przez serwer HTML. Nie obejmuje żądań RESTful.
  • Przechowywanie: Ile danych jest przechowywanych w Twojej bazie danych. Nie dotyczy to hostingu Firebase ani danych przechowywanych w innych usługach Firebase.
  • Pobrane: wszystkie bajty pobrane z bazy danych, w tym narzut dotyczący protokołu i szyfrowania.
  • Obciążenie: Ten wykres pokazuje, jaka część Twojej bazy danych jest używana, przetwarzając żądania, w danym interwale 1-minutowym. Możesz zobaczyć problemy z wydajnością, gdy twoja baza danych zbliża się do 100%.

Zoptymalizuj użycie

Istnieje kilka najlepszych praktyk, które można zastosować, aby zoptymalizować wykorzystanie bazy danych i koszty przepustowości.

  • Używaj natywnych pakietów SDK: zawsze, gdy to możliwe, używaj pakietów SDK, które odpowiadają platformie Twojej aplikacji, a nie interfejsu API REST. Zestawy SDK utrzymują otwarte połączenia, zmniejszając koszty szyfrowania SSL, które zwykle sumują się z interfejsem API REST.
  • Sprawdź, czy nie ma błędów: jeśli koszty przepustowości są nieoczekiwanie wysokie, sprawdź, czy aplikacja nie synchronizuje większej ilości danych lub synchronizuje częściej niż pierwotnie zamierzałeś. Aby wskazać problemy, użyj narzędzia do profilowania, aby zmierzyć operacje odczytu i włączyć rejestrowanie debugowania w zestawach SDK systemu Android , Objective-C i sieci Web . Sprawdź procesy w tle i zsynchronizuj 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ć bardziej kosztowne 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 utrzymywania aktywności lub wysyłania przez serwer , które mogą zmniejszyć koszty uzgadniania protokołu SSL.
  • Używaj biletów sesji TLS: zmniejsz koszty ogólne szyfrowania SSL przy wznowionych połączeniach, wystawiając bilety sesji TLS . Jest to szczególnie przydatne, jeśli potrzebujesz częstych, bezpiecznych połączeń z bazą danych.
  • Zapytania indeksujące: indeksowanie danych zmniejsza całkowitą przepustowość używaną do zapytań, co daje 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 swojej bazie danych.
  • Zoptymalizuj swoje detektory: Dodaj zapytania, aby ograniczyć dane zwracane przez operacje nasłuchu i użyj detektorów, które pobierają tylko aktualizacje danych — na przykład on() zamiast once() . Ponadto umieść odbiorniki jak najdalej na ścieżce, aby ograniczyć ilość synchronizowanych danych.
  • Zmniejsz koszty pamięci masowej: uruchamiaj okresowe zadania czyszczenia i ogranicz zduplikowane dane w bazie danych.
  • Użyj reguł: Zapobiegaj wszelkim potencjalnie kosztownym, nieautoryzowanym operacjom w bazie danych. Na przykład użycie reguł 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 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 sprawdzonych metod, więcej porad i wskazówek ekspertów Firebase znajdziesz na naszym kanale Slack lub w Stack Overflow .