Rozliczanie usługi Cloud Firestore

W tym dokumencie znajdziesz szczegółowe informacje o cenach Cloud Firestore.

Jeśli płacisz w walucie innej niż USD, obowiązują ceny podane w Twojej walucie na stronie kodów SKU dla usługi Cloud Platform.

Informacje o cenach

Gdy korzystasz z Cloud Firestore, opłaty są naliczane za:

  • liczbę odczytanych, zapisanych i usuniętych dokumentów ;
  • liczbę wpisów indeksu odczytanych w celu wykonania zapytania ; więcej informacji o odczytach indeksu.
  • ilość miejsca na dane używanego przez bazę danych, w tym miejsce zajmowane przez metadane i indeksy;
  • ilość wykorzystanej przepustowości sieci.

Wykorzystanie miejsca na dane i przepustowości jest obliczane w gibibajtach (GiB), gdzie 1 GiB = 230 bajtów. Wszystkie opłaty są naliczane codziennie.

W kolejnych sekcjach znajdziesz szczegółowe informacje o tym, jak naliczane są opłaty za korzystanie z Cloud Firestore.

Bezpłatny limit

Cloud Firestore oferuje bezpłatny limit, który umożliwia rozpoczęcie korzystania z usługi bezpłatnie. Jeśli potrzebujesz większego limitu, musisz włączyć płatności w projekcie Google Cloud.

Limity są stosowane codziennie i resetowane około północy czasu pacyficznego.

W tabeli poniżej podsumowano bezpłatne limity:

Poziom bezpłatny Limit
Przechowywane dane 1 GiB
Odczyty dokumentów 50 tys. dziennie
Zapisy dokumentów 20 tys. dziennie
Usunięcia dokumentu 20 tys. dziennie
Przesyłanie danych na zewnątrz 10 GiB miesięcznie

Te operacje i funkcje nie są objęte bezpłatnym limitem. Aby korzystać z tych funkcji, musisz włączyć płatności:

  • Usunięcia TTL
  • Dane PITR
  • Utwórz kopię zapasową danych
  • Operacje przywracania
  • Operacje klonowania

Więcej informacji o tym, jak naliczane są opłaty za te funkcje, znajdziesz w sekcji Ceny miejsca na dane.

Ceny według lokalizacji

Aby sprawdzić ceny odczytów, zapisów, usuwania i miejsca na dane w każdej Cloud Firestore lokalizacji, zapoznaj się z Google Cloud cennikiem.

Jeśli płacisz w walucie innej niż USD, obowiązują ceny podane w Twojej walucie na stronie kodów SKU dla usługi Cloud Platform.

Bezpłatny limit dotyczy tylko 1 bazy danych na projekt

Projekty mogą mieć tylko 1 bazę danych, która kwalifikuje się do bezpłatnego limitu.

Aby utworzyć dodatkowe bazy danych, musisz przejść na wyższy plan płatności w projekcie.

Pierwsza utworzona baza danych (niezależnie od jej identyfikatora) kwalifikuje się do bezpłatnego limitu. Jeśli usuniesz tę bazę danych, następna utworzona baza danych stanie się nową bazą danych kwalifikującą się do bezpłatnego limitu.

Tworzenie i usuwanie baz danych nie wiąże się z dodatkowymi kosztami. Za wszystkie kolejne bazy danych będą naliczane opłaty za wykorzystanie.

Odczyty, zapisy i usuwanie

Opłaty są naliczane za dokumenty i wpisy indeksu odczytane w celu wykonania zapytania. Opłaty są naliczane za każdy zapis i usunięcie dokumentu.

Opłaty za zapisy i usuwanie są proste. W przypadku zapisów każda operacja set lub update jest liczona jako pojedynczy zapis.

Opłaty za operacje odczytu mają pewne niuanse, o których warto pamiętać. W kolejnych sekcjach wyjaśniamy te niuanse szczegółowo.

Odczyty wpisów indeksu

