Przykład cennika Cloud Firestore

Ten przykład podstawowej aplikacji do obsługi czatu pomoże Ci oszacować Cloud Firestore zużycie i koszty. Nie jest to dokładne oszacowanie, ale może pomóc Ci lepiej zrozumieć, jak rozliczane jest korzystanie z Cloud Firestore.

Omówienie: koszty według poziomu wykorzystania

Aby zilustrować typowe koszty, rozważmy 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 wielu regionów 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ę DAU 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 jedno usunięcie dziennie dla każdego zapisu dziennego.
  • 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. W zależności od struktury aplikacji i potrzeb w zakresie danych może być jednak konieczne uwzględnienie dodatkowych kosztów. 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: wykorzystanie podlegające opłacie według zadań użytkownika.

Mała
(50 tys. instalacji)

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

Koszty odczytu/zapisu
Łączny 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 tekstów + (80 tys. wygenerowanych tekstów za 0,18 USD za 100 tys.) =   0,8 * 0,18 USD
0,14 USD / dzień * 30 = 4,20 USD
 
100 tys. usunięć dziennie =   20 tys. bezpłatnych usunięć + (80 tys. usunięć w cenie 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 miejsca na wiadomości dziennie / liczba aktywnych użytkowników dziennie + 3 KB miejsca na dane / instalacja2 =   45 KB miejsca na dane / liczba aktywnych użytkowników dziennie * 5 tys. 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, więc 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 USD / dzień * 30 = 143,10 USD
 
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 USD * 0,18 USD
3,56 USD / dzień * 30 dni = 106,80 USD
 
2 mln usunięć dziennie =   20 tys.bezpłatnych usunięć + (1,98 mln usunięć po 0,02 USD za 100 tys.) =   19,80 PLN * 0,02 PLN
0,40 USD / dzień * 30 = 12,00 USD
Koszty miejsca na dane i sieci
Łączny koszt miesięczny = 30,12 PLN/mies.
20 KB / liczba aktywnych użytkowników 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 ruchu wychodzącego + (50 GB ruchu wychodzącego * 0,12 USD/GB) = 6,00 USD miesięcznie
 
15 KB dziennie na przechowywanie wiadomości / aktywny użytkownik dziennie + 3 KB na przechowywanie / 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ęcznie
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 = 1078,80 USD
 
Łącznie 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/mies.
20 KB / liczba aktywnych użytkowników dziennie w przypadku dziennego ruchu wychodzącego * 1 mln aktywnych użytkowników dziennie =   20 GB dziennego transferu 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 dziennie na przechowywanie wiadomości / aktywny użytkownik dziennie + 3 KB na przechowywanie / 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 związku z tym Twój rachunek może rosnąć i maleć wraz z liczbą DAU.

Zestawienie: rozliczone wykorzystanie według zadań użytkownika

W naszej 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.

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 też tylko wiadomości sprzed maksymalnie 3 miesięcy, aby obniżyć koszty miejsca na dane.

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:

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

  • Odczyty: (5 * 10) + (30) = 80 odczytów na użytkownika dziennie
  • Zapisy: (10 * 2) = 20 zapisów na użytkownika dziennie
  • Ruch wychodzący z sieci: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB / użytkownik / dzień
  • Miejsce na dane: (20 * 0,75 KB) = 15 KB / użytkownik / dzień

Łączne wykorzystanie według zadania użytkownika

Wybierz poszczególne zadania użytkownika, aby zobaczyć pełny opis i szczegółowe informacje o operacjach, pamięci i kosztach sieci w aplikacji.

Wyświetlanie listy czatów

Ekran główny aplikacji wczytuje 25 najnowszych czatów, co wiąże się z opłatą 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 przykładzie poniżej, mogą zmniejszyć to obciążenie.

W przykładzie poniżej ograniczamy zapytanie do nowych czatów za pomocą sygnatury czasowej każdego udanego 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ę, 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 wyświetlić ostatnie wiadomości. Podczas pierwszego wczytania wyświetlanych jest 50 najnowszych wiadomości.

Załóżmy, że typowy użytkownik wykonuje to działanie 5 razy dziennie (raz 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 czasu 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 tylko 30 pobranych wiadomości dziennie.

Wysyłanie wiadomości na czacie

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

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

Pamiętaj, że koszt odczytu 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 z aplikacji. Możesz na przykład śledzić dzienną 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. Uruchomienie tej codziennej agregacji spowoduje naliczenie następujących opłat miesięcznych:

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 tys. 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 opłatę za 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/100 000 odczytów = 0,18 USD miesięcznie

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

Cloud Firestore operacje, miejsce na dane i przepustowość sieci są traktowane jako wykorzystanie podlegające opłacie, ale otrzymujesz też wiele innych korzyści bez dodatkowych kosztów. Podczas porównywania 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ć klienty mobilne z bazą danych.
  • Równoważenie obciążenia: ponieważ Cloud Firestore automatycznie skaluje się, aby obsługiwać ruch w bazie danych, 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 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 Authentication jest 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ń za pomocą Cloud Messaging.
  • Inne usługi Firebase: bezpłatna integracja innych usług Firebase, w tym Testów A/B, Analytics, Crashlytics i monitorowania skuteczności. Dowiedz się więcej o innych usługach Firebasecenach Firebase.