Aby oszacować wykorzystanie i koszty Cloud Firestore, skorzystaj z tego przykładu podstawowej aplikacji do czatu. Nie jest to dokładna prognoza, ale może pomóc w lepszym zrozumieniu sposobu naliczania opłat za korzystanie z usługi Cloud Firestore.
Omówienie: koszty według poziomu wykorzystania
Aby zilustrować typowe koszty, weź pod uwagę przykładową aplikację do czatu, w której użytkownicy mogą inicjować czaty z co najmniej 2 uczestnikami. Użytkownicy widzą swoje aktywne czaty na liście, a także mogą czytać i wysyłać wiadomości. W tym przykładzie używamy cen dla wielu regionów w Ameryce Północnej (szczególnie nam5
).
Założenia
Rozważ te założenia dotyczące użytkowania i przechowywania danych:
- Liczba aktywnych użytkowników dziennie to 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. Zazwyczaj stanowią oni niewielką część łącznej liczby instalacji aplikacji. W poniższych obliczeniach szacowaliśmy liczbę aktywnych użytkowników dziennie jako 10% łącznej liczby instalacji aplikacji.
- Dokumenty są stosunkowo małe. Szczegółowe informacje o rozmiarze dokumentu według typu znajdziesz w tabeli poniżej.
- Dane są przechowywane tylko przez 3 miesiące. Wiadomości w tym przykładzie aplikacji do czatu są przechowywane tylko przez 3 miesiące. Aby uwzględnić operacje usuwania, poniższe obliczenia pokazują dzienne usuwanie każdego dziennego zapisu.
- Te szacowane koszty obejmują 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ście dla najczęściej wykonywanych przez użytkowników zadań 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. Podczas obliczeń możesz się kierować tym przykładem, ale bardziej szczegółowe informacje o kosztach Cloud Firestore znajdziesz na stronie z cenami.
Szczegółowe informacje o operacjach według czynności użytkownika znajdziesz w sekcji Podział: obciążone użycie według czynności użytkownika.
Mała
(50 tys. instalacji)
W przypadku 50 tys. 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. wyświetleń dziennie | = | 50 tys. bezpłatnych wyświetleń + (350 tys. wyświetleń po 0,06 USD/100 tys.) | = | 3,5 * 0,06 USD | |
0,21 USD / dzień * 30 = 6,30 USD | |||||
100 tys. zapisów dziennie | = | 20 tys. bezpłatnych zapisów + (80 tys. zapisów po 0,18 USD/100 tys.) | = | 0,8 * 0,18 | |
0,14 USD / dzień * 30 = 4,20 USD | |||||
100 tysięcy usuwanych plików dziennie | = | 20 tys. bezpłatnych usunięcia + (80 tys. usunięcia po 0,02 zł/100 tys.) | = | 0,8 * 0,02 USD | |
0,02 zł/dzień * 30 = 0,60 zł |
Koszty miejsca na dane i sieci | |||||||
---|---|---|---|---|---|---|---|
Łączny koszt miesięczny = 1,04 USD/miesiąc | |||||||
20 KB / DAU dziennie * 5000 DAU | = | 100 MB danych wychodzących dziennie * 30 | = | Miesięczny ruch wychodzący z sieci: 3 GB | |||
3 GB bezpłatnego ruchu wychodzącego = bezpłatny1 | |||||||
15 KB miejsca na dzienne wiadomości / DAU + 3 KB miejsca / instalacja2 | = | 45 KB miejsca na dane / liczba aktywnych użytkowników dziennie * 5000 DAUs | = | 225 MB miejsca dziennie / 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ąc |
1 10 GB miesięcznego ruchu wychodzącego z sieci jest bezpłatne dla użytkowników Cloud Firestore.
2 Zgodnie z naszym założeniem, że DAU stanowią 10% łącznej liczby instalacji aplikacji, ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Średnie
(1 mln instalacji)
W przypadku 1 mln instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 292,02 USD/miesiąc
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Łączny koszt miesięczny = 261,90 USD/miesiąc | |||||
8 mln odczytów dziennie | = | 50 tys. bezpłatnych wyświetleń + (7,95 mln wyświetleń przy cenie 0,06 USD/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 przy cenie 0,18 USD/100 tys.) | = | 19,8 * 0,18 USD | |
3,56 zł / dzień * 30 = 106,80 zł | |||||
Łącznie 2 mln usunięć dziennie | = | 20 tys. bezpłatnych usunięcia + (1,98 mln usunięcia przy cenie 0,02 USD/100 tys.) | = | 19,8 * 0,02 USD | |
0,40 zł / dzień * 30 = 12 zł |
Koszty miejsca na dane i sieci | |||||||
---|---|---|---|---|---|---|---|
Łączny koszt miesięczny = 30,12 USD/miesiąc | |||||||
20 KB / DAU dziennie * 100 tys. DAU | = | 2 GB ruchu wychodzącego dziennie * 30 | = | 60 GB sieciowego ruchu wychodzącego miesięcznie | |||
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 dzienne wiadomości / DAU + 3 KB miejsca / instalacja1 | = | 45 KB miejsca na dane / DAU * 100 tys. DAU | = | 4,5 GB miejsca na dane dziennie / liczba aktywnych użytkowników dziennie * 30 | = | 135 GB miesięcznie na wykorzystanie miejsca | |
1 GB bezpłatnego miejsca na dane + (134 GB * 0,18 USD/GB = 24,12 USD miesięcznie) |
1 Zgodnie z naszym założeniem, że DAU stanowią 10% łącznej liczby instalacji aplikacji, ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Duży
(10 mln instalacji)
W przypadku 10 mln instalacji aplikacji (1 mln aktywnych użytkowników dziennie): 2951,52 USD
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Łączny koszt miesięczny = łącznie: 2637,90 USD/miesiąc | |||||
80 mln odczytów dziennie | = | 50 tys. bezpłatnych wyświetleń + (79,95 mln wyświetleń przy cenie 0,06 USD/100 tys.) | = | 799,5 * 0,06 USD | |
47,97 USD / dzień * 30 = 1439,10 USD | |||||
Łącznie 20 mln zapisów dziennie | = | 20 tys. bezpłatnych zapisów + (19,98 mln zapisów przy cenie 0,18 USD/100 tys.) | = | 199,8 * 0,18 USD | |
35,96 PLN / dzień * 30 = 1078,80 PLN | |||||
20 mln usunięcia dziennie | = | 20 tys. bezpłatnych usunięcia + (19,98 mln usunięcia przy cenie 0,02 USD/100 tys.) | = | 199,8 * 0,02 USD | |
4,00 USD / dzień * 30 = 120 USD |
Koszty miejsca na dane i sieci | |||||||
---|---|---|---|---|---|---|---|
Łączny koszt miesięczny = 313,62 USD/miesiąc | |||||||
20 KB / DAU dziennego ruchu wychodzącego * 1 mln DAU | = | 20 GB ruchu wychodzącego dziennie * 30 | = | 600 GB sieciowego ruchu wychodzącego miesięcznie | |||
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 na dane / 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 | = | Miesięczne wykorzystanie miejsca na dane (1350 GB) | |
(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 wartość odpowiada łącznej liczbie użytkowników, którzy zainstalowali Twoją aplikację.
Zaletą modelu rozliczeniowego Cloud Firestore, który warto wziąć pod uwagę, jest to, że płacisz tylko za to, z czego korzystasz. W związku z tym wysokość Twojego rachunku może się zwiększać i zmniejszać wraz z liczbą aktywnych użytkowników dziennie.
Zestawienie: Rozliczane wykorzystanie według zadania użytkownika
W przypadku przykładowej aplikacji do czatu struktura danych wygląda tak:
users/{userId}
– rekordy użytkownikówgroups/{groupId}
– czaty z co najmniej 2 użytkownikamimessages/{messageId}
– każda wiadomość na czacie.
Miejsce na dane
Aby obliczyć koszty przechowywania danych aplikacji, zastosuj te założenia dotyczące rozmiarów dokumentów:
Kolekcja | Rozmiar dokumentu (w tranzycie) | 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 jest wyłączone w przypadku treści wiadomości.
Aplikacja przechowuje tylko wiadomości sprzed maksymalnie 3 miesięcy, aby obniżyć koszty przechowywania.
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 czynności:
- Wyświetlanie listy czatów: użytkownicy otwierają ekran główny aplikacji i wyświetlają listę czatów (grupowych i bezpośrednich) uporządkowaną według najnowszej opublikowanej wiadomości.
- Odczytywanie wiadomości na czacie: użytkownicy wybierają czaty na ekranie głównym i czytają najnowsze wiadomości z czatu.
- Wysyłanie wiadomości na czacie: użytkownicy wysyłają wiadomości na czaty (grupowe lub bezpośrednie).
Łączna liczba operacji Cloud Firestore w przypadku przykładowej aplikacji w przypadku 3 typowych zadań użytkownika:
- Odczytania: (5 * 10) + (30) = 80 odczytań / użytkownik / 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/dzień
- Pamięć: (20 * 0,75 KB) = 15 KB / użytkownik / dzień
Łączne wykorzystanie według czynności użytkownika
Wybierz każdą czynność użytkownika, aby zobaczyć pełny opis i zestawienie operacji, kosztów przechowywania i kosztów sieci w aplikacji.
Wyświetlanie listy czatów
Ekran główny aplikacji wczytuje 25 najnowszych czatów, co powoduje obciążenie za 25 oczytań dokumentów. Załóżmy, że aktywny użytkownik otwiera aplikację 5 razy dziennie, co daje łącznie 125 czytań na użytkownika dziennie. Bardziej wydajne zapytania, takie jak w następującym przykładzie, mogą jednak zmniejszyć to obciążenie.
W przykładzie poniżej ograniczamy zapytanie do nowych czatów, używając sygnatury czasowej każdego pomyślnego 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ę, jest średnio 10 aktualizowanych czatów. To zapytanie powoduje tylko 10 odczytań dokumentu.
Czytanie wiadomości na czacie
Użytkownicy mogą klikać wątki czatu na ekranie głównym, aby wyświetlić najnowsze wiadomości i wczytać 50 ostatnich wiadomości przy wczytywaniu początkowym.
Załóżmy, że typowy użytkownik wykonuje tę czynność 5 razy dziennie (raz za każdym razem, gdy otwiera ekran główny), co daje łącznie 250 wyświetleń na użytkownika dziennie. 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ż zawęziłaś/zawęziło się do pobierania nowych wiadomości, oznacza to, że pobieranych wiadomości będzie tylko 30 na dzień.
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 do podzbioru messages
czatu i jeden do dokumentu nadrzędnego czatu w celu zaktualizowania sygnatury czasowej lastUpdated
i innych metadanych.
Pamiętaj, że koszt odczytu tych wiadomości został uwzględniony w innych ścieżkach, więc sumy poniżej uwzględniają tylko koszt zapisu.
Rozliczane za wykorzystanie zadań administracyjnych
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 wysyłanych przez użytkowników. Możesz to zrobić za pomocą agregacji count()
grupy kolekcji messages
.
W przypadku zapytań zbiorczych, takich jak count()
, naliczamy opłatę za 1 odczytany dokument dla każdej grupy maksymalnie 1000 wpisów indeksu pasujących do zapytania. Wykonywanie tej codziennej agregacji powoduje dodatkowe opłaty miesięczne:
Mały
(50 tys. instalacji)
Za 50 tys. instalacji aplikacji (5000 DAUs): 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 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 wyświetleń miesięcznie * 0,06 / 100 tys. wyświetleń = 0,0009 USD miesięcznie
Średnie
(1 mln instalacji)
W przypadku 1 mln instalacji aplikacji (100 000 aktywnych użytkowników dziennie): 0,018 USD/miesiąc
100 tys. użytkowników aktywnych * 10 nowych wiadomości na użytkownika = 1 mln nowych dokumentów wiadomości dziennie
1 000 000 dokumentów / 1000 dopasowań indeksu na opłatę za odczyt = 1000 odczytów
1000 odczytów dziennie * 30 dni = 30 tys. odczytów miesięcznie
30 000 odczytów miesięcznie * 0,06/100 000 ceny odczytu = 0,018 USD za miesiąc
Duży
(10 mln instalacji)
W przypadku 10 mln instalacji aplikacji (1 mln aktywnych użytkowników dziennie): 0,18 zł.
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 zliczanych / 1000 pasujących indeksów na opłatę za odczyt = 10 000 odczytów
10 tys. odczytów dziennie * 30 dni = 300 tys. odczytów miesięcznie
300 000 wyświetleń miesięcznie * 0,06 / 100 000 wyświetleń = 0,18 zł miesięcznie
Korzyści: bezpłatne usługi dla Twojej aplikacji
Chociaż operacje, miejsce na dane i przepustowość sieci Cloud Firestore są uważane za płatne wykorzystanie, otrzymujesz też wiele innych korzyści bez dodatkowych kosztów. Przy porównywaniu Cloud Firestore z innymi opcjami baz danych rozważ te bezpłatne usługi:
- Bezpośredni dostęp klienta: do usługi Cloud Firestore uzyskujesz dostęp bezpośrednio z kodu klienta za pomocą naszych natywnych pakietów SDK. Oznacza to, że nie musisz tworzyć ani uruchamiać serwera interfejsu API, aby połączyć klientów mobilnych z bazą danych.
- Równoważenie obciążenia: usługa Cloud Firestore skaluje się automatycznie, aby obsługiwać 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, co zapewnia czas działania usługi przez ponad 99% miesięcznie.
- Uwierzytelnianie: uwierzytelnianie nieograniczonej liczby 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: bezpłatnie integruj 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.