Opłata za 1 operację odczytu jest naliczana za każdą grupę maksymalnie 1000 wpisów indeksu odczytanych przez zapytanie, z wyjątkiem tych przypadków:

  • W przypadku zapytań dotyczących wyszukiwania wektorowego najbliższych sąsiadów opłata za jedną operację odczytu jest naliczana za każdą grupę maksymalnie 100 wpisów indeksu wektorowego kNN odczytanych przez zapytanie.

    Jeśli na przykład to zapytanie dotyczące wyszukiwania wektorowego z parametrem limit: 5 zwróci 5 dokumentów i odczyta 1550 wpisów indeksu wektorowego kNN, opłata zostanie naliczona za 5 operacji odczytu dokumentów i 16 operacji odczytu wpisów indeksu:

    // Requires single-field vector index
    const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), {
      limit: 5,
      distanceMeasure: 'EUCLIDEAN'
    });
    
  • Zapytania, które mają maksymalnie 1 pole zakresu, nie są obciążane opłatami za odczytane wpisy indeksu.

    Na przykład to zapytanie zawiera 1 pole równości (age) i 1 pole zakresu (start_date) i nie jest obciążane opłatami za odczytane wpisy indeksu:

    db.collection("employees").whereEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    To zapytanie zawiera 2 pola zakresu (age i start_date) i jest obciążane opłatami za odczytane wpisy indeksu:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    Pole, które występuje w klauzuli order by, jest uważane za pole zakresu, jeśli w zapytaniu występuje co najmniej 1 inne pole zakresu. Dlatego to zapytanie zawiera 2 pola zakresu (age i start_date) i jest obciążane opłatami za odczytane wpisy indeksu:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .orderBy("start_date")
    

    Pole __name__ jest zawsze uważane za pole zakresu, nawet jeśli jest używane tylko w filtrze równości. Dlatego to zapytanie zawiera 2 pola zakresu (age i __name__) i jest obciążane opłatami za odczytane wpisy indeksu:

    db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob"))
                              .orderBy("age")
    

Zapytania zbiorcze

W przypadku zapytań agregujących takich jak count(), sum() i avg(), opłaty są naliczane za odczytane przez zapytanie wpisy indeksu zgodnie z opisem powyżej. W przypadku zapytań zbiorczych, które odczytują 0 wpisów indeksu, obowiązuje minimalna opłata za 1 odczytany dokument.

Na przykład operacje count(), które odczytują od 0 do 1000 wpisów indeksu, są rozliczane jako 1 odczytany dokument. W przypadku operacji count(), która odczytuje 1500 wpisów indeksu, opłata zostanie naliczona za 2 odczytane dokumenty.

Aby dowiedzieć się więcej o używanych indeksach i odczytanych wpisach indeksu, użyj funkcji Wyjaśnij zapytanie.

Nasłuchiwanie wyników zapytania

Cloud Firestore umożliwia nasłuchiwanie wyników zapytania i otrzymywanie aktualizacji w czasie rzeczywistym, gdy wyniki zapytania się zmieniają.

Gdy nasłuchujesz wyników zapytania, opłata za odczyt jest naliczana za każdym razem, gdy do zbioru wyników zostanie dodany lub zaktualizowany dokument. Opłata za odczyt jest też naliczana, gdy dokument zostanie usunięty ze zbioru wyników, ponieważ uległ zmianie. (Natomiast gdy dokument zostanie usunięty, opłata za odczyt nie zostanie naliczona).

Rozliczanie nasłuchiwaczy w pakietach SDK na urządzenia mobilne i do przeglądarek zależy też od tego, czy włączona jest trwałość offline:

  • Jeśli trwałość offline jest włączona, a detektor jest odłączony przez ponad 30 minut (np. gdy użytkownik przejdzie w tryb offline), opłata zostanie naliczona za odczytane dokumenty i wpisy indeksu tak, jakby zostało wysłane zupełnie nowe zapytanie.

  • Jeśli trwałość offline jest wyłączona, opłata zostanie naliczona za odczytane dokumenty i wpisy indeksu tak, jakby zostało wysłane zupełnie nowe zapytanie, za każdym razem, gdy nasłuchiwacz zostanie odłączony i ponownie połączony.

Zarządzanie dużymi zbiorami wyników

Cloud Firestore ma kilka funkcji, które pomagają zarządzać zapytaniami, które zwracają dużą liczbę wyników:

  • Kursory, które umożliwiają wznowienie długotrwałego zapytania.
  • Tokeny strony, które pomagają stronicować wyniki zapytania.
  • Limity, które określają, ile wyników ma zostać pobranych.
  • Przesunięcia, które umożliwiają pominięcie określonej liczby dokumentów.

Korzystanie z kursorów, tokenów strony i limitów nie wiąże się z dodatkowymi kosztami. Te funkcje mogą nawet pomóc Ci zaoszczędzić pieniądze, ponieważ odczytują tylko te dokumenty, których faktycznie potrzebujesz.

Gdy jednak wyślesz zapytanie zawierające przesunięcie, opłata za odczyt zostanie naliczona za każdy pominięty dokument. Jeśli na przykład zapytanie używa przesunięcia o wartości 10 i zwraca 1 dokument, opłata zostanie naliczona za 11 odczytów. Ze względu na ten dodatkowy koszt, gdy tylko jest to możliwe, zamiast przesunięć używaj kursorów.

Zapytania inne niż odczyty dokumentów

