Przykłady cen

Na tej stronie znajdziesz przykłady obliczania jednostek rozliczeniowych w niektórych najczęstszych scenariuszach. Pamiętaj, że każde zapytanie może różnić się pod względem przetwarzanych danych w zależności od czynników takich jak plan zapytania, kształt danych i dostępne indeksy.

Zalecamy korzystanie z funkcji wyjaśniania zapytań, aby lepiej zrozumieć koszty i wydajność konkretnych zapytań.

Operacje odczytu

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

Opłaty za zapytania wyszukiwania pełnotekstowego są podzielone na koszt przeprowadzenia wyszukiwania w indeksie tekstowym i koszt pobrania 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. haseł, wyrażeń), to, czy stosowana jest ocena trafności, oraz liczba wpisów indeksu, 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 szkółki roślin. W tym przykładzie zakładamy,że kolekcja zawiera 200 000 informacji o produktach, z których każda ma rozmiar 2 KiB, a odpowiadający im 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)
Wyszukiwanie rzadkiego produktu „sucha woda” w płaskiej tacy, które zwraca 3 dokumenty.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

10 jednostek odczytu,

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

0,50 USD za milion zapytań
Wyszukaj wszystkie cytrusy uprawiane w pomieszczeniach. W wyniku otrzymasz 36 dokumentów.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

Łączna liczba jednostek odczytu: 42

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

2,10 USD za milion zapytań
Wyszukaj donice balkonowe, w przypadku których jest wiele pasujących produktów. posortować wyniki według trafności i ograniczyć 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 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 „sucha woda” zawiera wyrażenie ("dry water") i dodatkowe słowa. Wyszukiwanie wyrażeń jest bardziej złożone, ponieważ mechanizm zapytań musi sprawdzać bliskość i kolejność tokenów, co przyczynia się do 7 jednostek odczytu w fazie wyszukiwania. Ponieważ bardzo mało dokumentów pasuje, koszt pobierania dokumentów jest niski.
  • Zapytanie "indoor" "citrus" "tree" wyszukuje 3 osobne hasła. Chociaż jest nieco mniej złożone w przypadku poszczególnych haseł niż wyszukiwanie frazy, nadal wymaga wyszukiwania wielu tokenów. Koszt skanowania indeksu wyszukiwania jest nieco niższy niż w przypadku przykładu „sucha woda” i wynosi 6 jednostek odczytu, ale zwracanych jest 36 dokumentów, co zwiększa łączny koszt.
  • Zapytanie o doniczkę na balkon ma zdecydowanie najwyższy koszt wyszukiwania pełnotekstowego, który wynosi 25 jednostek. Dzieje się tak głównie dlatego, że żąda on sortowania wyników według trafności (.sort({score: {$meta: "textScore"}})) w przypadku haseł, które pasują do wielu dokumentów. Aby określić 50 najtrafniejszych wyników, mechanizm zapytań musi znaleźć wszystkie potencjalne dopasowania dla słów „balkon” lub „doniczka”, obliczyć wynik trafności dla każdego z nich, a następnie je posortować. Ten proces oceniania i sortowania dużej liczby kandydatów w indeksie jest bardzo wymagający pod względem mocy obliczeniowej, mimo że ostatecznie pobieranych jest tylko 50 dokumentów. Ogólność haseł w połączeniu z narzutem związanym z oceną trafności sprawia, że faza wyszukiwania jest bardziej kosztowna.

Zapytania geoprzestrzenne

Opłaty za zapytania geoprzestrzenne są określane na podstawie złożoności zapytania, konkretnych warunków i sortowania, a także zasobów wymaganych do przeskanowania wszystkich danych w odpowiednim indeksie geoprzestrzennym.

Tabela poniżej przedstawia opłaty związane z wykonywaniem zapytań geoprzestrzennych w aplikacji map. W tym przykładzie zakładamy, że kolekcja zawiera 1 000 000 dokumentów reprezentujących ciekawe miejsca, przy czym każdy dokument ma rozmiar 1 KiB, a odpowiadający mu 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 ciekawe miejsca w promieniu maksymalnie 10 km i zwróć 10 wyników.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

Łączna liczba jednostek odczytu: 16.

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 ciekawe miejsca w odległości maksymalnie 100 km i zwróć 10 najbliższych spośród 1000 pasujących.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

