Przykład cennika Cloud Firestore

Ten przykład podstawowej aplikacji do obsługi czatu pomoże Ci oszacować wykorzystanie Cloud Firestore i koszty. Nie jest to dokładne oszacowanie, ale może pomóc Ci lepiej zrozumieć, jak naliczane są opłaty za Cloud Firestore.

Omówienie: koszty według poziomu wykorzystania

Aby zilustrować typowe koszty, weźmy pod uwagę przykładową aplikację do czatowania, w której użytkownicy mogą rozpoczynać czaty z co najmniej 2 osobami. Użytkownicy mogą wyświetlać listę aktywnych czatów, czytać i wysyłać wiadomości. W tym przykładzie używamy cen dla regionu obejmującego wiele lokalizacji w Ameryce Północnej (konkretnie nam5).

Założenia

Weź pod uwagę te założenia dotyczące wykorzystania i przechowywania danych:

  • Liczba aktywnych użytkowników dziennie stanowi 10% łącznej liczby instalacji aplikacji. Możesz oszacować dzienne koszty, korzystając z przybliżonej liczby aktywnych użytkowników dziennie. Są to użytkownicy, którzy aktywnie otwierają i używają Twojej aplikacji w danym dniu. Zazwyczaj stanowią oni niewielką część wszystkich instalacji aplikacji. W przypadku poniższych obliczeń oszacowaliśmy liczbę aktywnych użytkowników dziennie na 10% łącznej liczby instalacji aplikacji.
  • Rozmiary dokumentów są stosunkowo małe.tabeli poniżej znajdziesz podział rozmiarów dokumentów według typu.
  • Dane są przechowywane tylko przez 3 miesiące. Wiadomości w przykładzie aplikacji do czatowania są przechowywane tylko przez 3 miesiące. Aby uwzględnić operacje usuwania, w obliczeniach poniżej pokazujemy codzienne usuwanie dla każdego codziennego zapisu.
  • Te szacunki kosztów odzwierciedlają 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 ruch wychodzący w przypadku najczęstszych zadań użytkowników opisanych w tym przewodniku. Może się jednak okazać, że musisz wziąć pod uwagę dodatkowe koszty w zależności od struktury aplikacji i potrzeb w zakresie danych. Skorzystaj z tego przykładu, aby przeprowadzić obliczenia, ale dokładniejsze wyjaśnienia kosztów Cloud Firestore znajdziesz na stronie z cennikiem.

Szczegółowe informacje o operacjach według zadań użytkownika znajdziesz w sekcji Zestawienie: naliczane użycie według zadań użytkownika.

Mała
(50 tys. instalacji)

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

Koszty odczytu/zapisu
Całkowity koszt miesięczny = 11,10 PLN/miesiąc
400 tys. odczytów dziennie =   50 tys. bezpłatnych odczytów + (350 tys. odczytów po 0,06 USD za 100 tys.) =   3,5 * 0,06 USD
0,21 USD / dzień * 30 dni = 6,30 USD
 
100 tys. zapisów dziennie =   20 tys. bezpłatnych wygenerowanych słów + (80 tys. wygenerowanych słów w cenie 0,18 USD za 100 tys.) =   0,8 * 0,18 USD
0,14 USD / dzień * 30 dni = 4,20 USD
 
100 tys. usunięć dziennie =   20 tys. bezpłatnych usunięć + (80 tys. usunięć po 0,02 USD za 100 tys.) =   0,8 * 0,02 USD
0,02 USD / dzień * 30 = 0,60 USD
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 1,04 PLN/miesiąc
20 KB / liczba aktywnych użytkowników dziennie * 5000 aktywnych użytkowników dziennie =   100 MB dziennego ruchu wychodzącego * 30 =   3 GB miesięcznego ruchu wychodzącego z sieci
3 GB bezpłatnego ruchu wychodzącego = bezpłatny1
 
15 KB dziennej pamięci wiadomości / DAU + 3 KB pamięci / instalacja2 =   45 KB pamięci / liczba aktywnych użytkowników dziennie * 5000 aktywnych użytkowników dziennie =   225 MB dziennego miejsca na dane / 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ęcznie

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

