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 disimpan sebagai string:
- Kunci
 - Nama jenis
 - Nama namespace (namespace default memiliki ukuran 0)
 - Nama properti
 - Nilai properti string
 
Contoh:
- Nama jenis 
Taskmenggunakan 4 byte + 1 byte, dengan total 5 byte. - Nama properti 
descriptionmenggunakan 11 byte + 1 byte, dengan total 12 byte. - Nama namespace 
my_name_spacemenggunakan 13 byte + 1 byte, dengan total 14 byte. 
Ukuran kunci
Ukuran kunci adalah jumlah dari
- Ukuran string namespace (jika tidak berada 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 
donedan 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: ascPertimbangkan 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.