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 mogą wyświetlać 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 dla 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, obliczenia poniżej pokazują dzienne usuwanie dla 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ły
(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 | |||||
Łączna liczba odczytów dziennie: 400 tys. | = | 50 tys. bezpłatnych odczytów + (350 tys. odczytów po 0,06 tys. 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 zapisó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. bezpłatnych usunięć + (80 tys. usunięć po 0,02 USD/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 | = | 3 GB sieciowego ruchu wychodzącego miesięcznie | |||
3 GB bezpłatnego ruchu wychodzącego = bezpłatnie1 | |||||||
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ęcznie |
1 10 GB miesięcznego ruchu wychodzącego z sieci jest bezpłatne w przypadku usługi Cloud Firestore.
2 Ponieważ zakładamy, że liczba aktywnych użytkowników dziennie stanowi 10% łącznej liczby instalacji aplikacji, ta liczba uwzględnia łączną liczbę użytkowników, którzy zainstalowali Twoją aplikację.
Średnie
(1 mln instalacji)
Za 1 000 000 instalacji aplikacji (100 tys. 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 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ł | |||||
2 mln usuwanych plików 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 miejsca na dane miesięcznie | |
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)
Dla 10 000 000 instalacji aplikacji (1 000 000 aktywnych użytkowników dziennie): 2951,52 PLN
Koszty odczytu/zapisu | |||||
---|---|---|---|---|---|
Łączny koszt miesięczny = 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 | |||||
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 zł | |
35,96 zł / dzień * 30 = 1078,80 zł | |||||
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 zł / dzień * 30 = 120 zł |
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 dzienne wiadomości / DAU + 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 / DAU * 30 | = | 1350 GB miejsca na dane miesięcznie | |
(1 GB bezpłatnego miejsca na dane) + (1349 GB * 0,18 USD/GB) = 242,82 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ę.
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 Twój rachunek może się zwiększać lub 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żytkownikagroups/{groupId}
– czaty między 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 trakcie przesyłania) | Rozmiar dokumentu (na dysku)* |
---|---|---|
użytkownicy | 1 KB | 3KB |
grupy | 0,5 KB | 1,5 KB |
wiadomości | 0,25 KoB | 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:
- Odczyty: (5 * 10) + (30) = 80 odczytów na użytkownika/dzień
- Zapisy: (10 * 2) = 20 zapisów / użytkownik / dzień
- Wyjście z sieci: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB / użytkownik / 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 odczytów na użytkownika dziennie. Jednak bardziej efektywne zapytania, takie jak to 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 zapisanego 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 klikają wątki czatu na ekranie głównym, aby wyświetlić najnowsze wiadomości. Podczas pierwszego wczytania wyświetlane są 50 najnowszych wiadomości.
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. Od ostatniego pobierania możemy też ograniczyć zapytanie do nowych wiadomości:
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 podsumowania 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 tys.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 zliczanych / 1000 pasujących indeksów na opłatę za odczyt = 1000 odczytów
1000 odczytów dziennie * 30 dni = 30 tys. odczytów miesięcznie
30 000 wyświetleń miesięcznie * 0,06 zł/100 tys. wyświetleń = 0,018 zł miesięcznie
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. Porównując Cloud Firestore z innymi bazami danych, weź pod uwagę te bezpłatne usługi:
- Bezpośredni dostęp klienta: dostęp do usługi Cloud Firestore uzyskuje się 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 pracy serwera: bazy danych Cloud Firestore działają na serwerach Google Cloud, zapewniając ponad 99% dostępności miesięcznie.
- Uwierzytelnianie: w prosty i bezpieczny sposób uwierzytelnij nieograniczoną liczbę użytkowników 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.