Przykłady cen

Na tej stronie znajdziesz przykłady obliczania jednostek rozliczeniowych w najczęstszych scenariuszach. Pamiętaj, że ilość przetwarzanych danych może się różnić w zależności od zapytania, np. od planu zapytania, kształtu danych i dostępnych indeksów.

Aby lepiej zrozumieć koszt i skuteczność konkretnych zapytań, zalecamy korzystanie z funkcji Wyjaśnienie zapytania.

Operacje odczytu

Większość operacji odczytu polega na odczytaniu konkretnego dokumentu lub skanowaniu zakresu danych na podstawie identyfikatora. Operacje odczytu zużywają jednostki odczytu. Zobacz przykłady poniżej.

Opłaty za zapytania dotyczące wyszukiwania pełnotekstowego są rozróżniane 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. Na ten koszt wpływają m.in. liczba i rodzaj wyszukiwanych haseł (np. słowa, frazy), to, czy stosowane jest ocenianie trafności, oraz liczba wpisów w indeksie, które należy sprawdzić. Koszt pobierania odpowiednich dokumentów zależy od liczby i rozmiaru dokumentów pobranych po zakończeniu fazy wyszukiwania.

W tabeli poniżej przedstawiono opłaty związane z wykonywaniem zapytań wyszukiwania pełnotekstowego w katalogu produktów e-commerce dla szkółki roślin. W tym przykładzie założono, że kolekcja zawiera 200 tys. pozycji produktów, a każdy dokument z informacjami o produkcie ma rozmiar 2 KiB. Odpowiadający mu indeks wyszukiwania tekstowego ma rozmiar około 100 MiB.

Zapytanie Przykładowy kod Szacunkowa liczba jednostek odczytu wykorzystanych na zapytanie Szacowane koszty (region: us-central1 w USD)
Wyszukaj rzadki produkt „dry water” stack flat tray, co spowoduje pobranie 3 dokumentów.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

10 jednostek odczytu

Na podstawie 7 jednostek za wyszukiwanie pełnotekstowe i 3 dodatkowych jednostek za zwrócone dokumenty.

0,50 USD za milion zapytań
Wyszukaj wszystkie drzewa cytrusowe w pomieszczeniach, co spowoduje pobranie 36 dokumentów.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

42 jednostki odczytu

Na podstawie 6 jednostek za wyszukiwanie pełnotekstowe i 36 dodatkowych jednostek za zwrócone dokumenty.

2,10 USD za milion zapytań
Wyszukaj doniczki na balkon, w przypadku których jest wiele pasujących produktów. Posortuj wyniki według trafności i ogranicz je do 50 najlepszych wyników wyszukiwania.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

75 jednostek odczytu

Na podstawie 25 jednostek w przypadku wyszukiwania pełnotekstowego i 50 dodatkowych jednostek w przypadku zwróconych dokumentów.

3,75 USD za milion zapytań

Przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:

  • Zapytanie „sucha woda” zawiera frazę ("dry water") i dodatkowe terminy. Wyszukiwanie fraz jest bardziej złożone, ponieważ silnik zapytań musi sprawdzać bliskość i kolejność tokenów, co przyczynia się do 7 jednostek odczytu w fazie wyszukiwania. Ponieważ pasuje do niego bardzo mało dokumentów, koszt pobierania dokumentów jest niski.
  • Zapytanie „wewnętrzny” „cytrusowy” „drzewo” wyszukuje 3 osobne hasła. Wyszukiwanie w dopasowaniu przybliżonym jest nieco mniej złożone niż wyszukiwanie w dopasowaniu do wyrażenia, ale nadal wymaga wyszukania wielu tokenów. Ma nieco niższy koszt skanowania indeksu wyszukiwania (6 jednostek odczytu) niż w przypadku przykładu „suchej wody”, ale zwraca 36 dokumentów, co zwiększa łączny koszt.
  • Zapytanie balcony planter query ma najwyższy koszt wyszukiwania pełnotekstowego, który wynosi 25 jednostek. Dzieje się tak głównie dlatego, że żąda sortowania wyników według trafności (.sort({score: {$meta: "textScore"}})) w przypadku terminów, które pasują do wielu dokumentów. Aby określić 50 najtrafniejszych wyników, wyszukiwarka musi znaleźć wszystkie potencjalne dopasowania do słów „balkon” lub „doniczka”, 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 terminó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, zastosowanych warunków i sortowania oraz zasobów wymaganych do przeskanowania wszystkich danych w odpowiednim indeksie geoprzestrzennym.

W tabeli poniżej przedstawiono opłaty związane z wykonywaniem zapytań geoprzestrzennych w aplikacji do map. W tym przykładzie założono kolekcję 1 000 000 dokumentów reprezentujących punkty orientacyjne, przy czym każdy dokument punktu orientacyjnego ma rozmiar 1 KiB, a odpowiedni indeks geoprzestrzenny ma rozmiar około 60 MiB.

Zapytanie Przykładowy kod Szacunkowa liczba jednostek odczytu wykorzystanych na zapytanie Szacowane koszty (region: us-central1 w USD)
Znajdź wszystkie interesujące miejsca w promieniu maksymalnie 10 km i zwróć 10 wyników.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

16 jednostek odczytu.

Na podstawie 6 jednostek odczytu w przypadku zapytania geoprzestrzennego i 10 dodatkowych jednostek w przypadku zwróconych dokumentów.

0,80 USD za milion zapytań
Znajdź wszystkie interesujące miejsca w odległości maksymalnie 100 km i zwróć 10 najbliższych z 1000 wyników.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

19 jednostek odczytu łącznie.

