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
- Ukuran string namespace (jika tidak dalam namespace default)
- Ukuran string jalur kunci lengkap (ID bilangan bulat masing-masing 8 byte)
- 16 byte
Untuk kunci jenis Task
dalam namespace default dengan ID numerik dan tanpa 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 sebuah kunci
Untuk kunci jenis Task
dalam namespace default dengan ID string dan tanpa 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 sebuah kunci
Untuk entity Task
dengan ancestor TaskList
dalam 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 sebuah kunci
Jika entity ini berada dalam namespace my_name_space
, ukuran kunci adalah 14 + 46 = 60
byte, karena nama my_name_space
menggunakan 14 byte.
Ukuran properti
Ukuran properti adalah jumlah
- Ukuran string nama properti
- Ukuran nilai properti
Tabel berikut menunjukkan ukuran nilai properti berdasarkan jenis.
Jenis | Ukuran |
---|---|
Array | jumlah ukuran nilainya |
Blob | panjang byte |
Boolean | 1 byte |
Ganda | 8 byte |
Entity tersemat | ukuran entitas |
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 entitas
Ukuran suatu entitas adalah jumlah dari
- Ukuran kunci
- Jumlah ukuran properti
- 32 byte
Contoh ini ditujukan untuk entity jenis Task
dalam namespace default dengan ID numerik dan tanpa 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 entity adalah 29 + 78 + 32 = 139 byte:
- 29 byte untuk kunci
- 78 byte untuk properti
- 32 byte untuk satu entity
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 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 otomatis menentukan 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 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 komposit yang menggunakan properti done
dan
priority
(keduanya 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 tersebut dari indeks Anda. Perhatikan bahwa mengecualikan properti akan menghapusnya dari indeks komposit.
Langkah selanjutnya
- Pelajari Harga mode Datastore.
- Pelajari Indeks mode Datastore.