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 Cloud Platform.

Informacje o cenach

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

  • Liczba dokumentów, które odczytujesz, zapisujesz i usuwasz.
  • Liczba 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 narzut na metadane i indeksy.
  • ilość wykorzystywanej 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 sekcjach poniżej 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 pozwala rozpocząć korzystanie z usługi bez opłat. 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.

Tabela poniżej zawiera podsumowanie bezpłatnych limitów:

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

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

  • Usunięcia TTL
  • Dane odzyskiwania do określonego momentu
  • Utwórz kopię zapasową danych
  • Operacje przywracania
  • Operacje klonowania

Więcej informacji o tym, jak te funkcje są rozliczane, znajdziesz w artykule Ceny miejsca na dane.

Ceny według lokalizacji

Aby wyświetlić ceny operacji odczytu, zapisu i usuwania oraz miejsca na dane w każdej lokalizacji Cloud Firestore, zapoznaj się z cennikiem Google Cloud.

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

Bezpłatny limit dotyczy tylko jednej bazy danych na projekt

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

Aby utworzyć dodatkowe bazy danych, musisz przejść na wyższy abonament rozliczeniowy projektu.

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 będzie kwalifikować się do bezpłatnego limitu.

Tworzenie i usuwanie baz danych nie wiąże się z dodatkowymi kosztami. Wszystkie kolejne bazy danych będą rozliczane na podstawie wykorzystania.

Odczyty, zapisy i usunięcia

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

Opłaty za zapisy i usunięcia są proste. W przypadku operacji zapisu 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 szczegółowo wyjaśniamy te niuanse.

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ń wyszukiwania wektorowego z użyciem algorytmu K najbliższych sąsiadów opłata jest naliczana za 1 operację odczytu dla każdej grupy maksymalnie 100 wpisów indeksu wektorowego KNN odczytanych przez zapytanie.

    Jeśli na przykład to zapytanie wyszukiwania wektorowego z limit: 5 zwraca 5 dokumentów i odczytuje 1550 wpisów indeksu wektorowego kNN, opłata zostanie naliczona za 5 operacji odczytu zwróconych 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 jedno pole zakresu, nie są obciążane opłatami za odczytane wpisy indeksu.

    Na przykład to zapytanie zawiera jedno pole równości (age) i jedno pole zakresu (start_date). Nie są naliczane opłaty za odczytane wpisy indeksu:

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

    Poniższe zapytanie zawiera 2 pola zakresu (age i start_date), a opłata jest naliczana za odczyty wpisów indeksu:

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

    Pole, które pojawia się w klauzuli order by, jest uważane za pole zakresu, gdy w zapytaniu występuje co najmniej 1 inne pole zakresu. Dlatego to zapytanie zawiera 2 pola zakresu (age i start_date), a opłata jest naliczana za odczyty wpisów indeksu:

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

    Pole __name__ jest zawsze traktowane jako pole zakresu, nawet jeśli jest używane tylko w filtrze równości. Dlatego poniższe zapytanie zawiera 2 pola zakresu (age i __name__), a opłata jest naliczana za odczyty wpisów indeksu:

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

Zapytania agregujące

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

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

Aby dowiedzieć się więcej o używanych indeksach i odczytywanych wpisach indeksu, użyj wyjaśnienia zapytania.

Nasłuchiwanie wyników zapytania

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

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

Naliczanie opłat za detektory w pakietach SDK na urządzenia mobilne i do internetu zależy też od tego, czy włączona jest trwałość offline:

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

  • Jeśli trwałość offline jest wyłączona, za każdym razem, gdy detektor rozłączy się i połączy ponownie, zostaną naliczone opłaty za odczytane dokumenty i wpisy indeksu, tak jakby zostało wysłane zupełnie nowe zapytanie.

Zarządzanie dużymi zbiorami wyników

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

  • kursory, które umożliwiają wznowienie długotrwałego zapytania;
  • Tokeny stron, które pomagają dzielić wyniki zapytania na strony.
  • Limity, które określają, ile wyników ma zostać pobranych.
  • Przesunięcia, które umożliwiają pominięcie stałej liczby dokumentów.

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

Jeśli jednak wyślesz zapytanie, które zawiera przesunięcie, zostanie naliczona opłata za odczyt każdego pominiętego dokumentu. Jeśli na przykład zapytanie używa przesunięcia 10 i zwraca 1 dokument, zostanie naliczona opłata za 11 odczytów. Ze względu na ten dodatkowy koszt, o ile to możliwe, używaj kursorów zamiast przesunięć.

Zapytania inne niż odczyty dokumentów

W przypadku zapytań innych niż odczyty dokumentów, takich jak żądanie listy identyfikatorów kolekcji, opłata jest naliczana za 1 odczyt dokumentu. Jeśli pobranie pełnego zestawu wyników wymaga więcej niż 1 żądania (np. gdy używasz podziału na strony), opłata jest naliczana za każde żądanie.

Minimalna opłata za zapytania

Za każde wykonane zapytanie naliczana jest minimalna opłata za odczyt jednego dokumentu, nawet jeśli zapytanie nie zwróci żadnych wyników.

Cloud Firestore Security Rules

