Zobacz przykładowy cennik Cloud Firestore

Aby oszacować wykorzystanie i koszty Cloud Firestore, skorzystaj z tego przykładu podstawowej aplikacji do czatu. Nie jest to dokładna prognoza, ale może pomóc w lepszym zrozumieniu sposobu naliczania opłat za korzystanie z usługi Cloud Firestore.

Omówienie: koszty według poziomu wykorzystania

Aby zilustrować typowe koszty, weź pod uwagę przykładową aplikację do czatu, w której użytkownicy mogą inicjować czaty z co najmniej 2 uczestnikami. Użytkownicy widzą swoje aktywne czaty na liście, a także mogą czytać i wysyłać wiadomości. W tym przykładzie używamy cen dla wielu regionów w Ameryce Północnej (szczególnie nam5).

Założenia

Rozważ te założenia dotyczące użytkowania i przechowywania danych:

  • Liczba aktywnych użytkowników dziennie to 10% łącznej liczby instalacji aplikacji. Możesz oszacować koszty dzienne, korzystając z przybliżonej liczby aktywnych użytkowników dziennie. Są to użytkownicy, którzy aktywnie otwierają Twoją aplikację i korzystają z niej w danym dniu. Zazwyczaj stanowią oni niewielką część łącznej liczby instalacji aplikacji. W poniższych obliczeniach szacowaliśmy liczbę aktywnych użytkowników dziennie jako 10% łącznej liczby instalacji aplikacji.
  • Dokumenty są stosunkowo małe. Szczegółowe informacje o rozmiarze dokumentu według typu znajdziesz w tabeli poniżej.
  • Dane są przechowywane tylko przez 3 miesiące. Wiadomości w tym przykładzie aplikacji do czatu są przechowywane tylko przez 3 miesiące. Aby uwzględnić operacje usuwania, poniższe obliczenia pokazują dzienne usuwanie każdego dziennego zapisu.
  • Te szacowane koszty obejmują większość kosztów przykładowej aplikacji, ale nie wszystkie. Większość kosztów aplikacji uwzględniliśmy, obliczając operacje, miejsce na dane użytkowników i wiadomości oraz wyjście dla najczęściej wykonywanych przez użytkowników zadań opisanych w tym przewodniku. W zależności od struktury aplikacji i potrzeb związanych z danymi może być jednak konieczne uwzględnienie dodatkowych kosztów. Podczas obliczeń możesz się kierować tym przykładem, ale bardziej szczegółowe informacje o kosztach Cloud Firestore znajdziesz na stronie z cenami.

Szczegółowe informacje o operacjach według czynności użytkownika znajdziesz w sekcji Podział: obciążone użycie według czynności użytkownika.

Mała
(50 tys. instalacji)

W przypadku 50 tys. instalacji aplikacji (5000 aktywnych użytkowników dziennie): 12,14 USD miesięcznie.

Koszty odczytu/zapisu
Łączny koszt miesięczny = 11,10 USD/miesiąc
400 tys. wyświetleń dziennie = 50 tys. bezpłatnych wyświetleń + (350 tys. wyświetleń po 0,06 USD/100 tys.) =   3,5 * 0,06 USD
0,21 USD / dzień * 30 = 6,30 USD
 
100 tys. zapisów dziennie = 20 tys. bezpłatnych zapisów + (80 tys. zapisów po 0,18 USD/100 tys.) =   0,8 * 0,18
0,14 USD / dzień * 30 = 4,20 USD
 
100 tysięcy usuwanych plików dziennie = 20 tys. bezpłatnych usunięcia + (80 tys. usunięcia po 0,02 zł/100 tys.) = 0,8 * 0,02 USD
0,02 zł/dzień * 30 = 0,60 zł
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 1,04 USD/miesiąc
20 KB / DAU dziennie * 5000 DAU = 100 MB danych wychodzących dziennie * 30 = Miesięczny ruch wychodzący z sieci: 3 GB
3 GB bezpłatnego ruchu wychodzącego = bezpłatny1
 
15 KB miejsca na dzienne wiadomości / DAU + 3 KB miejsca / instalacja2 =   45 KB miejsca na dane / liczba aktywnych użytkowników dziennie * 5000 DAUs = 225 MB miejsca dziennie / DAU * 30 = 6,75 GB miesięcznego wykorzystania miejsca na dane
1 GB bezpłatnego miejsca na dane + (5,75 * 0,18 USD) = 1,04 USD / miesiąc

