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 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 obliczeniach poniżej 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 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. W zależności od struktury aplikacji i potrzeb w zakresie danych może być jednak konieczne uwzględnienie dodatkowych kosztów. Przy obliczeniach możesz się posłużyć tym przykładem, ale dokładniejsze wyjaśnienia dotyczące kosztów Cloud Firestore znajdziesz na stronie z cennikiem.

Szczegółowe informacje o operacjach według zadań użytkownika znajdziesz w sekcji Szczegółowe informacje: naliczane wykorzystanie 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
Łączny koszt miesięczny = 11,10 PLN/miesiąc
400 tys. wyświetleń 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 zapisów + (80 tys. zapisó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ęć 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 * 5 tys. 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 dziennego miejsca na wiadomości / DAU + 3 KB miejsca na instalację2 =   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, 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 przeczytanych artykułó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 * 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 PLN * 0,02 PLN
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 * 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 ruchu wychodzącego bez opłat + (50 GB ruchu 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 aktywnych użytkowników dziennie 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 PLN/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 * 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 pamięci / 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 aktywnych użytkowników dziennie stanowi 10% łącznej liczby instalacji aplikacji, więc ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.

Zaletą modelu rozliczeniowego 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 czynności:

Łączna szacowana 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ń
  • 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 dziennie
  • Miejsce na dane: (20 * 0,75 KB) = 15 KB na użytkownika dziennie

Łączne wykorzystanie według zadania użytkownika

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

Wyświetlanie listy czatów

Ekran główny aplikacji wczytuje 25 ostatnich 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 poniższym przykładzie, mogą zmniejszyć to obciążenie.

W przykładzie poniżej ograniczamy zapytanie do nowych czatów za pomocą 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 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 (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ż ograniczasz zapytanie do pobierania nowych wiadomości, oznacza to, że pobieranych jest tylko 30 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 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 chcieć 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 pozycji indeksu pasujących do zapytania. Przeprowadzenie tej dziennej 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 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 zliczonych dokumentów / 1000 pasujących indeksów na opłatę za 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 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: do usługi Cloud Firestore uzyskuje się bezpośredni dostęp 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ć 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, Monitorowania wydajności i Zdalnej konfiguracji. Dowiedz się więcej o innych usługach Firebasecenach Firebase.