Halaman ini menjelaskan ukuran penyimpanan entity, kunci, properti, dan entri indeks di Firestore dalam mode Datastore. Anda dapat mempelajari biaya penyimpanan ini di Harga mode Datastore.
Ukuran string
Ukuran string dapat dihitung dengan menjumlahkan byte berenkode UTF-8 +1.
Hal-hal berikut ini disimpan sebagai string:
- Kunci
- Nama jenis
- Nama Namespace (namespace default memiliki ukuran 0)
- Nama properti
- Nilai properti string
Contoh:
- Nama jenis
Task
menggunakan 4 byte + 1 byte, dengan total 5 byte. - Nama properti
description
menggunakan 11 byte + 1 byte, dengan total 12 byte. - Nama namespace
my_name_space
menggunakan 13 byte + 1 byte, dengan total 14 byte.
Ukuran kunci
Ukuran kunci adalah jumlah dari
- Ukuran string namespace (jika tidak dalam namespace default)
- Ukuran string jalur kunci lengkap (masing-masing ID bilangan bulat adalah 8 byte)
- 16 byte
Untuk kunci jenis Task
di namespace default dengan ID numerik dan tidak ada
ancestor:
Task id:5730082031140864
Ukuran kunci adalah 5 + 8 + 16 = 29 byte:
- 5 byte untuk nama jenis
Task
- 8 byte untuk ID numerik
- 16 byte untuk kunci
Untuk kunci jenis Task
di namespace default dengan ID string dan tidak ada
ancestor:
Task name:my_task_id
Ukuran kunci adalah 5 + 11 + 16 = 32 byte:
- 5 byte untuk nama jenis
Task
- 11 byte untuk ID string
my_task_id
- 16 byte untuk kunci
Untuk entity Task
dengan ancestor TaskList
di namespace default:
TaskList id:5654313976201216 > Task id:5629499534213120
Ancestor menggunakan 9 + 8 = 17 byte:
- 9 byte untuk nama jenis
TaskList
- 8 byte untuk ID numerik
Jadi, ukuran kunci entity Task
dengan ancestor TaskList
menggunakan 17 + 5 + 8
+ 16 = 46 byte:
- 17 byte untuk ancestor
- 5 byte untuk nama jenis
Task
- 8 byte untuk ID numerik
- 16 byte untuk kunci
Jika entity ini berada dalam namespace my_name_space
, ukuran kuncinya adalah 14 + 46 = 60
byte, karena nama my_name_space
menggunakan 14 byte.
Ukuran properti
Ukuran properti adalah jumlah dari
- Ukuran string nama properti
- Ukuran nilai properti
Berikut ini ukuran nilai properti menurut jenisnya.
Jenis | Ukuran |
---|---|
Array | jumlah ukuran nilainya |
Blob | panjang byte |
Boolean | 1 byte |
Ganda | 8 byte |
Entity tersemat | ukuran entity |
Titik geografis | 16 byte |
Bilangan bulat | 8 byte |
Kunci | ukuran kunci |
Null | 1 byte |
String | jumlah byte berenkode UTF-8 + 1 |
Stempel waktu | 8 byte |
Misalnya, properti bernama done
dengan jenis Boolean akan menggunakan 6 byte:
- 5 byte untuk nama properti
done
- 1 byte untuk nilai Boolean
Ukuran entity
Ukuran entity adalah jumlah dari
- Ukuran kunci
- Jumlah ukuran properti
- 32 byte
Contoh ini adalah untuk entity jenis Task
di namespace default dengan
ID numerik dan tidak memiliki ancestor:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
Ukuran total properti adalah 78 byte:
Nama dan nilai properti | Ukuran properti dalam byte |
---|---|
"type": "Personal" |
14 5 untuk nama properti + 9 untuk nilai string properti |
"done": false |
6 5 untuk nama properti + 1 untuk nilai Boolean properti |
"priority": 1 |
17 9 untuk nama properti + 8 untuk nilai bilangan bulat properti |
"description": "Learn Google Cloud Datastore" |
41 12 untuk nama properti + 29 untuk nilai string properti |
Jadi, ukuran entitas adalah 29 + 78 + 32 = 139 byte:
- 29 byte untuk kunci
- 78 byte untuk properti
- 32 byte untuk entitas
Ukuran entri indeks
Ukuran entri indeks dihitung sebagai berikut untuk indeks bawaan dan komposit.
Indeks terpasang
Ukuran entri indeks bawaan adalah jumlah dari:
- Ukuran kunci dari entity yang diindeks
- Jumlah nama properti yang diindeks
- Jumlah nilai properti yang diindeks
- Ukuran nama jenis entity yang diindeks
- 32 byte
Misalnya, ambil entity jenis Task
di namespace default dengan
ID numerik dan tanpa ancestor:
Task id:5730082031140864 - "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Google Cloud Datastore"
Jika done
adalah properti yang diindeks, entri indeks bawaan untuk indeks done
properti tunggal terdiri dari kunci, nama dan nilai properti done
, nama jenis Task
, dan 32 byte untuk entri indeks. Ukuran total entri indeks ini adalah 72 byte:
- 29 untuk kunci
- 6 untuk nama properti
done
dan nilai Boolean - 5 untuk nama jenis
Task
- 32 untuk entri indeks
Secara default, database mode Datastore secara otomatis menetapkan dua indeks properti tunggal untuk setiap properti dari setiap jenis entity, satu dalam urutan menaik dan satu dalam urutan menurun. Jadi, entity ini akan memiliki entri indeks berukuran 72
byte dalam indeks done
properti tunggal dalam urutan menaik dan akan memiliki
entri indeks berukuran 72 byte dalam indeks done
properti tunggal dalam
urutan menurun.
Indeks komposit
Ukuran entri indeks komposit adalah jumlah dari:
- Ukuran kunci dari entity yang diindeks
- Jumlah nilai properti yang diindeks
- 32 byte
Misalnya, ambil entity jenis Task
di namespace default dengan
ID numerik dan tanpa ancestor:
indexes: - kind: Task properties: - name: done direction: asc - name: priority direction: asc
Pertimbangkan indeks gabungan yang menggunakan properti done
dan
priority
(keduanya dalam urutan menaik):
Ukuran total entri indeks dalam indeks ini adalah 70 byte:
- 29 untuk kunci
- 1 untuk nilai Boolean properti
done
- 8 untuk nilai bilangan bulat properti
priority
- 32 untuk entri indeks
Jika Anda tidak ingin Firestore dalam mode Datastore mempertahankan indeks untuk properti, kecualikan properti dari indeks Anda. Perhatikan bahwa mengecualikan properti akan menghapusnya dari indeks gabungan.
Langkah selanjutnya
- Pelajari Harga mode Datastore.
- Pelajari Indeks mode Datastore.