Obliczenia rozmiaru miejsca na dane

Na tej stronie opisujemy rozmiar miejsca na dane dokumentów, nazw dokumentów, pól i wpisów indeksu w Cloud Firestore.

Informacje o kosztach tego miejsca znajdziesz w cenniku Cloud Firestore.

Rozmiar ciągu znaków

Rozmiary ciągów znaków są obliczane jako liczba bajtów zakodowanych w formacie UTF-8 + 1.

Te dane są przechowywane jako ciągi znaków:

  • Identyfikatory kolekcji
  • Identyfikatory dokumentów w postaci ciągu znaków
  • Nazwy dokumentów
  • Nazwy pól
  • Wartości pól typu ciąg znaków

Przykład:

  • Identyfikator kolekcji tasks zajmuje 5 bajtów + 1 bajt, czyli łącznie 6 bajtów.
  • Nazwa pola description zajmuje 11 bajtów + 1 bajt, czyli łącznie 12 bajtów.

Rozmiar identyfikatora dokumentu

Rozmiar identyfikatora dokumentu to rozmiar ciągu znaków w przypadku identyfikatora w postaci ciągu znaków lub 8 bajtów w przypadku identyfikatora w postaci liczby całkowitej.

Rozmiar nazwy dokumentu

Rozmiar nazwy dokumentu to suma:

  • rozmiar każdego identyfikatora kolekcji i dokumentu w ścieżce do dokumentu;
  • 16 dodatkowych bajtów

W przypadku dokumentu w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w postaci ciągu znaków my_task_id rozmiar nazwy dokumentu wynosi 6 + 5 + 6 + 11 + 16 = 44 bajty:

  • 6 bajtów na identyfikator kolekcji users,
  • 5 bajtów na identyfikator dokumentu jeff,
  • 6 bajtów na identyfikator kolekcji tasks
  • 11 bajtów na identyfikator dokumentu my_task_id,
  • 16 dodatkowych bajtów

Rozmiar wartości pola

W tabeli poniżej znajdziesz rozmiary wartości pól według typu.

Typ Rozmiar
Tablica suma rozmiarów wartości,
Wartość logiczna 1 bajt
Bajty Długość w bajtach
Data i godzina 8 bajtów
Liczba zmiennoprzecinkowa 8 bajtów
Punkt geograficzny 16 bajtów
Liczba całkowita 8 bajtów
Mapa rozmiar mapy obliczany w taki sam sposób jak rozmiar dokumentu.
Null 1 bajt
Źródła wiedzy rozmiar nazwy dokumentu,
Ciąg tekstowy Liczba bajtów zakodowanych w formacie UTF-8 + 1
Wektor 8 bajtów na wymiar

Na przykład pole wartości logicznej o nazwie done będzie używać 6 bajtów:

  • 5 bajtów na nazwę pola done,
  • 1 bajt na wartość logiczną.

Rozmiar dokumentu

Rozmiar dokumentu to suma:

Ten przykład dotyczy dokumentu w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w formie ciągu znaków my_task_id:

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

Łączny rozmiar pól to 71 bajtów:

Nazwa i wartość pola Rozmiar pola w bajtach
"type": "Personal" 14
5 za nazwę pola + 9 za wartość ciągu pola
"done": false 6
5 za nazwę pola + 1 za wartość logiczną pola
"priority": 1 17
9 za nazwę pola + 8 za wartość pola w postaci liczby całkowitej
"description": "Learn Cloud Firestore" 34
12 za nazwę pola + 22 za wartość ciągu pola

Rozmiar dokumentu wynosi więc 44 + 71 + 32 = 147 bajtów:

  • 44 bajty na nazwę dokumentu,
  • 71 bajtów na pola,
  • 32 dodatkowe bajty

Rozmiar wpisu indeksu

Rozmiary wpisów indeksu są obliczane w podany niżej sposób w przypadku indeksów jednopolowych i złożonych.

Rozmiar wpisu indeksu pojedynczego pola

Rozmiar wpisu indeksu jedno-polowego zależy od tego, czy indeks jest ograniczony do kolekcji czy do grupy kolekcji.

Zakres kolekcji

Rozmiar wpisu w indeksie jednopolowym z zakresem kolekcji jest sumą:

Rozważmy dokument w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w postaci ciągu znaków my_task_id:

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