Średni
(1 mln instalacji)

W przypadku 1 000 000 instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 292,02 USD miesięcznie

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

1 Zakładamy, że liczba DAU stanowi 10% łącznej liczby instalacji aplikacji, więc ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.

Duża
(10 mln instalacji)

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

Koszty odczytu/zapisu
Łączny koszt miesięczny = łącznie: 2637,90 USD/miesiąc
80 mln odczytów dziennie =   50 tys.bezpłatnych odczytań + (79,95 mln odczytań po 0,06 USD za 100 tys.) =   799,5 * 0,06 USD
47,97 USD / dzień * 30 = 1439,10 USD
 
20 mln zapisów dziennie =   20 tys.bezpłatnych zapisów + (19,98 mln zapisów po 0,18 USD za 100 tys.) =   199,8 * 0,18 USD
35,96 USD / dzień * 30 dni = 1078,80 USD
 
20 mln usunięć dziennie =   20 tys.bezpłatnych usunięć + (19,98 mln usunięć po 0,02 USD za 100 tys.) =   199,8 * 0,02 USD
4,00 USD / dzień * 30 = 120,00 USD
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 313,62 PLN/miesiąc
20 KB / liczba aktywnych użytkowników dziennie w przypadku ruchu wychodzącego dziennie * 1 mln aktywnych użytkowników dziennie =   20 GB dziennego ruchu wychodzącego * 30 =   600 GB miesięcznego ruchu wychodzącego z sieci
10 GB bezpłatnego transferu wychodzącego + (590 GB transferu wychodzącego * 0,12 USD/GB) = 70,80 USD miesięcznie
 
15 KB dziennego miejsca na wiadomości / aktywny użytkownik dziennie + 3 KB miejsca / 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 =   1350 GB miesięcznego wykorzystania miejsca na dane
(1 GB bezpłatnego miejsca na dane) + (1349 GB * 0,18 USD/GB) = 242,82 USD miesięcznie

1 Zakładamy, że liczba DAU stanowi 10% łącznej liczby instalacji aplikacji, więc ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.

Zaletą modelu rozliczeń Cloud Firestore jest to, że płacisz tylko za to, z czego korzystasz. W rezultacie Twój rachunek może rosnąć i maleć wraz z liczbą DAU.

Zestawienie: wykorzystanie podlegające opłacie według zadania użytkownika

W przypadku naszej przykładowej aplikacji do czatu struktura danych jest następująca:

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

Przechowywanie danych

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

Kolekcja Rozmiar dokumentu (w trakcie przesyłania) 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

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

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

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

Operacje

Użytkownicy zwykle wykonują w aplikacji te typowe zadania:

Szacowana łączna liczba operacji w Cloud Firestore w przypadku 3 typów zadań użytkownika w przykładowej aplikacji jest następująca:

  • Odczyty: (5 * 10) + (30) = 80 odczytów / użytkownika / dzień
  • Pisanie: (10 * 2) = 20 razy na użytkownika dziennie
  • Wychodzący ruch sieciowy: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB na użytkownika dziennie
  • Miejsce na dane: (20 * 0,75 KB) = 15 KB / użytkownika / dzień

Łączne wykorzystanie według zadania użytkownika

Wybierz każde zadanie użytkownika, aby zobaczyć pełny opis i szczegółowe zestawienie kosztów operacji, pamięci i sieci w aplikacji.

Wyświetlanie listy czatów

Ekran główny aplikacji wczytuje 25 najnowszych czatów, co wiąże się z opłatami za 25 odczytów dokumentów. Załóżmy, że aktywny użytkownik otwiera aplikację 5 razy dziennie, co daje łącznie 125 odczytów na użytkownika każdego dnia. Jednak bardziej wydajne zapytania, takie jak w poniższym przykładzie, mogą zmniejszyć to obciążenie.

W przykładzie poniżej ograniczamy zapytanie do nowych czatów, używając sygnatury czasowej każdego udanego pobrania, która jest przechowywana 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ę, pojawia się średnio 10 zaktualizowanych czatów. To zapytanie powoduje tylko 10 odczytów dokumentów.