19 wszystkich jednostek odczytu.

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ń

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 promieniu 10 km znajduje tylko 10 dopasowań, mechanizm zapytań musi wykonać mniej pracy, aby zidentyfikować i uporządkować te punkty według odległości (co $near robi domyślnie). Dzięki temu koszt skanowania indeksu jest niższy i wynosi 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ć żądanie dotyczące 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 zadanie obliczeniowe polegające na przeszukiwaniu i klasyfikowaniu 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 rozliczenia za odczyty punktowe:

  • Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 KiB. Wykorzystuje: 1 jednostkę odczytu
  • Odczyt punktowy pojedynczego dokumentu o rozmiarze 4 KiB. Wykorzystuje: 1 jednostkę odczytu
  • Odczyt punktowy pojedynczego dokumentu o rozmiarze 1 MiB. Zużycie: 256 jednostek odczytu
  • Odczyt punktowy 100 dokumentów, każdy o rozmiarze 1 KiB. Wykorzystanie: 100 jednostek odczytu

Skanowanie

Poniższe przykłady obejmują scenariusze, które skanują dokumenty lub wpisy indeksu.

Skanowanie dokumentów

  • Zapytanie, które skanuje 100 dokumentów, każdy o rozmiarze 1 KiB. Zużycie: 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 często stanowią bardziej opłacalny sposób skanowania danych.

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

Minimalny rozmiar dokumentu lub wpisu indeksu

W niektórych sytuacjach do udzielenia odpowiedzi na zapytanie może nie być konieczne odczytanie zawartości dokumentu ani wpisu indeksu. Obejmuje to proste zapytania zliczające, takie jak zliczanie łącznej liczby dokumentów w kolekcji. W takich sytuacjach obowiązuje minimalny koszt 32 bajtów za każdy zeskanowany element.

  • liczyć liczbę dokumentów w kolekcji, Zapytanie skanuje 1000 elementów w kolekcji. Zużycie: 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, na które składają się:
    • 128 jednostek odczytu w przypadku odczytów punktowych,
    • 8 jednostek odczytu na potrzeby skanowania indeksów,

Wyjaśnienie zapytania

Wyjaśnienie zapytania pomaga zrozumieć, jak baza danych wykonuje zapytania. Podane informacje mogą pomóc w optymalizacji zapytań.

Korzystanie z funkcji wyjaśniania zapytania wiąże się z tymi kosztami:

  • Wyjaśnienie zapytania, które wykonuje zapytanie: obowiązuje koszt zapytania.
  • Wyjaśnienie zapytania z użyciem opcji „Tylko plan”. Zużycie: 1 jednostka 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 transzach po 1 KiB.

Proste operacje zapisu, takie jak aktualizacja według identyfikatora dokumentu, wiążą się tylko z kosztami zapisu. Operacje zapisu, które wymagają wykonania zapytania, będą dodatkowo obciążone kosztami odczytu związanymi z zapytaniem.

Zobacz przykłady poniżej.

Tworzy

  • Utwórz nowy dokument o rozmiarze 10 KiB bez indeksów. Wykorzystuje: 10 jednostek zapisu
  • Utworzenie dokumentu 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. Wykorzystuje: 10 jednostek zapisu
  • Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i zaktualizuj 1 pole za pomocą 1 wpisu indeksu o rozmiarze 256 bajtów. Wykorzystuje: 3 jednostki zapisu. Uwaga: aktualizacja 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 nic nie aktualizuj (bez zmian). Zużywa: 1 jednostkę zapisu (minimalny koszt zapisu)
  • Zapytanie o wszystkie dokumenty o rozmiarze 1 KiB w kolekcji, które skanuje 1000 dokumentów, i wstawienie nowego pola o rozmiarze 256 bajtów bez indeksów w kolekcji: 1000 jednostek odczytu i 1000 jednostek zapisu.

Usunięcia

  • Usunięcie dokumentu o rozmiarze 1 KiB, który ma 1 indeks w kolekcji. Wykorzystuje: 2 jednostki zapisu
  • Usunięcie dokumentu o rozmiarze 1 KiB, który nie ma indeksów w kolekcji. Wykorzystuje: 1 jednostkę zapisu

Kompilacje indeksów

Kompilacje indeksów są rozliczane na podstawie wpisów indeksu utworzonych lub zmodyfikowanych podczas operacji kompilacji. Te koszty 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.

  • Utworzenie nowego indeksu dla kolekcji zawierającej 500 dokumentów, z których każdy ma 1 KiB. Zużywa 500 jednostek zapisu.
  • Usunięcie istniejącego indeksu kolekcji zawierającej 500 dokumentów, wpisy indeksu mają po 1 KiB. Zużywa 500 jednostek zapisu.