Skorzystaj z tego rzeczywistego przykładu podstawowej aplikacji do czatowania, aby ocenić wykorzystanie i koszty Cloud Firestore. Nie jest to dokładny szacunek, ale może pomóc Ci lepiej zrozumieć, w jaki sposób rozliczane jest korzystanie z Cloud Firestore.
Przegląd: Koszty według poziomu wykorzystania
Aby zilustrować typowe koszty, rozważ przykładową aplikację do czatowania, w której użytkownicy mogą inicjować czaty z dwoma lub większą liczbą uczestników. Użytkownicy mogą przeglądać swoje aktywne czaty na liście, czytać wiadomości i wysyłać wiadomości. W tym przykładzie używamy cen dla wielu regionów Ameryki Północnej (w szczególności nam5
).
Założenia
Rozważ następujące założenia dotyczące użytkowania i przechowywania danych:
- Dzienna liczba aktywnych użytkowników (DAU) to 10% wszystkich instalacji aplikacji. Możesz oszacować swoje dzienne koszty, korzystając z szacunkowej liczby dziennych aktywnych użytkowników (DAU). Są to użytkownicy, którzy aktywnie otwierają Twoją aplikację i korzystają z niej w danym dniu, co zazwyczaj stanowi niewielki podzbiór całkowitej liczby instalacji aplikacji. W poniższych obliczeniach oszacowaliśmy liczbę DAU na 10% całkowitej liczby instalacji aplikacji.
- Rozmiary dokumentów są stosunkowo małe. Poniższa tabela zawiera zestawienie rozmiaru dokumentu według typu.
- Dane są przechowywane tylko przez trzy miesiące. Wiadomości w przykładowej aplikacji do czatu są przechowywane tylko przez okres trzech miesięcy. Aby uwzględnić operacje usuwania, poniższe obliczenia pokazują 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 wyjścia w przypadku najczęstszych zadań użytkowników opisanych w tym przewodniku. Jednak może być konieczne wzięcie pod uwagę dodatkowych kosztów, w zależności od struktury aplikacji i potrzeb w zakresie danych. Skorzystaj z tego przykładu, aby poprowadzić swoje obliczenia, ale zapoznaj się ze stroną z cenami , aby uzyskać dokładniejsze wyjaśnienia kosztów Cloud Firestore.
Aby zapoznać się z podziałem operacji według zadań użytkownika, zobacz sekcję Podział: Rozliczane użycie według zadań użytkownika .
Mały
(50 tys. instalacji)
Za 50 000 instalacji aplikacji (5000 aktywnych użytkowników dziennie): 12,14 USD/miesiąc
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Całkowity koszt miesięczny = 11,10 USD/miesiąc | |||||
Łącznie 400 tys. odczytów dziennie | = | 50 tys. odczytów bezpłatnie + (350 tys. odczytów przy cenie 0,06 USD/100 tys.) | = | 3,5 * 0,06 USD | |
0,21 USD / dzień * 30 = 6,30 USD | |||||
Łącznie 100 tys. zapisów dziennie | = | 20 tys. zapisów bez kosztów + (80 tys. zapisów po 0,18 USD/100 tys.) | = | 0,8 * 0,18 USD | |
0,14 USD / dzień * 30 = 4,20 USD | |||||
Łącznie 100 tys. usunięć dziennie | = | 20 tys. usunięć bezpłatnych + (80 tys. usunięć po cenie 0,02/100 tys. USD) | = | 0,8 * 0,02 USD | |
0,02 USD / dzień * 30 = 0,60 USD |
Koszty przechowywania/sieci | |||||||
---|---|---|---|---|---|---|---|
Całkowity koszt miesięczny = 1,04 USD/miesiąc | |||||||
20 KB / DAU dziennego ruchu wychodzącego * 5 tys. DAU | = | 100 MB dziennego ruchu wyjściowego * 30 | = | 3 GB miesięcznego ruchu wychodzącego z sieci | |||
3 GB bezpłatne wyjście = bezpłatne 1 | |||||||
15 KB dziennego przechowywania wiadomości / DAU + 3 KB przechowywania / instalacja 2 | = | 45 KB pamięci / DAU * 5 tys. DAU | = | 225 MB dziennej pamięci / DAU * 30 | = | 6,75 GB miesięcznego wykorzystania pamięci | |
1 GB bezpłatnej pamięci masowej + (5,75 * 0,18 USD) = 1,04 USD / miesiąc |
1 10 GB miesięcznego ruchu wychodzącego z sieci jest bezpłatne w przypadku Cloud Firestore.
2 Ponieważ zakładamy, że DAU stanowią 10% wszystkich instalacji aplikacji, liczba ta uwzględnia całkowitą liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Średni
(1 mln instalacji)
Za 1 000 000 instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 292,02 USD/miesiąc
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Całkowity koszt miesięczny = 261,90 USD/miesiąc | |||||
Łącznie 8 mln odczytów dziennie | = | 50 tys. odczytów bezpłatnie + (7,95 mln odczytów przy cenie 0,06 USD/100 tys.) | = | 79,5 * 0,06 USD | |
4,77 USD / dzień * 30 = 143,10 USD | |||||
Łącznie 2 miliony codziennych zapisów | = | 20 tys. zapisów bez kosztów + (1,98 mln zapisów po 0,18 tys. USD/100 tys.) | = | 19,8 * 0,18 USD | |
3,56 USD / dzień * 30 = 106,80 USD | |||||
Łącznie 2 mln usunięć dziennie | = | 20 tys. usunięć bezpłatnych + (1,98 mln usunięć przy cenie 0,02/100 tys. USD) | = | 19,8 * 0,02 USD | |
0,40 USD / dzień * 30 = 12,00 USD |
Koszty przechowywania/sieci | |||||||
---|---|---|---|---|---|---|---|
Całkowity koszt miesięczny = 30,12 USD/miesiąc | |||||||
20 KB / DAU dziennego ruchu wychodzącego * 100 tys. DAU | = | 2 GB dziennego ruchu wyjściowego * 30 | = | 60 GB miesięcznego ruchu wychodzącego z sieci | |||
10 GB bezpłatnego ruchu wyjściowego + (50 GB ruchu wyjściowego * 0,12 USD/GB) = 6,00 USD miesięcznie | |||||||
15 KB dziennego przechowywania wiadomości / DAU + 3 KB przechowywania / instalacja 1 | = | 45 KB pamięci / DAU * 100 tys. DAU | = | 4,5 GB dziennej przestrzeni dyskowej / DAU * 30 | = | 135 GB miesięcznego wykorzystania pamięci | |
1 GB bezpłatnej przestrzeni dyskowej + (134 GB * 0,18 USD/GB) = 24,12 USD miesięcznie |
1 Ponieważ zakładamy, że DAU stanowią 10% wszystkich instalacji aplikacji, liczba ta uwzględnia całkowitą liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Duży
(10 mln instalacji)
Za 10 000 000 instalacji aplikacji (1 000 000 aktywnych użytkowników dziennie): 2951,52 USD
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Całkowity koszt miesięczny = Razem: 2637,90 USD/miesiąc | |||||
Łącznie 80 milionów dziennych odczytów | = | 50 tys. odczytów bezpłatnie + (79,95 mln odczytów przy cenie 0,06 USD/100 tys.) | = | 799,5 * 0,06 USD | |
47,97 USD / dzień * 30 = 1439,10 USD | |||||
Łącznie 20 milionów zapisów dziennie | = | 20 tys. zapisów bez kosztów + (19,98 mln zapisów po cenie 0,18/100 tys. USD) | = | 199,8 * 0,18 USD | |
35,96 USD / dzień * 30 = 1078,80 USD | |||||
Łącznie 20 milionów usunięć dziennie | = | 20 tys. usunięć bezpłatnych + (19,98 mln usunięć przy cenie 0,02/100 tys. USD) | = | 199,8 * 0,02 USD | |
4,00 USD / dzień * 30 = 120,00 USD |
Koszty przechowywania/sieci | |||||||
---|---|---|---|---|---|---|---|
Całkowity koszt miesięczny = 313,62 USD/miesiąc | |||||||
20 KB / DAU dziennego ruchu wychodzącego * 1 mln DAU | = | 20 GB dziennego wyjścia * 30 | = | 600 GB miesięcznego ruchu wychodzącego z sieci | |||
10 GB bezpłatnego ruchu wyjściowego + (590 GB ruchu wyjściowego * 0,12 USD/GB) = 70,80 USD miesięcznie | |||||||
15 KB dziennego przechowywania wiadomości / DAU + 3 KB przechowywania / instalacja 1 | = | 45 KB pamięci / DAU * 1 mln DAU | = | 45 GB dziennej przestrzeni dyskowej / DAU * 30 | = | 1350 GB miesięcznego wykorzystania pamięci | |
(1 GB bezpłatnej przestrzeni dyskowej) + (1349 GB * 0,18 USD/GB) = 242,82 USD / miesiąc |
1 Ponieważ zakładamy, że DAU stanowią 10% wszystkich instalacji aplikacji, liczba ta uwzględnia całkowitą liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Zaletą modelu rozliczeniowego Cloud Firestore, którą warto rozważyć, jest to, że płacisz tylko za to, z czego korzystasz. W rezultacie Twój rachunek może rosnąć i zmniejszać się wraz ze wzrostem liczby DAU.
Podział: użycie płatne według zadania użytkownika
W naszej przykładowej aplikacji do czatowania struktura danych jest następująca:
-
users/{userId}
— Rekordy użytkowników -
groups/{groupId}
— Czaty pomiędzy 2 lub więcej użytkownikami-
messages/{messageId}
— Każda wiadomość na czacie.
-
Przechowywanie danych
Aby obliczyć koszty przechowywania danych aplikacji, zastosuj następujące założenia dotyczące rozmiarów dokumentów:
Kolekcja | Rozmiar dokumentu (w transporcie) | 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 uwzględnia indeksy pól wiadomości, ale zakłada, że indeksowanie treści wiadomości jest wyłączone.
Aplikacja przechowuje również tylko wiadomości starsze niż trzy miesiące, aby obniżyć koszty przechowywania.
Więcej informacji na temat obliczania kosztów przechowywania można znaleźć w sekcji Omówienie obliczeń rozmiaru magazynu .
Operacje
Użytkownicy zazwyczaj wykonują w aplikacji następujące typowe zadania:
- Zobacz listę czatów: Użytkownicy otwierają ekran główny aplikacji i widzą listę czatów (grupowych i bezpośrednich) uporządkowanych według ostatniej opublikowanej wiadomości.
- Czytaj wiadomości na czacie: użytkownicy wybierają czaty na ekranie głównym i czytają najnowsze wiadomości z czatów.
- Wyślij wiadomość na czat: Użytkownicy wysyłają wiadomości na czaty (grupowe lub bezpośrednie).
Całkowite szacowane operacje przykładowej aplikacji w Cloud Firestore dla trzech typowych zadań użytkownika są następujące:
- Odczyty: (5 * 10) + (30) = 80 odczytów / użytkownika / dzień
- Zapisy: (10 * 2) = 20 zapisów / użytkownik / dzień
- Wyjście sieciowe : (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB / użytkownika / dzień
- Pamięć : (20 * 0,75 KB) = 15 KB / użytkownik / dzień
Całkowite wykorzystanie według zadania użytkownika
Wybierz każde zadanie użytkownika, aby wyświetlić pełny opis i zestawienie kosztów operacji, przechowywania i sieci w aplikacji.
Zobacz listę czatów
Na ekranie głównym aplikacji ładuje się 25 ostatnich czatów, pobierając opłaty 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 te w poniższym przykładzie, mogą zmniejszyć to obciążenie.
W poniższym przykładzie ograniczamy zapytanie do nowych czatów, korzystając ze znacznika czasu każdego pomyślnego pobrania przechowywanego 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 aktualizowanych średnio 10 czatów. To zapytanie powoduje tylko 10 odczytów dokumentów.
Czytaj wiadomości na czacie
Użytkownicy klikają wątki czatu na ekranie głównym, aby zobaczyć najnowsze wiadomości, ładując 50 najnowszych wiadomości w początkowym ładowaniu.
Załóżmy, że typowy użytkownik wykonuje tę czynność 5 razy dziennie (raz przy każdym otwarciu ekranu głównego), co daje w sumie 250 odczytów na użytkownika każdego dnia. Możemy również ograniczyć nasze 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 na wszystkich czatach. Ponieważ ograniczyłeś zapytanie do pobrania nowych wiadomości, oznacza to zaledwie 30 pobranych wiadomości dziennie.
Wyślij wiadomość 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 dwa zapisy dokumentów: jeden zapis w podkolekcji messages
czatu i jeden zapis w dokumencie nadrzędnym czatu w celu zaktualizowania znacznika czasu lastUpdated
i innych metadanych.
Należy pamiętać, że koszt przeczytania tych wiadomości został uwzględniony w pozostałych podróżach, zatem poniższe sumy uwzględniają jedynie koszt zapisu.
Rozliczane wykorzystanie zadań administracyjnych
Jako właściciel lub administrator aplikacji prawdopodobnie chcesz generować raporty na podstawie danych aplikacji. Możesz na przykład chcieć codziennie rejestrować liczbę wiadomości wysłanych przez użytkowników. Można to osiągnąć za pomocą agregacji count()
grupy gromadzenia messages
.
W przypadku zapytań agregujących, takich jak count()
, naliczana jest opłata za jeden odczytany dokument za każdą partię maksymalnie 1000 wpisów indeksu pasujących do zapytania. Uruchomienie tej dziennej agregacji powoduje dodanie następujących miesięcznych opłat:
Mały
(50 tys. instalacji)
Za 50 000 instalacji aplikacji (5000 DAU): 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 zliczonych dokumentów / 1000 dopasowań indeksowych 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/100 000 odczytów cena = 0,0009 USD miesięcznie
Średni
(1 mln instalacji)
Za 1 000 000 instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 0,018 USD/miesiąc
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 zliczonych 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/100 000 odczytów cena = 0,018 USD miesięcznie
Duży
(10 mln instalacji)
Za 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 zliczonych dokumentów / 1000 dopasowań indeksowych 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 * .06/100000 cena odczytu = 0,18 USD miesięcznie
Zawarte korzyści: Bezpłatne usługi dla Twojej aplikacji
Chociaż operacje Cloud Firestore, miejsce na dysku i przepustowość sieci są uważane za użytkowanie płatne, otrzymujesz także szereg innych korzyści bez dodatkowych kosztów. Porównując Cloud Firestore z innymi opcjami baz danych, rozważ następujące usługi, które są bezpłatne:
- Bezpośredni dostęp do klienta: Dostęp do Cloud Firestore można uzyskać bezpośrednio z kodu klienta za pomocą naszych natywnych pakietów SDK. Oznacza to, że nie musisz budować i uruchamiać serwera API, aby połączyć klientów mobilnych z bazą danych.
- Równoważenie obciążenia: ponieważ Cloud Firestore skaluje się automatycznie, aby obsługiwać ruch do Twojej bazy danych, nie musisz uruchamiać modułu równoważenia obciążenia.
- Czas pracy serwera: bazy danych Cloud Firestore działają na serwerach Google Cloud, oferując ponad 99% miesięcznego czasu pracy .
- Uwierzytelnianie: Uwierzytelniaj nieograniczoną liczbę użytkowników w prosty i bezpieczny sposób dzięki uwierzytelnianiu Firebase . Uwierzytelnianie Firebase 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 produkty Firebase: integruj inne produkty Firebase bez żadnych kosztów, w tym testy A/B, analitykę, Crashlytics, monitorowanie wydajności i zdalną konfigurację. Dowiedz się więcej o innych produktach Firebase i cenach Firebase .