1 10 GB miesięcznego ruchu wychodzącego z sieci jest bezpłatne dla użytkowników Cloud Firestore.
2 Zgodnie z naszym założeniem, że DAU stanowią 10% łącznej liczby instalacji aplikacji, ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.

Średnie
(1 mln instalacji)

W przypadku 1 mln instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 292,02 USD/miesiąc

Koszty odczytu/zapisu
Łączny koszt miesięczny = 261,90 USD/miesiąc
8 mln odczytów dziennie = 50 tys. bezpłatnych wyświetleń + (7,95 mln wyświetleń przy cenie 0,06 USD/100 tys.) = 79,5 * 0,06 USD
4,77 USD/dzień * 30 = 143,10 USD
 
2 mln zapisów dziennie = 20 tys. bezpłatnych zapisów + (1,98 mln zapisów przy cenie 0,18 USD/100 tys.) =   19,8 * 0,18 USD
3,56 zł / dzień * 30 = 106,80 zł
 
Łącznie 2 mln usunięć dziennie = 20 tys. bezpłatnych usunięcia + (1,98 mln usunięcia przy cenie 0,02 USD/100 tys.) =   19,8 * 0,02 USD
0,40 zł / dzień * 30 = 12 zł
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 30,12 USD/miesiąc
20 KB / DAU dziennie * 100 tys. DAU = 2 GB ruchu wychodzącego dziennie * 30 = 60 GB sieciowego ruchu wychodzącego miesięcznie
10 GB bezpłatnego ruchu wychodzącego + (50 GB ruchu wychodzącego * 0,12 USD/GB) = 6,00 USD / miesiąc
 
15 KB miejsca na dzienne wiadomości / DAU + 3 KB miejsca / instalacja1 = 45 KB miejsca na dane / DAU * 100 tys. DAU =   4,5 GB miejsca na dane dziennie / liczba aktywnych użytkowników dziennie * 30 = 135 GB miesięcznie na wykorzystanie miejsca
1 GB bezpłatnego miejsca na dane + (134 GB * 0,18 USD/GB = 24,12 USD miesięcznie)

1 Zgodnie z naszym założeniem, że DAU stanowią 10% łącznej liczby instalacji aplikacji, ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.

Duży
(10 mln instalacji)

W przypadku 10 mln instalacji aplikacji (1 mln aktywnych użytkowników dziennie): 2951,52 USD

Koszty odczytu/zapisu
Łączny koszt miesięczny = łącznie: 2637,90 USD/miesiąc
80 mln odczytów dziennie = 50 tys. bezpłatnych wyświetleń + (79,95 mln wyświetleń przy cenie 0,06 USD/100 tys.) = 799,5 * 0,06 USD
47,97 USD / dzień * 30 = 1439,10 USD
 
Łącznie 20 mln zapisów dziennie = 20 tys. bezpłatnych zapisów + (19,98 mln zapisów przy cenie 0,18 USD/100 tys.) =   199,8 * 0,18 USD
35,96 PLN / dzień * 30 = 1078,80 PLN
 
20 mln usunięcia dziennie = 20 tys. bezpłatnych usunięcia + (19,98 mln usunięcia przy cenie 0,02 USD/100 tys.) =   199,8 * 0,02 USD
4,00 USD / dzień * 30 = 120 USD
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 313,62 USD/miesiąc
20 KB / DAU dziennego ruchu wychodzącego * 1 mln DAU = 20 GB ruchu wychodzącego dziennie * 30 =   600 GB sieciowego ruchu wychodzącego miesięcznie
10 GB bezpłatnego ruchu wychodzącego + (590 GB ruchu wychodzącego * 0,12 USD/GB) = 70,80 USD miesięcznie
 
15 KB miejsca na wiadomości dziennie / liczba aktywnych użytkowników dziennie + 3 KB miejsca na dane / instalacja1 = 45 KB miejsca na dane / liczba aktywnych użytkowników dziennie * 1 mln aktywnych użytkowników dziennie = 45 GB miejsca na dane dziennie / DAU * 30 =   Miesięczne wykorzystanie miejsca na dane (1350 GB)
(1 GB bezpłatnego miejsca na dane) + (1349 GB * 0,18 USD/GB) = 242,82 USD / miesiąc

1 Zakładamy, że liczba aktywnych użytkowników dziennie stanowią 10% łącznej liczby instalacji aplikacji, więc ta wartość odpowiada łącznej liczbie użytkowników, którzy zainstalowali Twoją aplikację.

