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. W 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:
- Wyświetlanie listy czatów: użytkownicy otwierają ekran główny aplikacji i widzą listę czatów (grupowych i bezpośrednich) uporządkowaną według daty ostatniej 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).
Łą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 Firebase i cenach Firebase.