Obliczenia rozmiaru miejsca na dane

Na tej stronie opisujemy rozmiar miejsca na dane dokumentów, nazwy dokumentów, pola i wpisy indeksu w Cloud Firestore.

Więcej informacji o kosztach tego miejsca na dane znajdziesz na stronie Cloud Firestore Ceny.

Rozmiar ciągu znaków

Rozmiar ciągu znaków jest obliczany jako liczba bajtów zakodowanych w UTF-8 + 1.

Jako ciągi znaków są przechowywane te elementy:

  • identyfikatory kolekcji,
  • identyfikatory dokumentów w postaci ciągu znaków,
  • nazwy dokumentów,
  • nazwy pól,
  • wartości pól w postaci ciągu 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 tych wartości:

  • rozmiar każdego identyfikatora kolekcji i identyfikatora 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 rozmiar wartości pól według typu.

Typ Rozmiar
Tablica Suma rozmiarów jej 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 UTF-8 + 1
Wektor 8 bajtów na wymiar

Na przykład pole logiczne o nazwie done zajmuje 6 bajtów:

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

Rozmiar dokumentu

Rozmiar dokumentu to suma tych wartości:

Ten przykład dotyczy dokumentu 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"

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

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

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 ten sposób w przypadku indeksów pojedynczych pól i indeksów złożonych.

Rozmiar wpisu indeksu pojedynczego pola

Rozmiar wpisu indeksu pojedynczego pola zależy od tego, czy indeks jest ograniczony do kolekcji czy do grupy kolekcji.

Zakres kolekcji

Rozmiar wpisu w indeksie pojedynczego pola z zakresem kolekcji to suma tych wartości:

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 pojedynczego pola 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ść logiczną pola
  • 32 dodatkowe bajty

Zakres grupy kolekcji

Rozmiar wpisu w indeksie pojedynczego pola z zakresem grupy kolekcji to suma tych wartości:

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 pojedynczego pola 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ść logiczną pola
  • 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 z zakresem kolekcji to suma tych wartości:

  • Rozmiar nazwy dokumentu indeksowanego dokumentu
  • Rozmiar nazwy dokumentu dokumentu nadrzędnego indeksowanego dokumentu
  • suma wartości indeksowanych pól
  • 32 dodatkowe bajty.

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 w kolejności rosnącej), łą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ść logiczną pola
  • 8 bajtów na wartość pola w postaci liczby całkowitej
  • 32 dodatkowe bajty

Zakres grupy kolekcji

Rozmiar wpisu indeksu w indeksie złożonym z zakresem grupy kolekcji to suma tych wartości:

  • Rozmiar nazwy dokumentu indeksowanego dokumentu
  • suma wartości indeksowanych pól
  • 32 dodatkowe bajty.

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 w kolejności rosnącej), łączny rozmiar wpisu w tym indeksie wynosi 85 bajtów:

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

Rozmiar wpisu indeksu wyszukiwania tekstu

Rozmiar wpisu indeksu wyszukiwania tekstu w indeksie to suma tych wartości:

  • rozmiar ciągu znaków nazwy kolekcji,
  • rozmiar wartości identyfikatora dokumentu,
  • suma bajtów z wartości indeksowanych pól (x2),
  • 48 dodatkowych bajtów na metadane ogólne.

Rozważmy przykład zdarzenia wstawienia dokumentu z identyfikatorem my_task_id w kolekcji tasks:

Łączny rozmiar wpisu indeksu wyszukiwania tekstu w polu description wynosi 105 bajtów:

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

Rozmiar wpisu indeksu geoprzestrzennego

Rozmiar wpisu indeksu geoprzestrzennego w indeksie to suma tych wartości:

  • rozmiar ciągu znaków nazwy kolekcji,
  • rozmiar wartości identyfikatora dokumentu,
  • 128 bajtów na każdy indeksowany punkt geograficzny,
  • 48 dodatkowych bajtów na metadane ogólne.

Rozważmy przykład zdarzenia wstawienia dokumentu z identyfikatorem my_place w kolekcji places:

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

Łączny rozmiar wpisu indeksu geoprzestrzennego w polu location wynosi 192 bajty:

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

Co dalej?

Dowiedz się więcej o cenach Cloud Firestore.