Penghitungan ukuran penyimpanan
Halaman ini menjelaskan ukuran penyimpanan dokumen, kolom, dan entri indeks di Firestore dengan kompatibilitas MongoDB.
Anda dapat mempelajari biaya penyimpanan ini di halaman Harga.
Ukuran string
Ukuran string dapat dihitung dengan menjumlahkan byte berenkode UTF-8 +1.
Hal-hal berikut ini disimpan sebagai string:
- Nama koleksi
- Nama kolom
- Nilai kolom string (termasuk
_id)
Contoh:
- Nama koleksi
tasksmenggunakan 5 byte + 1 byte, untuk total 6 byte. - Nama kolom
descriptionmenggunakan 11 byte + 1 byte, untuk total 12 byte.
Ukuran nilai kolom
Tabel berikut menunjukkan ukuran nilai kolom menurut jenisnya.
| Jenis | Ukuran |
|---|---|
| Array | Jumlah ukuran nilainya |
| Boolean | 1 byte |
| Data biner | Panjang byte + 1 untuk subjenis non-generik (non-0) |
| Tanggal | 8 byte |
| Ganda | 8 byte |
| Double128 | 16 byte |
| Bilangan bulat 32-bit | 4 byte |
| Bilangan bulat 64-bit (long) | 8 byte |
| Objek | Jumlah ukuran string setiap nama kolom dan ukuran setiap nilai kolom dalam objek sematan |
| Min Key | 1 byte |
| Max Key | 1 byte |
| Null | 1 byte |
| Ekspresi reguler | (Panjang pola + 1) + (Panjang opsi + 1) |
| Stempel waktu | 8 byte |
| String | Jumlah byte berenkode UTF-8 + 1 |
Misalnya, kolom (logika) boolean bernama done akan menggunakan 6 byte:
- 5 byte untuk nama kolom
done - 1 byte untuk nilai boolean
Ukuran dokumen
Ukuran dokumen merupakan jumlah dari:
- Ukuran string pada nama koleksi
- Jumlah ukuran string dari setiap nama kolom (kecuali
_id) - Jumlah ukuran setiap nilai kolom (termasuk
_id) - 48 byte tambahan
Contoh ini adalah untuk dokumen dalam koleksi tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
Ukuran total kolom adalah 78 byte:
| Nama dan nilai kolom | Ukuran kolom dalam satuan byte |
|---|---|
"_id": "my_task_id" |
11 untuk nilai string kolom |
"type": "Personal" |
14 5 untuk nama kolom + 9 untuk nilai string kolom |
"done": false |
6 5 untuk nama kolom + 1 untuk nilai (logika) boolean kolom |
"priority": 1 |
17 9 untuk nama kolom + 4 untuk nilai bilangan bulat 32-bit kolom |
"description": "Learn Cloud Firestore" |
34 12 untuk nama kolom + 22 untuk nilai string kolom |
Dengan begitu, ukuran dokumennya adalah 6 + 78 + 48 = 132 byte:
- 6 untuk nama koleksi
- 78 byte untuk kolom
- 48 byte tambahan
Ukuran entri indeks
Ukuran entri indeks dalam indeks adalah jumlah dari:
- Ukuran string pada nama koleksi
- Ukuran nilai kolom
_id - Jumlah nilai kolom yang diindeks
- 48 byte tambahan
Pertimbangkan dokumen dalam koleksi tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
Untuk indeks pada kolom done dan
priority (keduanya menaik), ukuran total entri indeks dalam
indeks ini adalah 70 byte:
- 6 byte untuk nama koleksi
tasks - 11 byte untuk nilai kolom
_id - 1 byte untuk nilai kolom (logika) boolean
- 4 byte untuk nilai kolom bilangan bulat 32-bit
- 48 byte tambahan
Untuk indeks sparse, jika dokumen tidak menyertakan kolom apa pun,
maka tidak ada entri indeks yang dibuat. Jika dokumen berisi setidaknya satu
kolom yang diindeks, entri indeks yang dibuat dengan kolom indeks yang tidak ada
ditetapkan ke NULL.
Mengubah ukuran entri peristiwa streaming
Ukuran peristiwa aliran perubahan adalah total dari:
- Jumlah ukuran string pada nama koleksi (x2).
- Untuk peristiwa penyisipan dan update dokumen:
- Jumlah ukuran string dari setiap nama kolom dalam
fullDocumentatauupdateDescription(kecuali_id). - Jumlah ukuran setiap nilai kolom dalam
fullDocumentatauupdateDescription. (termasuk_id).
- Jumlah ukuran string dari setiap nama kolom dalam
- Jika berlaku untuk transaksi multi-dokumen, tambahan
24 byte untuk
lsiddantxnNumber. - 92 byte tambahan
Pertimbangkan contoh untuk peristiwa penyisipan dokumen dalam koleksi tugas:
{
"_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"
},
}
Ukuran total peristiwa aliran perubahan adalah 149 byte:
- 92 byte untuk metadata umum
- 12 byte berdasarkan nama koleksi
tasks(6 byte) * 2 - 11 byte untuk nilai kolom
_id - 12 byte untuk nama kolom
description - 22 byte untuk nilai kolom
description
Ukuran entri indeks penelusuran teks
Ukuran entri indeks penelusuran teks dalam indeks adalah jumlah dari:
- Ukuran string nama koleksi
- Ukuran nilai
_id - Jumlah byte dari nilai kolom terindeks (x2)
- 48 byte tambahan untuk metadata umum
Pertimbangkan contoh untuk peristiwa penyisipan dokumen dengan _id my_task_id
dalam koleksi tasks:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Ukuran total entri indeks penelusuran teks pada description adalah 105 byte
berdasarkan:
- 6 byte untuk nama koleksi
tasks - 11 byte untuk nilai
_id - 44 byte, berdasarkan 22 byte untuk kolom
descriptionx2 - 48 byte tambahan untuk metadata umum
Ukuran entri indeks geospasial
Ukuran entri indeks geospasial dalam indeks adalah jumlah dari:
- Ukuran string nama koleksi
- Ukuran nilai
_id - 128 byte untuk setiap titik geo yang diindeks
- 48 byte tambahan untuk metadata umum
Pertimbangkan contoh untuk peristiwa penyisipan dokumen dengan _id my_place
dalam koleksi places:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Ukuran total entri indeks geospasial pada location adalah
192 byte berdasarkan:
- 7 byte untuk nama koleksi
places - 9 byte untuk ID dokumen
- 128 byte untuk kolom
location - 48 byte tambahan untuk metadata umum
Langkah berikutnya
Pelajari harga