Czytanie wiadomości na czacie

Użytkownicy klikają wątki czatu na ekranie głównym, aby zobaczyć ostatnie wiadomości. Podczas pierwszego wczytania wyświetlanych jest 50 najnowszych wiadomości.

Załóżmy, że typowy użytkownik wykonuje tę czynność 5 razy dziennie (za każdym razem, gdy otwiera ekran główny), co daje łącznie 250 odczytów dziennie na użytkownika. 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ż zapytanie zostało ograniczone do pobierania nowych wiadomości, oznacza to, że dziennie pobieranych jest tylko 30 wiadomości.

Wysyłanie wiadomości na czacie

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

Każda wysłana wiadomość spowoduje zapisanie 2 dokumentów: jednego w podzbiorze messages czatu i jednego w dokumencie nadrzędnym czatu, aby zaktualizować sygnaturę czasową lastUpdated i inne metadane.

Pamiętaj, że koszt odczytywania tych wiadomości został uwzględniony w przypadku innych ścieżek, więc poniższe sumy uwzględniają tylko koszt zapisu.

Rozliczane wykorzystanie w przypadku zadań administratora

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 wysłanych przez użytkowników. Możesz to zrobić za pomocą agregacji count() grupy kolekcji messages.

W przypadku zapytań zbiorczych, takich jak count(),opłata za odczytanie 1 dokumentu jest naliczana za każdą grupę maksymalnie 1000 wpisów indeksu pasujących do zapytania. Wykonywanie tego codziennego zapytania zbiorczego wiąże się z następującymi miesięcznymi opłatami:

Mała
(50 tys. instalacji)

W przypadku 50 tys. instalacji aplikacji (5 tys. aktywnych użytkowników dziennie): 0,0009 USD miesięcznie

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 odczytów miesięcznie * 0,06 USD/100 000 odczytów = 0,0009 USD miesięcznie

Średni
(1 mln instalacji)

W przypadku 1 000 000 instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 0,018 USD miesięcznie

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

1 000 000 dokumentów / 1000 pasujących indeksów na odczyt = 1000 odczytów

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

30 000 odczytów miesięcznie * 0,06 USD/100 000 odczytów = 0,018 USD miesięcznie

Duża
(10 mln instalacji)

W przypadku 10 000 000 instalacji aplikacji (1 000 000 aktywnych użytkowników dziennie): 0,18 USD

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 / 1000 pasujących indeksów na odczyt = 10 000 odczytów

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

300 000 odczytów miesięcznie * 0,06 USD za 100 000 odczytów = 0,18 USD miesięcznie

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

Cloud Firestore operacje, pamięć i przepustowość sieci są traktowane jako wykorzystanie podlegające opłacie, ale otrzymujesz też wiele innych korzyści bez dodatkowych kosztów. Porównując Cloud Firestore z innymi opcjami baz danych, weź pod uwagę te bezpłatne usługi:

  • Bezpośredni dostęp klienta: Cloud Firestore jest dostępny bezpośrednio z kodu klienta za pomocą naszych natywnych pakietów SDK. Oznacza to, że nie musisz tworzyć i uruchamiać serwera API, aby połączyć klientów mobilnych z bazą danych.
  • Równoważenie obciążenia: ponieważ Cloud Firestore automatycznie skaluje się, aby obsługiwać ruch do bazy danych, nie musisz uruchamiać usługi równoważenia obciążenia.
  • Czas działania serwera: bazy danych Cloud Firestore działają na serwerach Google Cloud, co zapewnia ponad 99% czasu działania w miesiącu.
  • Uwierzytelnianie: uwierzytelniaj nieograniczoną liczbę użytkowników w prosty i bezpieczny sposób za pomocą Firebase Authentication. Firebase Authenticationjest bezpośrednio zintegrowana z usługą Cloud Firestore, więc nie musisz uruchamiać własnej usługi uwierzytelniania.
  • Powiadomienia push: wysyłanie wiadomości i powiadomień z Cloud Messaging.
  • Inne usługi Firebase: możesz bezpłatnie zintegrować 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 Firebase i cenach Firebase.