Ta strona zawiera przykłady obliczania jednostek rozliczeniowych w niektórych najczęstszych scenariuszach. Pamiętaj, że ilość przetwarzanych danych może się różnić w zależności od zapytania ze względu na takie czynniki jak plan zapytania, kształt danych i dostępne indeksy.
Aby lepiej zrozumieć koszt i wydajność konkretnych zapytań, zalecamy korzystanie z funkcji Wyjaśnienie zapytania.
Operacje odczytu
Większość operacji odczytu polega na odczytaniu konkretnego dokumentu lub przeskanowaniu zakresu danych na podstawie identyfikatora. Operacje odczytu zużywają jednostki odczytu. Zobacz przykłady poniżej.
Wyszukiwanie pełnotekstowe
Opłaty za zapytania dotyczące wyszukiwania pełnotekstowego są dzielone na koszt wyszukiwania w indeksie tekstowym i koszt pobierania dokumentów. Koszt wyszukiwania w indeksie tekstowym zależy od złożoności zapytania i ilości danych przeskanowanych w indeksie w celu znalezienia wyników. Czynniki wpływające na ten koszt to m.in. liczba i charakter wyszukiwanych haseł (np. słowa, frazy), to, czy stosowane jest ocenianie trafności, oraz liczba wpisów indeksu, które trzeba sprawdzić. Koszt pobierania odpowiednich dokumentów zależy od liczby i rozmiaru dokumentów pobranych po zakończeniu fazy wyszukiwania.
W tabeli poniżej przedstawiamy opłaty związane z wykonywaniem zapytań dotyczących wyszukiwania pełnotekstowego w katalogu produktów e-commerce dla szkółki roślin. W tym przykładzie zakładamy, że kolekcja zawiera 200 tys. informacji o produktach, a każdy dokument z informacją o produkcie ma rozmiar 2 KiB. Odpowiedni indeks wyszukiwania tekstowego ma rozmiar około 100 MiB.
| Zapytanie | Przykład kodu | Szacunkowa liczba jednostek odczytu zużytych na zapytanie | Szacunkowe koszty (region: us-central1 w USD) |
|---|---|---|---|
| Wyszukiwanie rzadkiego produktu „dry water” (płaska taca), które powoduje pobranie 3 dokumentów. | |
Łącznie 10 jednostek odczytu 7 jednostek za wyszukiwanie pełnotekstowe i 3 dodatkowe jednostki za zwrócone dokumenty. |
0,50 USD za milion zapytań |
| Wyszukiwanie wszystkich drzew cytrusowych do uprawy w pomieszczeniach, które powoduje pobranie 36 dokumentów. | |
Łącznie 42 jednostki odczytu 6 jednostek za wyszukiwanie pełnotekstowe i 36 dodatkowych jednostek za zwrócone dokumenty. |
2,10 USD za milion zapytań |
| Wyszukiwanie doniczek balkonowych, w przypadku których jest wiele pasujących produktów. Sortowanie wyników według trafności i ograniczenie do 50 najlepszych wyników wyszukiwania. | |
Łącznie 75 jednostek odczytu 25 jednostek za wyszukiwanie pełnotekstowe i 50 dodatkowych jednostek za zwrócone dokumenty. |
3,75 USD za milion zapytań |
Te przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:
- Zapytanie „dry water” zawiera frazę (
"dry water") i dodatkowe słowa. Wyszukiwanie fraz jest bardziej złożone, ponieważ silnik zapytań musi sprawdzić bliskość i kolejność tokenów, co przyczynia się do zużycia 7 jednostek odczytu w fazie wyszukiwania. Ponieważ pasuje bardzo mało dokumentów, koszt pobierania dokumentów jest niski. - Zapytanie „indoor” „citrus” „tree” wyszukuje 3 oddzielne słowa. Chociaż jest ono nieco mniej złożone niż wyszukiwanie fraz, nadal wymaga wyszukania wielu tokenów. Ma nieco niższy koszt skanowania indeksu wyszukiwania (6 jednostek odczytu) niż w przykładzie „dry water”, ale zwraca 36 dokumentów, co zwiększa łączny koszt.
- Zapytanie dotyczące doniczek balkonowych ma znacznie wyższy koszt wyszukiwania pełnotekstowego (25 jednostek). Wynika to głównie z tego, że prosi o posortowanie wyników
według trafności (
.sort({score: {$meta: "textScore"}})) na podstawie słów które pasują do wielu dokumentów. Aby określić 50 najbardziej trafnych wyników, silnik zapytań musi znaleźć wszystkie potencjalne dopasowania do słów „balcony” lub „planter”, obliczyć dla każdego z nich wynik trafności, a następnie je posortować. Ten proces oceniania i sortowania dużej liczby kandydatów w indeksie jest wymagający obliczeniowo, mimo że ostatecznie pobieranych jest tylko 50 dokumentów. Szeroki zakres słów w połączeniu z narzutem związanym z ocenianiem trafności sprawia, że faza wyszukiwania jest droższa.
Zapytania geoprzestrzenne
Opłaty za zapytania geoprzestrzenne zależą od złożoności zapytania oraz od konkretnych warunków i sortowania, a także od zasobów wymaganych do przeskanowania wszystkich danych w odpowiednim indeksie geoprzestrzennym.
W tabeli poniżej przedstawiamy opłaty związane z wykonywaniem zapytań geoprzestrzennych w aplikacji Mapy. W tym przykładzie zakładamy, że kolekcja zawiera 1 mln dokumentów reprezentujących ważne miejsca, a każdy dokument z ważnym miejscem ma rozmiar 1 KiB. Odpowiedni indeks geoprzestrzenny ma rozmiar około 60 MiB.
| Zapytanie | Przykład kodu | Szacunkowa liczba jednostek odczytu zużytych na zapytanie | Szacunkowe koszty (region: us-central1 w USD) |
|---|---|---|---|
| Znajdź wszystkie punkty zainteresowania w promieniu maksymalnie 10 km, zwracając 10 dopasowań. | |
Łącznie 16 jednostek odczytu. Na podstawie 6 jednostek odczytu dla zapytania geoprzestrzennego i 10 dodatkowych jednostek dla zwróconych dokumentów. |
0,80 USD za milion zapytań |
| Znajdź wszystkie punkty zainteresowania w odległości maksymalnie 100 km i zwróć 10 najbliższych punktów zainteresowania spośród 1000 dopasowań. | |
Łącznie 19 jednostek odczytu. 9 jednostek odczytu za zapytanie geoprzestrzenne i 10 dodatkowych jednostek za zwrócone dokumenty. |
0,95 USD za milion zapytań |
Te przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:
- Zapytanie o promień 10 km: to zapytanie skanuje mniejszy obszar geograficzny. Ponieważ w tym promieniu 10 km znajduje tylko 10 dopasowań, silnik zapytań musi wykonać mniej pracy, aby zidentyfikować te punkty i uporządkować je według odległości (jak robi to
$near). Powoduje to niższy koszt skanowania indeksu (6 jednostek odczytu). - Zapytanie o promień 100 km: to zapytanie obejmuje znacznie większy obszar. Zapytanie znajduje 1000 potencjalnych dopasowań w promieniu 100 km. Aby spełnić prośbę o 10 najbliższych punktów, silnik zapytań musi obliczyć odległości i posortować znacznie większy zbiór kandydatów (do 1000 punktów) w indeksie. To dodatkowe obliczeniowe przesiewanie i rankingowanie znacznie większej liczby punktów powoduje, że koszt zapytania geoprzestrzennego jest wyższy (9 jednostek odczytu) niż w przypadku zapytania o promień 10 km, mimo że zwraca ono również tylko 10 dokumentów.
Odczytywanie punktowe
Przykładowe rozliczenie odczytów punktowych:
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 KiB. Zużywa: 1 jednostkę odczytu
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 4 KiB. Zużywa: 1 jednostkę odczytu
- Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 MiB. Zużywa: 256 jednostek odczytu
- Odczyt punktowy 100 dokumentów, każdy o rozmiarze 1 KiB. Zużywa: 100 jednostek odczytu
Skanowanie
Poniższe przykłady obejmują scenariusze, w których skanowane są dokumenty lub wpisy indeksu.
Skanowanie dokumentów
- Zapytanie, które skanuje 100 dokumentów, każdy o rozmiarze 1 KiB. Zużywa: 25 jednostek odczytu
Skanowanie indeksów
Koszt skanowania w bajtach jest taki sam niezależnie od tego, czy skanowany jest dokument, czy indeks. Wpisy indeksu są jednak często mniejsze. Dzięki temu mogą być bardziej opłacalnym sposobem skanowania danych.
- Zapytanie, które skanuje 100 wpisów indeksu, każdy o rozmiarze 1 KiB. Zużywa: 25 jednostek odczytu.
- Zapytanie, które skanuje 100 wpisów indeksu, każdy o rozmiarze 128 bajtów. Zużywa: 4 jednostki odczytu.
Minimalny rozmiar dokumentu lub wpisu indeksu
W niektórych sytuacjach do zrealizowania zapytania nie trzeba odczytywać zawartości dokumentu ani wpisu indeksu. Dotyczy to prostych zapytań zliczających, np. zliczających łączną liczbę dokumentów w kolekcji. W takich sytuacjach za każdy przeskanowany element obowiązuje minimalny koszt 32 bajtów.
- Zlicz liczbę dokumentów w kolekcji. Zapytanie skanuje 1000 elementów w kolekcji. Zużywa: 8 jednostek odczytu.
Połączenie skanowania i odczytów punktowych
Wiele zapytań wykonuje kombinację skanowania i odczytów punktowych, aby zrealizować operację.
- Zapytanie, które skanuje 128 wpisów indeksu, każdy o rozmiarze 256 bajtów, i wykonuje odczyt punktowy 128 dokumentów, każdy o rozmiarze 4 KiB. Zużywa: 136 jednostek odczytu, w tym:
- 128 jednostek odczytu dla odczytów punktowych
- 8 jednostek odczytu za skanowanie indeksu.
Wyjaśnienie zapytania
Wyjaśnienie zapytania pomaga zrozumieć, jak baza danych wykonuje zapytania. Podane szczegóły mogą pomóc w optymalizacji zapytań.
Podczas korzystania z funkcji Wyjaśnienie zapytania obowiązują te koszty:
- Wyjaśnienie zapytania, które wykonuje zapytanie: obowiązuje koszt zapytania.
- Wyjaśnienie zapytania z użyciem opcji tylko plan. Zużywa: 1 jednostkę odczytu (minimalny koszt zapytania)
Operacje zapisu
Opłaty za operacje zapisu (tworzenie, aktualizowanie i usuwanie) są naliczane na podstawie rozmiaru dokumentów i indeksów tworzonych, modyfikowanych lub usuwanych podczas operacji. Operacje zapisu zużywają jednostki zapisu. Jednostki zapisu są obliczane w porcjach po 1 KiB.
Proste operacje zapisu, takie jak aktualizacja według identyfikatora dokumentu, wiążą się tylko z kosztem zapisu. Operacje zapisu, które wymagają wykonania zapytania, aby zrealizować operację, będą dodatkowo wiązać się z kosztami odczytu związanymi z zapytaniem.
Zobacz przykłady poniżej.
Tworzenie
- Utwórz nowy dokument o rozmiarze 10 KiB bez indeksów. Zużywa: 10 jednostek zapisu
- Utwórz dokument o rozmiarze 1 KiB z 1 wpisem indeksu o rozmiarze 256 bajtów w kolekcji. Zużywa: 2 jednostki zapisu
Aktualizacje
- Znajdź dokument o rozmiarze 10 KiB według identyfikatora dokumentu i zaktualizuj go bez indeksów w kolekcji. Zużywa: 10 jednostek zapisu
- Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i zaktualizuj 1 pole z 1 wpisem indeksu o rozmiarze 256 bajtów. Zużywa: 3 jednostki zapisu. Uwaga: zaktualizowanie wpisu indeksu w tej sytuacji zużywa 2 jednostki zapisu – jedną na usunięcie i jedną na ponowne utworzenie wpisu indeksu.
- Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i nie aktualizuj go (bez zmian). Zużywa: 1 jednostkę zapisu (minimalny koszt zapisu)
- Wykonaj zapytanie o wszystkie dokumenty o rozmiarze 1 KiB w kolekcji, które skanuje 1000 dokumentów, i wstaw nowe pole o rozmiarze 256 bajtów bez indeksów w kolekcji: 1000 jednostek odczytu i 1000 jednostek zapisu.
Usuwanie
- Usuń dokument o rozmiarze 1 KiB, który ma 1 indeks w kolekcji. Zużywa: 2 jednostki zapisu
- Usuń dokument o rozmiarze 1 KiB, który nie ma indeksów w kolekcji. Zużywa: 1 jednostkę zapisu
Tworzenie indeksów
Tworzenie indeksów wiąże się z opłatami za wpisy indeksu utworzone lub zmodyfikowane podczas operacji tworzenia. Koszty te są naliczane za każdym razem, gdy dodawana lub usuwana jest definicja indeksu. Opłaty za wpisy indeksu są naliczane tak samo jak za zapisy, czyli 1 jednostka zapisu za 1 KiB.
- Utwórz nowy indeks dla kolekcji zawierającej 500 dokumentów. Utworzone wpisy indeksu mają rozmiar 1 KiB. Zużywa 500 jednostek zapisu.
- Usuń istniejący indeks dla kolekcji zawierającej 500 dokumentów. Usunięte wpisy indeksu mają rozmiar 1 KiB. Zużywa 500 jednostek zapisu.