Membuat dan mengelola database

Halaman ini menjelaskan cara membuat, mengupdate, dan menghapus database Firestore dengan kompatibilitas MongoDB. Anda dapat membuat beberapa database Firestore per project. Anda dapat menggunakan beberapa database untuk menyiapkan lingkungan produksi dan pengujian, mengisolasi data pelanggan, serta untuk regionalisasi data.

Penggunaan paket gratis

Firestore menawarkan paket gratis yang memungkinkan Anda memulai tanpa biaya.

Paket gratis hanya berlaku untuk satu database Firestore per project. Database pertama yang dibuat dalam project tanpa database tingkat gratis akan mendapatkan tingkat gratis. Jika database dengan tingkat gratis yang diterapkan dihapus, database berikutnya yang dibuat akan menerima tingkat gratis.

Sebelum memulai

Anda harus menyelesaikan langkah-langkah berikut sebelum membuat database:

  1. Verify that billing is enabled for your Google Cloud project.

  2. Tetapkan peran Identity and Access Management yang sesuai seperti yang dijelaskan di bagian berikutnya.

Peran yang diperlukan

Untuk membuat dan mengelola database, Anda memerlukan peran Identity and Access Management Owner atau Datastore Owner. Peran ini memberikan izin yang diperlukan.

Izin yang diperlukan

Untuk mengelola database, Anda memerlukan izin berikut:

  • Membuat database: datastore.databases.create
  • Membaca konfigurasi database: datastore.databases.getMetadata
  • Mengonfigurasi database: datastore.databases.update
  • Menghapus database: datastore.databases.delete
  • Meng-clone database: datastore.databases.clone

Buat database

Untuk membuat database Firestore dengan kompatibilitas MongoDB, gunakan salah satu metode berikut:

Google Cloud console
  1. Di konsol Google Cloud , buka halaman Databases.

    Buka Databases

  2. Klik Create a Firestore Database.
  3. Masukkan ID database.
  4. Pilih Edisi Enterprise.
  5. Pilih lokasi untuk database Anda.
  6. (Opsional) Jika Anda perlu menyesuaikan enkripsi, klik Tampilkan Opsi Enkripsi dan konfigurasi opsi enkripsi.
  7. Klik Create database.
gcloud CLI

Gunakan perintah gcloud firestore databases create dan tetapkan --edition=enterprise.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

Ganti kode berikut:

Untuk mengaktifkan perlindungan penghapusan, tambahkan tanda --delete-protection. Anda tidak dapat menghapus database yang mengaktifkan perlindungan penghapusan hingga Anda menonaktifkan setelan ini. Setelan ini dinonaktifkan secara default.

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

Untuk menambahkan tag ke database, gunakan flag --tags. Contoh:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

Gunakan resource google_firestore_database dan tetapkan database_edition ke ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

Ganti kode berikut:

Untuk mengaktifkan perlindungan penghapusan, tetapkan delete_protection_state ke DELETE_PROTECTION_ENABLED. Anda tidak dapat menghapus database yang mengaktifkan perlindungan penghapusan kecuali jika Anda menonaktifkan setelan ini. Setelan ini dinonaktifkan secara default.

ID Database

ID database yang valid mencakup ID yang sesuai dengan hal berikut:

  • Hanya berisi karakter huruf, angka, dan tanda hubung (-).
  • Huruf harus berupa huruf kecil.
  • Karakter pertama harus berupa huruf.
  • Karakter terakhir harus berupa huruf atau angka.
  • Minimum 4 karakter.
  • Maksimum 63 karakter.
  • Tidak boleh berupa UUID atau menyerupai UUID. Misalnya, jangan gunakan ID seperti f47ac10b-58cc-0372-8567-0e02b2c3d479.

Jika menghapus database, Anda tidak dapat langsung menggunakan kembali ID database hingga 5 menit.

Menghapus perlindungan

