Ilość miejsca na dane

Na tej stronie opisujemy rozmiar pamięci dokumentów, pól i wpisów indeksu w Cloud Firestore.

Informacje o kosztach tego miejsca znajdziesz na stronie Cennik.

Rozmiar ciągu znaków

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

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

  • Nazwa kolekcji
  • Nazwy pól
  • Wartości pól tekstowych (w tym _id)

Przykład:

  • Nazwa 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 wartości pola

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

Typ Rozmiar
Tablica suma rozmiarów jego wartości,
Wartość logiczna 1 bajt
Dane binarne Długość w bajtach + 1 w przypadku podtypu innego niż ogólny (innego niż 0)
Data 8 bajtów
Liczba zmiennoprzecinkowa 8 bajtów
Double128 16 bajtów
Liczba całkowita 32-bitowa 4 bajty
Liczba całkowita 64-bitowa (długa) 8 bajtów
Obiekt Suma rozmiarów ciągów znaków każdej nazwy pola i rozmiarów każdej wartości pola w obiekcie zagnieżdżonym.
Klucz min 1 bajt
Maksymalny klucz 1 bajt
Null 1 bajt
Wyrażenie regularne (Długość wzorca + 1) + (Długość opcji + 1)
Sygnatura czasowa 8 bajtów
Ciąg znaków Liczba bajtów zakodowanych w UTF-8 + 1

Na przykład pole logiczne o nazwie done zajmuje 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 kolekcji tasks:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

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

Nazwa i wartość pola Rozmiar pola w bajtach
"_id": "my_task_id" 11 – wartość tekstowa pola
"type": "Personal" 14
5 znaków na nazwę pola + 9 znaków na wartość tekstową pola
"done": false 6
5 znaków na nazwę pola + 1 znak na wartość logiczną pola
"priority": 1 17
9 znaków na nazwę pola + 4 znaki na 32-bitową wartość całkowitą pola
"description": "Learn Cloud Firestore" 34
12 w przypadku nazwy pola + 22 w przypadku wartości ciągu znaków pola

Rozmiar dokumentu to 6 + 78 + 48 = 132 bajty:

  • 6 za nazwę kolekcji
  • 78 bajtów na pola
  • 48 dodatkowych bajtów

Rozmiar wpisu w indeksie

Rozmiar wpisu indeksu w indeksie to suma:

Rozważmy dokument w kolekcji tasks:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

W przypadku indeksu w polach donepriority (oba w kolejności rosnącej) łączny rozmiar wpisu indeksu w tym indeksie wynosi 70 bajtów:

  • 6 bajtów na nazwę kolekcjitasks
  • 11 bajtów na wartość pola _id
  • 1 bajt na wartość pola logicznego
  • 4 bajty na wartość pola liczby całkowitej 32-bitowej
  • 48 dodatkowych bajtów

W przypadku indeksów rzadkich, jeśli dokument nie zawiera żadnego z pól, nie jest tworzony żaden wpis indeksu. Jeśli dokument zawiera co najmniej 1 zindeksowane pole, tworzony jest wpis indeksu, w którym brakujące zindeksowane pola mają wartość NULL.

Zmiana rozmiaru wpisu zdarzenia strumienia

Rozmiar zdarzenia strumienia zmian to suma:

  • Suma rozmiaru ciągu znaków nazwy kolekcji (x2).
  • W przypadku zdarzeń wstawiania i aktualizowania dokumentu:
    • Suma rozmiaru ciągu znaków każdej nazwy pola w fullDocument lub updateDescription (z wyjątkiem _id).
    • Suma rozmiarów poszczególnych wartości pólfullDocument lub updateDescription. (w tym _id).
  • W przypadku transakcji obejmujących wiele dokumentów dodatkowe 24 bajty na znaki lsidtxnNumber.
  • 92 dodatkowe bajty

Rozważmy przykład zdarzenia wstawiania dokumentu do kolekcji zadań:

{
  "_id": { <Resume Token> },
  "operationType": "insert",
  "clusterTime": <Timestamp>,
  "wallTime": <ISODate>,
  "ns": {
     "db": "db",
     "coll": "tasks"
  },
  "documentKey": {
     "_id": "my_task_id"
  },
  "fullDocument": {
     "_id": "my_task_id",
     "description": "Learn Cloud Firestore"
  },
}

Łączny rozmiar zdarzenia strumienia zmian wynosi 149 bajtów:

  • 92 bajty na ogólne metadane,
  • 12 bajtów na podstawie nazwy kolekcji tasks (6 bajtów) * 2
  • 11 bajtów na wartość pola _id
  • 12 bajtów na nazwę pola description
  • 22 bajty na wartość pola description

Rozmiar wpisu w indeksie wyszukiwania tekstowego

Rozmiar wpisu w indeksie wyszukiwania tekstowego w indeksie to suma:

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

Rozważmy przykład zdarzenia wstawiania dokumentu z _id my_task_idtasks kolekcji:

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

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

  • 6 bajtów na nazwę kolekcjitasks
  • 11 bajtów na wartość _id
  • 44 bajty, na podstawie 22 bajtów w przypadku pola description x 2
  • 48 dodatkowych bajtów na metadane ogólne.

Rozmiar wpisu indeksu geoprzestrzennego

Rozmiar wpisu indeksu geoprzestrzennego w indeksie to suma:

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

Rozważmy przykład zdarzenia wstawiania dokumentu z _id my_placeplaces kolekcji:

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

Łączny rozmiar wpisu indeksu geoprzestrzennego w location wynosi 192 bajty na podstawie tych danych:

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

Co dalej?

Dowiedz się więcej o cenach.