W przypadku indeksu jednopolowego z zakresem kolekcji, który indeksuje pole done, łączny rozmiar wpisu w tym indeksie wynosi 109 bajtów:

  • 44 bajty na nazwę dokumentu users/jeff/tasks/my_task_id
  • 27 bajtów na nazwę dokumentu nadrzędnego users/jeff
  • 5 bajtów na nazwę pola done,
  • 1 bajt na wartość pola logicznego,
  • 32 dodatkowe bajty

Zakres grupy kolekcji

Rozmiar wpisu w indeksie jednopolowym z zakresem grupy kolekcji jest sumą:

Rozważmy dokument w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w postaci ciągu znaków my_task_id:

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

W przypadku indeksu jednopolowego z zakresem grupy kolekcji, który indeksuje pole done, łączny rozmiar wpisu w tym indeksie wynosi 98 bajtów:

  • 44 bajty na nazwę dokumentu users/jeff/tasks/my_task_id
  • 5 bajtów na nazwę pola done,
  • 1 bajt na wartość pola logicznego,
  • 48 dodatkowych bajtów

Rozmiar wpisu indeksu złożonego

Rozmiar wpisu w indeksie złożonym zależy od tego, czy indeks jest ograniczony do kolekcji czy do grupy kolekcji.

Zakres kolekcji

Rozmiar wpisu indeksu w indeksie złożonym o zakresie kolekcji jest sumą:

Rozważmy dokument w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w postaci ciągu znaków my_task_id:

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

W przypadku indeksu złożonego z zakresem kolekcji, który indeksuje pola done i priority (oba rosnąco), łączny rozmiar wpisu w tym indeksie wynosi 112 bajtów:

  • 44 bajty na nazwę dokumentu users/jeff/tasks/my_task_id
  • 27 bajtów na nazwę dokumentu nadrzędnego users/jeff
  • 1 bajt na wartość pola logicznego,
  • 8 bajtów na wartość pola liczby całkowitej,
  • 32 dodatkowe bajty

Zakres grupy kolekcji

Rozmiar wpisu indeksu w indeksie złożonym z zakresem grupy kolekcji jest sumą:

Rozważmy dokument w podkolekcji users/jeff/tasks z identyfikatorem dokumentu w postaci ciągu znaków my_task_id:

 - "type": "Personal"
 - "done": false
 - "priority": 1
 - "description": "Learn Cloud Firestore"

W przypadku indeksu złożonego z zakresem grupy kolekcji, który indeksuje pola done i priority (oba rosnąco), łączny rozmiar wpisu indeksu w tym indeksie wynosi 85 bajtów:

  • 44 bajty na nazwę dokumentu users/jeff/tasks/my_task_id
  • 1 bajt na wartość pola logicznego,
  • 8 bajtów na wartość pola liczby całkowitej,
  • 32 dodatkowe bajty

Rozmiar wpisu w indeksie wyszukiwania tekstu

Rozmiar wpisu indeksu wyszukiwania tekstowego w indeksie jest sumą:

  • Rozmiar ciągu tekstowego nazwy kolekcji
  • Rozmiar wartości identyfikatora dokumentu
  • Suma bajtów z indeksowanych wartości pól (x2)
  • 48 dodatkowych bajtów na ogólne metadane.

Rozważmy przykład zdarzenia wstawienia dokumentu o identyfikatorze my_task_id w kolekcji tasks:

Łączny rozmiar wpisu w indeksie wyszukiwania tekstowego w description wynosi 105 bajtów na podstawie:

  • 6 bajtów na nazwę kolekcji tasks
  • 11 bajtów na wartość identyfikatora dokumentu,
  • 44 bajty, czyli 22 bajty na pole description x2
  • 48 dodatkowych bajtów na ogólne metadane.

Rozmiar wpisu indeksu geoprzestrzennego

Rozmiar wpisu indeksu geoprzestrzennego w indeksie jest sumą:

  • Rozmiar ciągu tekstowego nazwy kolekcji
  • Rozmiar wartości identyfikatora dokumentu
  • 128 bajtów na każdy zindeksowany punkt geograficzny
  • 48 dodatkowych bajtów na ogólne metadane.

Rozważmy przykład zdarzenia wstawienia dokumentu o identyfikatorze my_place w kolekcji places:

{
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

Łączny rozmiar wpisu indeksu geoprzestrzennego w location wynosi 192 bajty, na co składają się:

  • 7 bajtów na nazwę kolekcji places
  • 9 bajtów na identyfikator dokumentu,
  • 128 bajtów w przypadku pola location,
  • 48 dodatkowych bajtów na ogólne metadane.

Co dalej?

Dowiedz się więcej o cenach Cloud Firestore.