Penghitungan ukuran penyimpanan

Halaman ini menjelaskan ukuran penyimpanan dokumen, kolom, dan entri indeks di Firestore dengan kompatibilitas MongoDB.

Anda dapat mempelajari biaya penyimpanan ini di halaman Harga.

Ukuran string

Ukuran string dapat dihitung dengan menjumlahkan byte berenkode UTF-8 +1.

Hal-hal berikut ini disimpan sebagai string:

  • Nama koleksi
  • Nama kolom
  • Nilai kolom string (termasuk _id)

Contoh:

  • Nama koleksi tasks menggunakan 5 byte + 1 byte, untuk total 6 byte.
  • Nama kolom description menggunakan 11 byte + 1 byte, untuk total 12 byte.

Ukuran nilai kolom

Tabel berikut menunjukkan ukuran nilai kolom menurut jenisnya.

Jenis Ukuran
Array Jumlah ukuran nilainya
Boolean 1 byte
Data biner Panjang byte + 1 untuk subjenis non-generik (non-0)
Tanggal 8 byte
Ganda 8 byte
Double128 16 byte
Bilangan bulat 32-bit 4 byte
Bilangan bulat 64-bit (long) 8 byte
Objek Jumlah ukuran string setiap nama kolom dan ukuran setiap nilai kolom dalam objek sematan
Min Key 1 byte
Max Key 1 byte
Null 1 byte
Ekspresi reguler (Panjang pola + 1) + (Panjang opsi + 1)
Stempel waktu 8 byte
String Jumlah byte berenkode UTF-8 + 1

Misalnya, kolom (logika) boolean bernama done akan menggunakan 6 byte:

  • 5 byte untuk nama kolom done
  • 1 byte untuk nilai boolean

Ukuran dokumen

Ukuran dokumen merupakan jumlah dari:

Contoh ini adalah untuk dokumen dalam koleksi tasks:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

Ukuran total kolom adalah 78 byte:

Nama dan nilai kolom Ukuran kolom dalam satuan byte
"_id": "my_task_id" 11 untuk nilai string kolom
"type": "Personal" 14
5 untuk nama kolom + 9 untuk nilai string kolom
"done": false 6
5 untuk nama kolom + 1 untuk nilai (logika) boolean kolom
"priority": 1 17
9 untuk nama kolom + 4 untuk nilai bilangan bulat 32-bit kolom
"description": "Learn Cloud Firestore" 34
12 untuk nama kolom + 22 untuk nilai string kolom

Dengan begitu, ukuran dokumennya adalah 6 + 78 + 48 = 132 byte:

  • 6 untuk nama koleksi
  • 78 byte untuk kolom
  • 48 byte tambahan

Ukuran entri indeks

Ukuran entri indeks dalam indeks adalah jumlah dari:

Pertimbangkan dokumen dalam koleksi tasks:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

Untuk indeks pada kolom done dan priority (keduanya menaik), ukuran total entri indeks dalam indeks ini adalah 70 byte:

  • 6 byte untuk nama koleksi tasks
  • 11 byte untuk nilai kolom _id
  • 1 byte untuk nilai kolom (logika) boolean
  • 4 byte untuk nilai kolom bilangan bulat 32-bit
  • 48 byte tambahan

Untuk indeks sparse, jika dokumen tidak menyertakan kolom apa pun, maka tidak ada entri indeks yang dibuat. Jika dokumen berisi setidaknya satu kolom yang diindeks, entri indeks yang dibuat dengan kolom indeks yang tidak ada ditetapkan ke NULL.

Mengubah ukuran entri peristiwa streaming

Ukuran peristiwa aliran perubahan adalah total dari:

  • Jumlah ukuran string pada nama koleksi (x2).
  • Untuk peristiwa penyisipan dan update dokumen:
    • Jumlah ukuran string dari setiap nama kolom dalam fullDocument atau updateDescription (kecuali _id).
    • Jumlah ukuran setiap nilai kolom dalam fullDocument atau updateDescription. (termasuk _id).
  • Jika berlaku untuk transaksi multi-dokumen, tambahan 24 byte untuk lsid dan txnNumber.
  • 92 byte tambahan

Pertimbangkan contoh untuk peristiwa penyisipan dokumen dalam koleksi tugas:

{
  "_id": { <Resume Token> },
  "operationType": "insert",
  "clusterTime": <Timestamp>,
  "wallTime": <ISODate>,
  "ns": {
     "db": "db",
     "coll": "tasks"
  },
  "documentKey": {
     "_id": "my_task_id"
  },
  "fullDocument": {
     "_id": "my_task_id",
     "description": "Learn Cloud Firestore"
  },
}

Ukuran total peristiwa aliran perubahan adalah 149 byte:

  • 92 byte untuk metadata umum
  • 12 byte berdasarkan nama koleksi tasks (6 byte) * 2
  • 11 byte untuk nilai kolom _id
  • 12 byte untuk nama kolom description
  • 22 byte untuk nilai kolom description

Ukuran entri indeks penelusuran teks

Ukuran entri indeks penelusuran teks dalam indeks adalah jumlah dari:

  • Ukuran string nama koleksi
  • Ukuran nilai _id
  • Jumlah byte dari nilai kolom terindeks (x2)
  • 48 byte tambahan untuk metadata umum

Pertimbangkan contoh untuk peristiwa penyisipan dokumen dengan _id my_task_id dalam koleksi tasks:

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

Ukuran total entri indeks penelusuran teks pada description adalah 105 byte berdasarkan:

  • 6 byte untuk nama koleksi tasks
  • 11 byte untuk nilai _id
  • 44 byte, berdasarkan 22 byte untuk kolom description x2
  • 48 byte tambahan untuk metadata umum

Ukuran entri indeks geospasial

Ukuran entri indeks geospasial dalam indeks adalah jumlah dari:

  • Ukuran string nama koleksi
  • Ukuran nilai _id
  • 128 byte untuk setiap titik geo yang diindeks
  • 48 byte tambahan untuk metadata umum

Pertimbangkan contoh untuk peristiwa penyisipan dokumen dengan _id my_place dalam koleksi places:

{
    "_id": "my_place",
     "type": "Restaurant",
     "visited": false,
     "priority": 1,
     "location": GeoPoint(longitude, latitude)
}

Ukuran total entri indeks geospasial pada location adalah 192 byte berdasarkan:

  • 7 byte untuk nama koleksi places
  • 9 byte untuk ID dokumen
  • 128 byte untuk kolom location
  • 48 byte tambahan untuk metadata umum

Langkah berikutnya

Pelajari harga