Gunakan perlindungan penghapusan untuk mencegah penghapusan database secara tidak sengaja. Perlindungan penghapusan berfungsi dengan cara berikut:

  • Anda tidak dapat menghapus database yang mengaktifkan perlindungan penghapusan kecuali jika Anda menonaktifkan perlindungan penghapusan.
  • Perlindungan penghapusan dinonaktifkan secara default.
  • Anda dapat mengaktifkan perlindungan penghapusan saat membuat database atau memperbarui konfigurasi database untuk mengaktifkan perlindungan penghapusan.

Mencantumkan database

Gunakan salah satu metode berikut untuk mencantumkan database Anda:

Konsol

Di konsol Google Cloud , buka halaman Databases.

Buka Databases

gcloud CLI

Gunakan perintah gcloud firestore databases list untuk mencantumkan semua database di project Anda.

gcloud firestore databases list

Melihat detail database

Untuk melihat detail tentang satu database, gunakan salah satu metode berikut:

Konsol
  1. Di konsol Google Cloud , buka halaman Databases.

    Buka Databases

  2. Pilih database dari daftar database.
gcloud CLI

Gunakan perintah gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

Ganti DATABASE_ID dengan ID database.

Memperbarui konfigurasi database

Untuk memperbarui setelan konfigurasi database, gunakan perintah gcloud firestore databases update.

Gunakan perintah ini untuk mengubah, mengaktifkan, atau menonaktifkan perlindungan penghapusan.

Memperbarui setelan perlindungan penghapusan

Untuk mengaktifkan perlindungan penghapusan di database, gunakan perintah gcloud firestore databases update dengan flag --delete-protection. Contoh:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection

Ganti DATABASE_ID dengan ID database.

Untuk menonaktifkan perlindungan penghapusan di database, gunakan perintah gcloud firestore databases update dengan flag --no-delete-protection. Contoh:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

Ganti DATABASE_ID dengan ID database.

Menghapus database

Untuk menghapus database, gunakan konsol atau alat command line. Menghapus database untuk operasi penghapusan tidak dikenai biaya.

Jika setelan perlindungan penghapusan database diaktifkan, Anda harus menonaktifkan perlindungan penghapusan terlebih dahulu.

Google Cloud console
  1. Di konsol Google Cloud , buka halaman Databases.

    Buka Databases

  2. Klik View more di kolom Actions untuk database yang ingin Anda hapus. Klik Hapus. Dialog akan muncul.
  3. Pada dialog Delete database?, konfirmasi penghapusan dengan mengetikkan ID database di kolom teks. Klik Delete. Konsol akan memberi tahu Anda apakah operasi berhasil atau gagal.

    Jika operasi gagal, lihat detail database dan pastikan perlindungan penghapusan dinonaktifkan. Untuk menonaktifkan perlindungan penghapusan, lihat bagian Memperbarui setelan perlindungan penghapusan.

gcloud CLI