Na podstawie 9 jednostek odczytu w przypadku zapytania geoprzestrzennego i 10 dodatkowych jednostek w przypadku zwróconych dokumentów.

0,95 USD za milion zapytań

Przykłady pokazują, jak różne wzorce zapytań wpływają na koszty:

  • Zapytanie o promieniu 10 km: to zapytanie skanuje mniejszy obszar geograficzny. Ponieważ w promieniu 10 km znajduje tylko 10 pasujących punktów, wyszukiwarka musi wykonać mniej pracy, aby zidentyfikować i uporządkować te punkty według odległości (co $near robi w sposób dorozumiany). Dzięki temu koszt skanowania indeksu wynosi 6 jednostek odczytu.
  • Zapytanie o promieniu 100 km: to zapytanie obejmuje znacznie większy obszar. Znajduje 1000 potencjalnych wyników 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. Ta dodatkowa praca obliczeniowa polegająca na przesiewaniu i rankingowaniu znacznie większej liczby punktów jest powodem, dla którego koszt zapytania geoprzestrzennego jest wyższy i wynosi 9 jednostek odczytu w porównaniu z zapytaniem o promieniu 10 km, mimo że zwraca ono tylko 10 dokumentów.

Odczyty 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
  • Odczytanie 100 dokumentów o rozmiarze 1 KiB każdy. Zużycie: 100 jednostek odczytu.

Skanowanie

Poniższe przykłady ilustrują scenariusze skanowania dokumentów lub wpisów w indeksie.

Skanowanie dokumentów

  • Zapytanie, które skanuje 100 dokumentów po 1 KiB każdy. 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. Jednak wpisy indeksu są często mniejsze. Dzięki temu mogą one stanowić bardziej opłacalny sposób skanowania danych.

  • Zapytanie, które skanuje 100 wpisów indeksu, po 1 KiB każdy. Zużywa: 25 jednostek odczytu.
  • Zapytanie, które skanuje 100 wpisów indeksu, po 128 bajtów każdy. Zużywa: 4 jednostki odczytu.

Minimalny rozmiar dokumentu lub wpisu indeksu

W niektórych sytuacjach do zrealizowania zapytania nie jest konieczne odczytywanie zawartości dokumentu ani wpisu indeksu. Dotyczy to prostych zapytań o liczbę, np. zliczania łącznej liczby dokumentów w kolekcji. W takich sytuacjach za każdy skanowany element obowiązuje minimalny koszt 32 bajtów.

  • Oblicz liczbę dokumentów w kolekcji. Zapytanie skanuje 1000 elementów w kolekcji. Zużywa 8 jednostek odczytu.

Kombinacja skanowania i odczytów punktowych

Wiele zapytań wykonuje kombinację skanowania i odczytów punktowych, aby zrealizować operację.

  • Zapytanie, które skanuje 128 pozycji indeksu po 256 bajtów każda i wykonuje odczyt punktowy 128 dokumentów po 4 KiB każdy. Zużywa 136 jednostek odczytu, na które składają się:
    • 128 jednostek odczytu w przypadku odczytów punktowych
    • 8 jednostek odczytu w przypadku skanowania indeksu

Wyjaśnienie zapytania

Wyjaśnienie zapytania pomaga zrozumieć, jak baza danych wykonuje zapytania. Podane szczegóły mogą pomóc Ci zoptymalizować zapytania.

Korzystanie z funkcji Wyjaśnij zapytanie wiąże się z tymi kosztami:

  • Wyjaśnienie zapytania, które wykonuje zapytanie: obowiązuje koszt zapytania.
  • Query Explain z opcją „plan only”. Zużywa: 1 jednostkę odczytu (minimalny koszt zapytania)

Operacje zapisu

Operacje zapisu (tworzenie, aktualizowanie i usuwanie) są rozliczane 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 transzach 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 można było je zrealizować, będą dodatkowo generować koszty odczytu związane z tym zapytaniem.

Zobacz przykłady poniżej.

Tworzy

  • Utwórz nowy dokument o rozmiarze 10 KiB bez indeksów. Zużywa: 10 jednostek zapisu
  • Utwórz w kolekcji dokument o rozmiarze 1 KiB z 1 wpisem indeksu o rozmiarze 256 bajtów. 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, a drugą na ponowne utworzenie wpisu indeksu.
  • Znajdź dokument o rozmiarze 1 KiB według identyfikatora i nie wprowadzaj w nim żadnych zmian. Zużywa: 1 jednostkę zapisu (minimalny koszt zapisu)
  • Wykonać zapytanie dotyczące wszystkich dokumentów o rozmiarze 1 KiB w kolekcji, które skanuje 1000 dokumentów, i wstawić nowe pole o rozmiarze 256 bajtów bez indeksów w kolekcji: 1000 jednostek odczytu i 1000 jednostek zapisu.

Usunięcia

  • 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

Kompilacje indeksów

Za wpisy indeksu utworzone lub zmodyfikowane podczas operacji tworzenia indeksu naliczana jest opłata. Koszty te są ponoszone za każdym razem, gdy dodawana lub usuwana jest definicja indeksu. Opłaty za wpisy indeksu są naliczane w taki sam sposób jak za zapisy, czyli 1 jednostka zapisu za 1 KiB.

  • Utwórz nowy indeks dla kolekcji zawierającej 500 dokumentów, w której każdy wpis indeksu ma rozmiar 1 KiB. Zużywa 500 jednostek zapisu.
  • Usunięcie istniejącego indeksu w kolekcji zawierającej 500 dokumentów, przy czym każdy usunięty wpis indeksu ma rozmiar 1 KiB. Zużywa 500 jednostek zapisu.