Zaletą modelu rozliczeniowego Cloud Firestore, który warto wziąć pod uwagę, jest to, że płacisz tylko za to, z czego korzystasz. W związku z tym wysokość Twojego rachunku może się zwiększać i zmniejszać wraz z liczbą aktywnych użytkowników dziennie.

Zestawienie: Rozliczane wykorzystanie według zadania użytkownika

W przypadku przykładowej aplikacji do czatu struktura danych wygląda tak:

  • users/{userId} – rekordy użytkowników
  • groups/{groupId} – czaty z co najmniej 2 użytkownikami
    • messages/{messageId} – każda wiadomość na czacie.

Miejsce na dane

Aby obliczyć koszty przechowywania danych aplikacji, zastosuj te założenia dotyczące rozmiarów dokumentów:

Kolekcja Rozmiar dokumentu (w tranzycie) Rozmiar dokumentu (na dysku)*
użytkownicy 1 KB 3 KB
grupy 0,5 KB 1,5 KB
wiadomości 0,25 KB 0,75 KB

* To obliczenie rozmiaru obejmuje indeksy pól wiadomości, ale zakłada, że indeksowanie jest wyłączone w przypadku treści wiadomości.

Aplikacja przechowuje tylko wiadomości sprzed maksymalnie 3 miesięcy, aby obniżyć koszty przechowywania.

Więcej informacji o obliczaniu kosztów miejsca na dane znajdziesz w artykule Obliczanie rozmiaru miejsca na dane.

Operacje

Użytkownicy zwykle wykonują w aplikacji te typowe czynności:

Łączna liczba operacji Cloud Firestore w przypadku przykładowej aplikacji w przypadku 3 typowych zadań użytkownika:

  • Odczytania: (5 * 10) + (30) = 80 odczytań / użytkownik / dzień
  • Zapisy: (10 * 2) = 20 zapisów / użytkownik / dzień
  • Ruch wychodzący z sieci: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB na użytkownika/dzień
  • Pamięć: (20 * 0,75 KB) = 15 KB / użytkownik / dzień

Łączne wykorzystanie według czynności użytkownika

Wybierz każdą czynność użytkownika, aby zobaczyć pełny opis i zestawienie operacji, kosztów przechowywania i kosztów sieci w aplikacji.

Wyświetlanie listy czatów

Ekran główny aplikacji wczytuje 25 najnowszych czatów, co powoduje obciążenie za 25 oczytań dokumentów. Załóżmy, że aktywny użytkownik otwiera aplikację 5 razy dziennie, co daje łącznie 125 czytań na użytkownika dziennie. Bardziej wydajne zapytania, takie jak w następującym przykładzie, mogą jednak zmniejszyć to obciążenie.

W przykładzie poniżej ograniczamy zapytanie do nowych czatów, używając sygnatury czasowej każdego pomyślnego pobrania, przechowywanej przez aplikację:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

Załóżmy, że za każdym razem, gdy użytkownik sprawdza aplikację, jest średnio 10 aktualizowanych czatów. To zapytanie powoduje tylko 10 odczytań dokumentu.

Czytanie wiadomości na czacie

Użytkownicy mogą klikać wątki czatu na ekranie głównym, aby wyświetlić najnowsze wiadomości i wczytać 50 ostatnich wiadomości przy wczytywaniu początkowym.

Załóżmy, że typowy użytkownik wykonuje tę czynność 5 razy dziennie (raz za każdym razem, gdy otwiera ekran główny), co daje łącznie 250 wyświetleń na użytkownika dziennie. Możemy też ograniczyć zapytanie do nowych wiadomości od ostatniego pobrania:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

Załóżmy, że użytkownik otrzymuje około 30 wiadomości dziennie we wszystkich czatach. Ponieważ zawęziłaś/zawęziło się do pobierania nowych wiadomości, oznacza to, że pobieranych wiadomości będzie tylko 30 na dzień.

Wysyłanie wiadomości na czacie

Użytkownicy mogą wysyłać wiadomości do innych uczestników, gdy znajdą się na czacie. Załóżmy, że aktywny użytkownik wysyła około 10 wiadomości dziennie.

Każda wysłana wiadomość spowoduje 2 zapisy dokumentu: jeden do podzbioru messages czatu i jeden do dokumentu nadrzędnego czatu w celu zaktualizowania sygnatury czasowej lastUpdated i innych metadanych.

