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

  • 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

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:

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