Perhitungan Ukuran Penyimpanan

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

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:

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