Pamiętaj, że koszt odczytu tych wiadomości został uwzględniony w innych ścieżkach, więc sumy poniżej uwzględniają tylko koszt zapisu.

Rozliczane za wykorzystanie zadań administracyjnych

Jako właściciel lub administrator aplikacji prawdopodobnie chcesz generować raporty na podstawie danych aplikacji. Możesz na przykład codziennie zliczać liczbę wiadomości wysyłanych przez użytkowników. Możesz to zrobić za pomocą agregacji count() grupy kolekcji messages.

W przypadku zapytań zbiorczych, takich jak count(), naliczamy opłatę za 1 odczytany dokument dla każdej grupy maksymalnie 1000 wpisów indeksu pasujących do zapytania. Wykonywanie tej codziennej agregacji powoduje dodatkowe opłaty miesięczne:

Mały
(50 tys. instalacji)

Za 50 tys. instalacji aplikacji (5000 DAUs): 0,0009 USD/miesiąc

5000 aktywnych użytkowników * 10 nowych wiadomości na użytkownika = 50 000 nowych dokumentów wiadomości dziennie

50 000 dokumentów / 1000 pasujących indeksów na opłatę za odczyt = 50 odczytów

50 odczytów dziennie * 30 dni = 1500 odczytów miesięcznie

1500 wyświetleń miesięcznie * 0,06 / 100 tys. wyświetleń = 0,0009 USD miesięcznie

Średnie
(1 mln instalacji)

W przypadku 1 mln instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 0,018 USD/miesiąc

100 tys. użytkowników aktywnych * 10 nowych wiadomości na użytkownika = 1 mln nowych dokumentów wiadomości dziennie

1 000 000 dokumentów / 1000 dopasowań indeksu na opłatę za odczyt = 1000 odczytów

1000 odczytów dziennie * 30 dni = 30 tys. odczytów miesięcznie

30 000 odczytów miesięcznie * 0,06/100 000 ceny odczytu = 0,018 USD za miesiąc

Duży
(10 mln instalacji)

W przypadku 10 mln instalacji aplikacji (1 mln aktywnych użytkowników dziennie): 0,18 zł.

1 000 000 aktywnych użytkowników * 10 nowych wiadomości na użytkownika = 10 000 000 nowych dokumentów wiadomości dziennie

10 000 000 dokumentów zliczanych / 1000 pasujących indeksów na opłatę za odczyt = 10 000 odczytów

10 tys. odczytów dziennie * 30 dni = 300 tys. odczytów miesięcznie

300 000 wyświetleń miesięcznie * 0,06 / 100 000 wyświetleń = 0,18 zł miesięcznie

Korzyści: bezpłatne usługi dla Twojej aplikacji

Chociaż operacje, miejsce na dane i przepustowość sieci Cloud Firestore są uważane za płatne wykorzystanie, otrzymujesz też wiele innych korzyści bez dodatkowych kosztów. Przy porównywaniu Cloud Firestore z innymi opcjami baz danych rozważ te bezpłatne usługi:

  • Bezpośredni dostęp klienta: do usługi Cloud Firestore uzyskujesz dostęp bezpośrednio z kodu klienta za pomocą naszych natywnych pakietów SDK. Oznacza to, że nie musisz tworzyć ani uruchamiać serwera interfejsu API, aby połączyć klientów mobilnych z bazą danych.
  • Równoważenie obciążenia: usługa Cloud Firestore skaluje się automatycznie, aby obsługiwać ruch do bazy danych, więc nie musisz uruchamiać systemu równoważenia obciążenia.
  • Czas działania serwera: bazy danych Cloud Firestore działają na serwerach Google Cloud, co zapewnia czas działania usługi przez ponad 99% miesięcznie.
  • Uwierzytelnianie: uwierzytelnianie nieograniczonej liczby użytkowników w prosty i bezpieczny sposób za pomocą Firebase Authentication. Firebase Authentication integruje się bezpośrednio z Cloud Firestore, więc nie musisz uruchamiać własnej usługi uwierzytelniania.
  • Powiadomienia push: wysyłaj wiadomości i powiadomienia za pomocą Cloud Messaging.
  • Inne usługi Firebase: bezpłatnie integruj inne usługi Firebase, w tym Testy A/B, Analytics, Crashlytics, Monitorowanie wydajności i Zdalną konfigurację. Dowiedz się więcej o innych usługach Firebasecenach Firebase.