Aby oszacować wykorzystanie i koszty Cloud Firestore, skorzystaj z tego rzeczywistego przykładu podstawowej aplikacji do obsługi czatu. Nie jest to dokładne oszacowanie, ale może pomóc Ci lepiej zrozumieć, jak naliczane są opłaty za korzystanie z Cloud Firestore.
Przegląd: koszty według poziomu wykorzystania
Aby zilustrować typowe koszty, rozważmy przykładową aplikację do obsługi czatu, w której użytkownicy mogą rozpoczynać czaty z co najmniej 2 uczestnikami. Użytkownicy mogą wyświetlać listę aktywnych czatów, czytać wiadomości i wysyłać je. 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 wynosi 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. Zwykle jest to niewielki podzbiór wszystkich instalacji aplikacji. W obliczeniach poniżej oszacowaliśmy liczbę aktywnych użytkowników dziennie na 10% łącznej liczby instalacji aplikacji.
- Rozmiary dokumentów są stosunkowo niewielkie. W tabeli poniżej znajdziesz zestawienie rozmiarów dokumentów według typu.
- Dane są przechowywane tylko przez 3 miesiące. Wiadomości w przykładowej aplikacji do obsługi czatu są przechowywane tylko przez 3 miesiące. Aby uwzględnić operacje usuwania, poniższe obliczenia pokazują codzienne usuwanie dla każdego codziennego zapisu.
- Te szacunkowe koszty odzwierciedlają większość kosztów przykładowej aplikacji, ale nie wszystkie. Uwzględniliśmy większość kosztów aplikacji, obliczając operacje, miejsce na dane użytkowników i wiadomości oraz ruch wychodzący dla najczęstszych zadań użytkowników 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. Skorzystaj z tego przykładu, aby przeprowadzić obliczenia, ale zapoznaj się z cennikiem, aby uzyskać bardziej szczegółowe wyjaśnienia dotyczące Cloud Firestore kosztów.
Zestawienie operacji według zadania użytkownika znajdziesz w sekcji Zestawienie: rozliczane wykorzystanie według zadania użytkownika.
Mała
(50 tys. instalacji)
50 000 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. 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 = 6,30 USD | |||||
| 100 tys. zapisów dziennie, | = | 20 tys. bezpłatnych operacji zapisu + (80 tys. operacji zapisu po 0,18 USD za 100 tys.) | = | 0,8 * 0,18 USD | |
| 0,14 USD dziennie * 30 = 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 dziennie * 30 = 0,60 USD | |||||
| Koszty miejsca na dane i sieci | |||||||
|---|---|---|---|---|---|---|---|
| Łączny koszt miesięczny = 1,04 USD/miesiąc | |||||||
| 20 KB / liczba aktywnych użytkowników dziennie ruchu wychodzącego dziennie * 5 tys. aktywnych użytkowników dziennie | = | 100 MB dziennego ruchu wychodzącego * 30 | = | 3 GB ruchu wychodzącego z sieci miesięcznie | |||
| 3 GB bezpłatnego ruchu wychodzącego = bezpłatnie1 | |||||||
| 15 KB miejsca na wiadomości dziennie na aktywnych użytkowników dziennie + 3 KB miejsca na instalację2 | = | 45 KB miejsca na dane / liczba aktywnych użytkowników dziennie * 5 tys. aktywnych użytkowników dziennie | = | 225 MB miejsca na dane dziennie / liczba aktywnych użytkowników dziennie * 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 aktywnych użytkowników dziennie stanowi 10% łącznej liczby instalacji aplikacji, więc ta liczba odpowiada łącznej liczbie użytkowników, którzy zainstalowali Twoją aplikację.
Średnia
(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 USD/miesiąc | |||||
| 8 mln odczytów dziennie, | = | 50 tys.bezpłatnych odczytów + (7,95 mln odczytów po 0,06 USD za 100 tys.) | = | 79,5 * 0,06 USD | |
| 4,77 USD dziennie * 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,8 * 0,18 USD | |
| 3,56 USD / dzień * 30 = 106,80 USD | |||||
| 2 mln usunięć dziennie | = | 20 tys.bezpłatnych usunięć + (1,98 mln usunięć po 0,02 USD za 100 tys.) | = | 19,8 * 0,02 USD | |
| 0,40 USD dziennie * 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 ruchu wychodzącego * 100 tys. aktywnych użytkowników dziennie | = | 2 GB dziennego ruchu wychodzącego * 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ąc | |||||||
| 15 KB miejsca na wiadomości dziennie / liczba aktywnych użytkowników 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 / liczba aktywnych użytkowników dziennie * 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 odpowiada łącznej liczbie użytkowników, którzy zainstalowali Twoją aplikację.
Duża
(10 mln instalacji)
10 000 000 instalacji aplikacji (1 000 000 aktywnych użytkowników dziennie): 2951,52 USD
| Koszty odczytu/zapisu | |||||
|---|---|---|---|---|---|
| Łączny koszt miesięczny = 2637,90 USD/miesiąc | |||||
| 80 mln odczytów dziennie | = | 50 tys.bezpłatnych odczytów + (79,95 mln odczytów 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 operacji zapisu + (19,98 mln operacji zapisu po 0,18 USD za 100 tys.) | = | 199,8 * 0,18 USD | |
| 35,96 USD / dzień * 30 = 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 dziennie * 30 = 120,00 USD | |||||
| Koszty miejsca na dane i sieci | |||||||
|---|---|---|---|---|---|---|---|
| Łączny koszt miesięczny = 313,62 USD/miesiąc | |||||||
| 20 KB / liczba aktywnych użytkowników dziennie 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 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 / 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 / liczba aktywnych użytkowników dziennie * 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ąc | |||||||
1 Zakładamy, że liczba aktywnych użytkowników dziennie stanowi 10% łącznej liczby instalacji aplikacji, więc ta liczba odpowiada łącznej liczbie użytkowników, którzy zainstalowali Twoją aplikację.
Warto rozważyć model rozliczeniowy Cloud Firestore, ponieważ płacisz tylko za to, z czego korzystasz. W związku z tym rachunek może rosnąć i maleć wraz z liczbą aktywnych użytkowników dziennie.
Zestawienie: rozliczane wykorzystanie według zadania użytkownika
W przypadku naszej przykładowej aplikacji do obsługi czatu struktura danych wygląda tak:
users/{userId}– rekordy użytkownikówgroups/{groupId}– czaty między 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 (podczas 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 |
*To 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 przechowywania danych.
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 zadania:
- Wyświetlanie listy czatów: użytkownicy otwierają ekran główny aplikacji i widzą listę czatów (grupowych i bezpośrednich) uporządkowanych według ostatnio opublikowanej wiadomości.
- Odczytywanie wiadomości na czacie: użytkownicy wybierają czaty na ekranie głównym i odczytują ostatnie wiadomości z czatów.
- Wysyłanie wiadomości na czacie: użytkownicy wysyłają wiadomości na czatach (grupowych lub bezpośrednich).
Szacowana łączna liczba operacji w Cloud Firestore dla przykładowej aplikacji w przypadku 3 typowych zadań użytkownika:
- 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 na użytkownika dziennie
- Miejsce na dane: (20 * 0,75 KB) = 15 KB na użytkownika dziennie
Łączne wykorzystanie według działania użytkownika
Wybierz każde zadanie użytkownika, aby zobaczyć pełny opis i zestawienie kosztów operacji, miejsca na dane i sieci w aplikacji.
Wyświetlanie listy czatów
Na ekranie głównym aplikacji wczytuje się 25 ostatnich czatów, co powoduje naliczenie opłat za odczyt 25 dokumentów. Załóżmy, że aktywny użytkownik otwiera aplikację 5 razy dziennie, co daje łącznie 125 odczytów na użytkownika dziennie. 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, 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ę, jest średnio 10 zaktualizowanych czatów. To zapytanie wymaga 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. Przy pierwszym wczytaniu wczytywanych jest 50 ostatnich 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 na użytkownika dziennie. 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, ż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, 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 zapis w podkolekcji messages czatu i jeden zapis 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 innych ścieżkach, 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 codziennie sprawdzać 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 jest naliczana za 1 odczytany dokument dla każdej grupy maksymalnie 1000 wpisów indeksu pasujących do zapytania. Uruchomienie tej codziennej agregacji powoduje naliczenie następujących opłat miesięcznych:
Mała
(50 tys. instalacji)
50 000 instalacji aplikacji (5000 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 policzonych dokumentów / 1000 dopasowań indeksu 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
Średnia
(1 mln instalacji)
W przypadku 1 000 000 instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 0,018 USD miesięcznie.
100 000 aktywnych użytkowników * 10 nowych wiadomości na użytkownika = 1 000 000 nowych dokumentów wiadomości dziennie
1 000 000 policzonych dokumentów / 1000 dopasowań indeksu 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)
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 policzonych dokumentów / 1000 dopasowań indeksu 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
Dostępne korzyści: bezpłatne usługi dla aplikacji
Chociaż operacje, miejsce na dane i przepustowość sieci Cloud Firestore są uznawane za wykorzystanie podlegające opłacie, 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 interfejsu API, aby połączyć klienty mobilne z bazą danych.
- Równoważenie obciążenia: Cloud Firestore skaluje się automatycznie, aby obsłużyć 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, zapewniając czas działania na poziomie ponad 99% w miesiącu.
- Uwierzytelnianie: uwierzytelniaj nieograniczoną liczbę 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: możesz bezpłatnie integrować inne usługi Firebase, takie jak Testy A/B, Analytics, Crashlytics i Monitorowanie wydajności. Dowiedz się więcej o innych usługach Firebase i cenach Firebase.