W przypadku bibliotek klienta na urządzenia mobilne i do aplikacji internetowych, jeśli Cloud Firestore Security Rules używa exists(), get() lub getAfter() do odczytu co najmniej 1 dokumentu z bazy danych, naliczane są opłaty za dodatkowe odczyty w następujący sposób:

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

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

    Opłata jest naliczana tylko za jeden odczyt na dokument zależny, nawet jeśli reguły odwołują się do tego dokumentu więcej niż raz.

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

    W rezultacie odczytanie wielu dokumentów może kosztować mniej niż odczytywanie ich pojedynczo, ponieważ wymaga mniejszej liczby żądań.

  • Gdy nasłuchujesz wyników zapytania, opłata za ocenę reguł 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 potem 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 narzut pamięci masowej. Ilość narzutu 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 nazwę dokumentu.
  • nazwę i wartość każdego pola, Cloud Firestore nie ma schematu, dlatego nazwa każdego pola w dokumencie musi być przechowywana wraz z wartością pola.
  • wszystkie indeksy pojedynczego pola i indeksy złożone, 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, aby obliczyć rozmiar 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 artykule Obliczanie rozmiaru miejsca na dane.

Dane odzyskiwania do określonego momentu

Jeśli włączysz odzyskiwanie do określonego momentu, będą naliczane opłaty za przechowywanie danych odzyskiwania do określonego momentu. Większość klientów stwierdzi, że ogólny koszt przechowywania danych PiTR jest podobny do kosztu przechowywania bazy danych.

Koszty miejsca na dane dla odzyskiwania do określonego momentu są podawane w GiB/miesiąc i obliczane codziennie. Cloud Firestore mierzy rozmiar bazy danych codziennie. W ciągu miesiąca te punkty próbkowania są uśredniane, aby obliczyć rozmiar miejsca na dane bazy danych. Ta średnia wartość jest mnożona przez cenę jednostkową odzyskiwania do określonego momentu (GiB-miesiąc).

Jeśli na przykład średni rozmiar bazy danych w ciągu miesiąca wynosi 1 GiB, a odzyskiwanie do określonego momentu jest włączone przez cały miesiąc, rozmiar danych PITR podlegających rozliczeniu również wynosi 1 GiB.

Minimalne rozliczenie: możesz zostać obciążony(-a) opłatą za maksymalnie 1 dzień przechowywania danych na potrzeby odzyskiwania do określonego momentu, nawet jeśli wyłączysz tę funkcję w ciągu dnia od jej włączenia.

Operacje tworzenia kopii zapasowych danych i przywracania

Jeśli włączysz kopie zapasowe, będą naliczane opłaty za pamięć masową kopii zapasowych bazy danych. Rozmiar miejsca na kopię zapasową jest równy rozmiarowi miejsca na bazę danych w momencie tworzenia kopii zapasowej.

Koszty miejsca na kopie zapasowe są podawane w GiB/miesiąc. W ciągu miesiąca obliczana jest też liczba dni, przez które przechowywana jest każda kopia zapasowa, uśredniona w ciągu miesiąca. Koszt każdej kopii zapasowej jest obliczany przez pomnożenie rozmiaru kopii zapasowej przez część miesiąca, przez którą kopia zapasowa jest przechowywana, i przez cenę jednostkową. Na potrzeby rozliczeń granice dnia są określane według strefy czasowej America/Los_Angeles.

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

Wyjaśnienie zapytania

Korzystanie z wyjaśnienia zapytania 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 naliczana jest opłata za jedną operację odczytu.

Gdy zapytanie jest wyjaśniane za pomocą opcji analizy, wykonywane są operacje indeksowania i odczytu, więc opłata za zapytanie jest naliczana jak zwykle. Za wyjaśnianie i analizowanie aktywności nie są naliczane dodatkowe opłaty, tylko zwykłe opłaty za wykonywane zapytanie.

Przepustowość sieci

Opłaty są naliczane za przepustowość sieci wykorzystywaną przez żądania Cloud Firestore, jak pokazano w poniższych sekcjach. Koszt przepustowości sieci w przypadku żą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 zserializowanego formatu wiadomości. Narzut protokołu, np. narzut SSL, nie jest wliczany 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 użyć konsoli Google Cloud i wyeksportować dane rozliczeniowe do pliku.

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 następujący sposób:

Typ ruchu Cena
Przesyłanie danych przychodzących Bezpłatny
Przesyłanie danych w obrębie regionu Bezpłatny
Przesyłanie danych między regionami w tym samym obszarze obejmującym wiele regionów Bezpłatny
Przesyłanie danych między regionami w USA (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 USA Stawki za przesyłanie danych 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 Cloud Platform.

Cloud Firestore podlega też dodatkowym opłatom za ruch wychodzący do internetu w przypadku:

  • Żądania Google Cloud 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 stawki za ruch wychodzący do internetu w Google Cloud.

Zobacz przykładowe ceny

Aby zobaczyć, jak naliczane są koszty rozliczeniowe 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 budżety miesięczne i alerty w konsoli Google Cloud.

Aby monitorować wykorzystanie Cloud Firestore w konsoli Firebase, otwórz kartę Bazy danych i miejsce na dane > Firestore > Użycie. Za pomocą tego panelu możesz ocenić wykorzystanie w różnych okresach.