Ilość miejsca na dane

Na tej stronie opisujemy rozmiar miejsca na dane zajmowanego przez dokumenty, pola i wpisy indeksu w Cloud Firestore.

Więcej informacji o kosztach tego miejsca na dane znajdziesz na stronie Cennik.

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:

  • 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 znajdziesz rozmiar wartości pola według typu.

Typ Rozmiar
Tablica Suma rozmiarów jej 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 osadzonym
Min Key 1 bajt
Max Key 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 na wartość tekstową pola
"type": "Personal" 14
5 na nazwę pola + 9 na wartość tekstową pola
"done": false 6
5 na nazwę pola + 1 na wartość logiczną pola
"priority": 1 17
9 na nazwę pola + 4 na wartość liczbową pola (liczba całkowita 32-bitowa)
"description": "Learn Cloud Firestore" 34
12 na nazwę pola + 22 na wartość tekstową pola

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

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

Rozmiar wpisu indeksu

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 done i priority (oba rosnąco) łączny rozmiar wpisu indeksu w tym indeksie wynosi 70 bajtów:

  • 6 bajtów na nazwę kolekcji tasks
  • 11 bajtów na wartość pola _id
  • 1 bajt na wartość pola logicznego
  • 4 bajty na wartość pola liczbowego (liczba całkowita 32-bitowa)
  • 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 z pól indeksowanych, tworzony jest wpis indeksu, w którym nieobecne pola indeksowane są ustawione na NULL.

Rozmiar wpisu zdarzenia strumienia zmian

Rozmiar zdarzenia strumienia zmian to suma:

  • sumy rozmiarów ciągów znaków nazwy kolekcji (x2).
  • W przypadku zdarzeń wstawiania i aktualizowania dokumentu:
  • Jeśli dotyczy to transakcji obejmujących wiele dokumentów, dodatkowe 24 bajty na lsid i txnNumber.
  • 92 dodatkowe bajty.

Rozważmy przykład zdarzenia wstawiania dokumentu w kolekcji tasks:

{
  "_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 to 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 indeksu wyszukiwania tekstu

Rozmiar wpisu indeksu wyszukiwania tekstu w indeksie to suma:

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

Rozważmy przykład zdarzenia wstawiania dokumentu z _id my_task_id w kolekcji tasks:

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

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

  • 6 bajtów na nazwę kolekcji tasks
  • 11 bajtów na wartość _id
  • 44 bajtów na podstawie 22 bajtów na pole description x 2
  • 48 dodatkowych bajtów na ogólne metadane

Rozmiar wpisu indeksu geoprzestrzennego

Rozmiar wpisu indeksu geoprzestrzennego w indeksie to suma:

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

Rozważmy przykład zdarzenia wstawiania dokumentu z _id my_place w kolekcji places:

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

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

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

Co dalej?

Więcej informacji o cenach.