W przypadku zapytań innych niż odczyty dokumentów, np. prośby o listę identyfikatorów kolekcji, opłata zostanie naliczona za 1 odczytany dokument. Jeśli pobranie pełnego zbioru wyników wymaga więcej niż 1 żądania (np. jeśli używasz stronicowania), opłata zostanie naliczona raz za każde żądanie.

Minimalna opłata za zapytania

Za każde wykonane zapytanie obowiązuje minimalna opłata za 1 odczytany dokument, nawet jeśli zapytanie nie zwróci żadnych wyników.

Cloud Firestore Security Rules

Jeśli w bibliotekach klienta na urządzenia mobilne i do przeglądarek Cloud Firestore Security Rules używają funkcji exists(), get() lub getAfter() do odczytania co najmniej 1 dokumentu z bazy danych, opłata zostanie naliczona za dodatkowe odczyty w ten sposób:

  • Opłaty są naliczane za odczyty, które są niezbędne do oceny Twoich Cloud Firestore Security Rules.

    Jeśli na przykład reguły odwołują się do 3 dokumentów, ale Cloud Firestore musi odczytać tylko 2 z nich, aby ocenić reguły, opłata zostanie naliczona za 2 dodatkowe odczyty dokumentów zależnych.

    Opłata za 1 odczyt jest naliczana za każdy dokument zależny, nawet jeśli reguły odwołują się do niego więcej niż raz.

  • Opłata za ocenę reguły jest naliczana tylko raz na żądanie.

    Dzięki temu odczytanie wielu dokumentów może być tańsze niż odczytywanie dokumentów pojedynczo, ponieważ odczytanie wielu dokumentów wymaga mniejszej liczby żądań.

  • Gdy nasłuchujesz wyników zapytania, opłata za ocenę reguły jest naliczana we wszystkich tych przypadkach:

    • Gdy wysyłasz zapytanie.
    • Za każdym razem, gdy wyniki zapytania są aktualizowane.
    • Za każdym razem, gdy urządzenie użytkownika przechodzi w tryb offline, a następnie wraca do trybu online.
    • Za każdym razem, gdy aktualizujesz reguły.
    • Za każdym razem, gdy aktualizujesz dokumenty zależne w regułach.

Rozmiar miejsca na dane bazy danych

Opłaty są naliczane za ilość danych przechowywanych w Cloud Firestore, w tym za miejsce zajmowane przez metadane. Miejsce zajmowane przez metadane obejmuje metadane, indeksy automatyczne i indeksy złożone.

Każdy dokument przechowywany w Cloud Firestore wymaga tych metadanych:

  • Identyfikator dokumentu, w tym identyfikator kolekcji i nazwa dokumentu.
  • Nazwa i wartość każdego pola. Ponieważ Cloud Firestore jest bez schematu, nazwa każdego pola w dokumencie musi być przechowywana razem z wartością pola.
  • Wszystkie indeksy jedno- i wielopolowe, które odwołują się do dokumentu. Każdy wpis indeksu zawiera identyfikator kolekcji, dowolną liczbę wartości pól (w zależności od definicji indeksu) oraz nazwę dokumentu.

Koszty miejsca na dane są podawane w GiB/miesiąc i obliczane codziennie. Cloud Firestore codziennie mierzy rozmiar bazy danych. W ciągu miesiąca te punkty próbkowania są uśredniane w celu obliczenia rozmiaru miejsca na dane bazy danych. Ta średnia wartość jest mnożona przez cenę jednostkową miejsca na dane (GiB/miesiąc).

Dowiedz się, jak obliczane jest miejsce na dane w Cloud Firestore, w sekcji Obliczanie rozmiaru miejsca na dane.

Dane PITR

Jeśli włączysz PITR, opłata zostanie naliczona za miejsce na dane PITR. Większość klientów stwierdzi, że łączny koszt miejsca na dane PITR jest podobny do kosztu miejsca na dane bazy danych.

Koszty miejsca na dane PITR są podawane w GiB/miesiąc i obliczane codziennie. Cloud Firestore codziennie mierzy rozmiar bazy danych. W ciągu miesiąca te punkty próbkowania są uśredniane w celu obliczenia rozmiaru miejsca na dane bazy danych. Ta średnia wartość jest mnożona przez cenę jednostkową PITR (GiB/miesiąc).

Jeśli na przykład średni rozmiar bazy danych w ciągu miesiąca wynosi 1 GiB, a PITR jest włączone przez cały miesiąc, to rozmiar danych PITR, za który zostanie naliczona opłata, również wynosi 1 GiB.

Minimalna opłata: nawet jeśli wyłączysz PITR w ciągu 1 dnia od włączenia, może zostać naliczona opłata za maksymalnie 1 dzień przechowywania danych PITR.