Gunakan perintah `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Ganti DATABASE_ID dengan ID database yang akan dihapus.

Meng-clone database

Anda dapat meng-clone database yang ada pada stempel waktu yang dipilih ke database baru:

  • Database yang di-clone adalah database baru yang akan dibuat di lokasi yang sama dengan database sumber.

    Untuk membuat clone, Firestore menggunakan data pemulihan point-in-time (PITR) dari database sumber. Database yang di-clone mencakup semua data dan indeks.

  • Secara default, database yang di-clone akan dienkripsi dengan cara yang sama seperti database sumber, menggunakan enkripsi default Google atau enkripsi CMEK. Anda dapat menentukan jenis enkripsi yang berbeda atau menggunakan kunci yang berbeda untuk enkripsi CMEK.

  • Stempel waktu memiliki perincian satu menit dan menentukan titik waktu di masa lalu, dalam periode yang ditentukan oleh interval PITR:

    • Jika PITR diaktifkan untuk database Anda, Anda dapat memilih menit mana saja dalam 7 hari terakhir (atau kurang jika PITR diaktifkan kurang dari 7 hari yang lalu).
    • Jika PITR tidak diaktifkan, Anda dapat memilih menit mana pun dalam satu jam terakhir.
    • Anda dapat memeriksa stempel waktu paling awal yang dapat Anda pilih dalam deskripsi database Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman Databases.

    Buka Databases

  2. Klik View more di baris tabel untuk database yang ingin Anda clone. Klik Clone. Dialog Buat clone akan muncul.

  3. Pada dialog Buat clone, berikan parameter untuk meng-clone database:

    1. Di kolom Beri ID pada clone, masukkan ID database untuk database baru yang di-clone. ID database ini tidak boleh dikaitkan dengan database yang sudah ada.

    2. Di kolom Clone dari, pilih titik waktu yang akan digunakan untuk cloning. Waktu yang dipilih sesuai dengan stempel waktu PITR, pada tingkat perincian menit.

  4. Klik Buat clone.

gcloud

Gunakan perintah gcloud alpha firestore databases clone untuk meng-clone database:

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

Ganti kode berikut:

  • SOURCE_DATABASE_ID: ID database dari database yang ada yang ingin Anda clone.

  • PITR_TIMESTAMP: stempel waktu PITR dalam format RFC 3339, pada tingkat perincian menit. Misalnya: 2025-06-01T10:20:00.00Z atau 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: ID database untuk database baru yang dikloning. ID database ini tidak boleh dikaitkan dengan database yang ada.

Contoh:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

Mengubah konfigurasi enkripsi database yang di-clone

Secara default, database yang di-clone akan memiliki konfigurasi enkripsi yang sama dengan database sumber. Untuk mengubah konfigurasi enkripsi, gunakan argumen --encryption-type:

  • (Default) use-source-encryption: menggunakan konfigurasi enkripsi yang sama dengan database sumber.
  • google-default-encryption: menggunakan enkripsi default Google.
  • customer-managed-encryption: menggunakan enkripsi CMEK. Tentukan ID kunci dalam argumen --kms-key-name.

Contoh berikut menunjukkan cara mengonfigurasi enkripsi CMEK untuk database yang di-clone:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

Mengonfigurasi izin akses per database

Anda dapat menggunakan Identity and Access Management Conditions untuk mengonfigurasi izin akses di tingkat per database. Contoh berikut menggunakan Google Cloud CLI guna menetapkan akses kondisional untuk satu atau beberapa database. Anda juga dapat menetapkan kondisi IAM di Google Cloud konsol.

Melihat kebijakan IAM yang ada

gcloud projects get-iam-policy PROJECT_ID

Tetapkan PROJECT_ID ke project ID Anda.

Memberikan akses ke database

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

Tetapkan berikut ini:

  • PROJECT_ID: project ID Anda
  • EMAIL: alamat email yang mewakili akun tertentu. Contoh, alice@example.com.
  • DATABASE_ID: ID database.
  • TITLE: judul ekspresi opsional.
  • DESCRIPTION: deskripsi ekspresi opsional.

Mengecualikan akses ke satu database tertentu

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

Tetapkan berikut ini:

  • PROJECT_ID: project ID Anda
  • EMAIL: alamat email yang mewakili akun tertentu. Contoh, alice@example.com.
  • DATABASE_ID: ID database.
  • TITLE: judul ekspresi opsional.
  • DESCRIPTION: deskripsi ekspresi opsional.

Menghapus kebijakan untuk anggota dan peran tertentu

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

Tetapkan berikut ini:

  • PROJECT_ID: project ID Anda
  • EMAIL: alamat email yang mewakili akun tertentu. Contoh, alice@example.com.

Batasan

Anda dapat memiliki maksimum 100 database per project. Anda dapat menghubungi dukungan untuk meminta peningkatan batas ini.

Langkah berikutnya