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 formacie UTF-8 + 1.

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

  • Nazwa kolekcji
  • Nazwy pól
  • Wartości pól typu ciąg znaków (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 rozmiary wartości pól według typu.

Typ Rozmiar
Tablica suma rozmiarów 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
32-bitowa liczba całkowita 4 bajty
64-bitowa liczba całkowita (long) 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 umieszczonym obiekcie.
Klucz minimalny 1 bajt
Tryb maksymalny klucza 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 formacie UTF-8 + 1

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 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ść ciągu znaków pola,
"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 + 4 za 32-bitową liczbę całkowitą wartości pola
"description": "Learn Cloud Firestore" 34
12 za nazwę pola + 22 za wartość ciągu pola

Rozmiar dokumentu wynosi więc 6 + 78 + 48 = 132 bajty:

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

Rozmiar wpisu indeksu

Rozmiar wpisu w indeksie jest sumą:

Rozważmy dokument w kolekcji tasks:

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

W przypadku indeksu pól 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 32-bitowej liczby całkowitej,
  • 48 dodatkowych bajtów

W przypadku indeksów rozproszonych, jeśli dokument nie zawiera żadnego z pól, wpis indeksu nie jest tworzony. Jeśli dokument zawiera co najmniej 1 z indeksowanych pól, tworzony jest wpis indeksu, w którym brakujące indeksowane pola są ustawione na NULL.

Rozmiar wpisu zdarzenia strumienia zmian

Rozmiar zdarzenia strumienia zmian to suma:

  • Suma rozmiaru ciągu tekstowego 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ól w fullDocument lub updateDescription. (w tym _id).
  • W przypadku transakcji obejmujących wiele dokumentów – dodatkowe 24 bajty na lsid i txnNumber.
  • 92 dodatkowe bajty

Rozważmy przykład zdarzenia wstawienia dokumentu w 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 tekstu

Rozmiar wpisu indeksu wyszukiwania tekstowego w indeksie jest sumą:

  • Rozmiar ciągu tekstowego nazwy kolekcji
  • Rozmiar wartości _id
  • 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 z _id my_task_id w kolekcji tasks:

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

Łą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ść _id,
  • 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 _id
  • 128 bajtów na każdy zindeksowany punkt geograficzny
  • 48 dodatkowych bajtów na ogólne metadane.

Rozważmy przykład zdarzenia wstawienia 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 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.