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
taskszajmuje 5 bajtów + 1 bajt, czyli łącznie 6 bajtów. - Nazwa pola
descriptionzajmuje 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:
- rozmiaru ciągu znaków nazwy kolekcji,
- sumy rozmiarów ciągów znaków każdej nazwy pola (z wyjątkiem
_id), - sumy rozmiarów każdej wartości pola (w tym
_id), - 48 dodatkowych bajtów.
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:
- rozmiaru ciągu znaków nazwy kolekcji,
- rozmiaru wartości pola
_id, - sumy wartości pól indeksowanych wartości pól
- 48 dodatkowych bajtów.
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:
- sumy rozmiarów ciągów znaków każdej nazwy pola w
fullDocumentlubupdateDescription(z wyjątkiem_id). - sumy rozmiarów każdej wartości pola w
fullDocumentlubupdateDescription. (w tym_id).
- sumy rozmiarów ciągów znaków każdej nazwy pola w
- Jeśli dotyczy to transakcji obejmujących wiele dokumentów, dodatkowe 24 bajty na
lsiditxnNumber. - 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
descriptionx 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.