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 takich czynników 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 przeprowadzenia 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 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 szkółki roślin. W tym przykładzie zakładamy,że kolekcja zawiera 200 000 informacji o produktach, przy czym każdy dokument z informacjami o produkcie ma rozmiar 2 KiB, a 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)
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 za wyszukiwanie pełnotekstowe i 3 dodatkowych jednostek za zwrócone dokumenty.

0,50 USD za milion zapytań
Wyszukaj wszystkie cytrusy uprawiane w pomieszczeniach. W wyniku wyszukiwania zostanie pobranych 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, aby uzyskać 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 wyrażeń, nadal wymaga wyszukiwania wielu tokenów. Koszt skanowania indeksu wyszukiwania jest nieco niższy i wynosi 6 jednostek odczytu, czyli mniej niż w przykładzie z „suchą wodą”, ale zwracanych jest 36 dokumentów, co zwiększa łączny koszt.
  • Zapytanie o doniczkę balkonową 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"}})) na podstawie 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 obliczeniowym, 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
    }}})

Łącznie 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 spośród 1000 pasujących.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

19 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ń, silnik 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, mechanizm 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 ocenianiu 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. Wykorzystuje: 100 jednostek odczytu

Skanowanie

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

Skanowanie dokumentów

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

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

Minimalny rozmiar dokumentu lub wpisu w indeksie

W niektórych sytuacjach do przetworzenia zapytania może nie być konieczne odczytanie zawartości dokumentu lub wpisu w indeksie. 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. Wykorzystuje: 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 w indeksie, każdy o rozmiarze 256 bajtów, i wykonuje odczyt punktowy 128 dokumentów, każdy o rozmiarze 4 KiB. Zużycie: 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, dodatkowo generują koszty odczytu związane z zapytaniem.

Zobacz przykłady poniżej.

Tworzy

  • Utwórz nowy dokument o rozmiarze 10 KiB bez indeksów. Zużycie: 10 jednostek zapisu
  • Utworzenie dokumentu o rozmiarze 1 KiB z 1 wpisem w indeksie 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życie: 10 jednostek zapisu
  • Znajdź dokument o rozmiarze 1 KiB według identyfikatora dokumentu i zaktualizuj 1 pole z 1 wpisem w indeksie o rozmiarze 256 bajtów. Wykorzystuje: 3 jednostki zapisu. Uwaga: aktualizacja wpisu w indeksie w takiej sytuacji zużywa 2 jednostki zapisu – jedną na usunięcie i jedną na ponowne utworzenie wpisu w indeksie.
  • znalezienie dokumentu o rozmiarze 1 KiB według identyfikatora dokumentu i nieaktualizowanie niczego (brak 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. Zużycie: 2 jednostki zapisu
  • Usunięcie dokumentu o rozmiarze 1 KiB, który nie ma indeksów w kolekcji. Wykorzystuje: 1 jednostkę zapisu

Kompilacje indeksu

Opłaty za kompilacje indeksów są naliczane za wpisy w indeksie utworzone lub zmodyfikowane podczas operacji kompilacji. Te koszty są naliczane za każdym razem, gdy dodawana lub usuwana jest definicja indeksu. Wpisy w indeksie są rozliczane tak samo jak zapisy, czyli 1 jednostka zapisu na 1 KiB.

  • Utworzenie nowego indeksu dla kolekcji zawierającej 500 dokumentów, wpisy w indeksie mają po 1 KiB. Zużywa 500 jednostek zapisu.
  • Usuwasz istniejący indeks kolekcji zawierającej 500 dokumentów, a każdy usunięty wpis w indeksie ma rozmiar 1 KiB. Zużywa 500 jednostek zapisu.