Kopie zapasowe danych i operacje przywracania

Jeśli włączysz tworzenie kopii zapasowych, opłata zostanie naliczona za miejsce na kopie zapasowe bazy danych. Rozmiar miejsca na kopię zapasową jest równy rozmiarowi miejsca na dane bazy danych w momencie utworzenia kopii zapasowej.

Koszty miejsca na kopie zapasowe są podawane w GiB/miesiąc. W ciągu miesiąca obliczana jest też średnia liczba dni, przez które każda kopia zapasowa jest przechowywana. Koszt każdej kopii zapasowej jest obliczany na podstawie rozmiaru miejsca na kopię zapasową pomnożonego przez proporcję miesiąca, w którym kopia zapasowa jest przechowywana, i przez cenę jednostkową. Na potrzeby rozliczeń granice dni są określane według strefy czasowej Ameryka/Los_Angeles.

Gdy wykonujesz operację przywracania, Cloud Firestore mierzy rozmiar kopii zapasowej na potrzeby operacji przywracania. Rozmiar kopii zapasowej jest mnożony przez cenę jednostkową operacji przywracania (GiB).

Wyjaśnij zapytanie

Korzystanie z funkcji Wyjaśnij zapytanie Firestore wiąże się z kosztami.

Gdy zapytanie jest wyjaśniane za pomocą opcji domyślnej, nie są wykonywane żadne operacje odczytu indeksu. Niezależnie od złożoności zapytania opłata zostanie naliczona za 1 operację odczytu.

Gdy zapytanie jest wyjaśniane za pomocą opcji analizy, wykonywane są operacje indeksowania i odczytu, więc opłata za zapytanie zostanie naliczona jak zwykle. Za aktywność wyjaśniania i analizowania nie są naliczane żadne dodatkowe opłaty – tylko zwykła opłata za wykonywane zapytanie.

Przepustowość sieci

Opłaty są naliczane za przepustowość sieci wykorzystywaną przez Twoje Cloud Firestore żądania, jak pokazano w kolejnych sekcjach. Koszt przepustowości sieci żądania Cloud Firestore zależy od rozmiaru odpowiedzi na żądanie, lokalizacji bazy danych Cloud Firestore i miejsca docelowego odpowiedzi.

Cloud Firestore oblicza rozmiar odpowiedzi na podstawie formatu serializowanego komunikatu. Miejsce zajmowane przez protokół, np. SSL, nie jest wliczane do wykorzystania przepustowości sieci. Żądania odrzucone przez Cloud Firestore Security Rules nie są wliczane do wykorzystania przepustowości sieci.

Aby dowiedzieć się, ile przepustowości sieci zostało wykorzystane, możesz wyeksportować dane rozliczeniowe do pliku w konsoli Google Cloud.

Ogólne ceny sieci

W przypadku żądań pochodzących z Google Cloud Platform (np. z aplikacji działającej w Google Compute Engine) opłaty są naliczane w ten sposób:

Typ ruchu Cena
Przychodzące przesyłanie danych Bezpłatnie
Przesyłanie danych w regionie Bezpłatnie
Przesyłanie danych między regionami w tym samym regionie Bezpłatnie
Przesyłanie danych między regionami w Stanach Zjednoczonych (za GiB) 0,01 USD (pierwsze 10 GiB miesięcznie jest bezpłatne)
Przesyłanie danych między regionami, z wyłączeniem ruchu między regionami w Stanach Zjednoczonych Stawki za przesyłanie danych wychodzących z Google Cloud Platform do internetu

Jeśli płacisz w walucie innej niż USD, obowiązują ceny podane w Twojej walucie na stronie kodów SKU dla usługi Cloud Platform.

Cloud Firestore podlega też dodatkowym opłatom za przesyłanie danych wychodzących do internetu w tych przypadkach:

  • Google Cloud żądania między regionami, z wyłączeniem ruchu między regionami w Stanach Zjednoczonych
  • Żądania spoza Google Cloud (np. z urządzenia mobilnego użytkownika).

Zobacz Google Cloud stawki za przesyłanie danych wychodzących do internetu.

Przykład cen

Aby zobaczyć, jak naliczane są opłaty za Cloud Firestore w przykładowej aplikacji , zapoznaj się z przykładem rozliczeń Cloud Firestore.

Zarządzanie wydatkami

Aby uniknąć nieoczekiwanych opłat na rachunku, ustaw miesięczne budżety i alerty w konsoli rozliczeniowej Google Cloud's.

Aby monitorować wykorzystanie Cloud Firestore, otwórz kartę Cloud Firestore Wykorzystanie w konsoli Firebase. Użyj panelu, aby ocenić wykorzystanie w różnych okresach.