Menghapus entity secara massal

Anda dapat menggunakan layanan penghapusan massal terkelola mode Datastore untuk menghapus data dari database. Fitur ini mendukung penghapusan terhadap satu atau beberapa jenis.

Halaman ini menjelaskan cara menghapus entity Firestore dalam mode Datastore secara massal menggunakan layanan penghapusan massal terkelola. Layanan penghapusan massal terkelola mode Datastore tersedia melalui alat command line gcloud dan API mode Datastore (REST, RPC).

Sebelum memulai

Sebelum dapat menggunakan layanan penghapusan massal terkelola, Anda harus menyelesaikan tugas-tugas berikut:

  1. Mengaktifkan penagihan untuk project Google Cloud Anda. Hanya project Google Cloud dengan penagihan aktif yang dapat menggunakan fungsi penghapusan massal.
  2. Pastikan akun Anda memiliki izin yang diperlukan untuk mode Datastore. Jika Anda adalah pemilik project, berarti akun Anda memiliki izin yang diperlukan. Jika tidak, peran berikut dapat memberikan izin yang diperlukan untuk operasi penghapusan massal:

    • Peran mode Datastore: Owner, Cloud Datastore Owner, atau Cloud Datastore Bulk Admin

Menyiapkan gcloud untuk project Anda

Anda dapat memulai operasi penghapusan massal melalui Konsol Google Cloud atau alat command line gcloud. Untuk menggunakan gcloud, siapkan alat command-line dan hubungkan ke project Anda dengan salah satu cara berikut:

Menghapus data secara massal

Pertama, operasi penghapusan massal akan menemukan semua entity yang berlaku di database Anda, lalu menghapusnya secara massal. Anda masih dapat membuat kueri atau membaca entitas ini, meskipun hasilnya mungkin bervariasi berdasarkan progres yang dibuat. Penghapusan massal tidak akan menghapus entitas yang ditambahkan atau diubah setelah operasi dimulai.

Menghapus jenis tertentu secara massal

gcloud

Untuk menghapus jenis tertentu secara massal, gunakan flag --collection-ids. Flag ini menggunakan terminologi Firestore, tetapi ID grup koleksi sama dengan ID jenis. Operasi ini hanya menghapus jenis dengan ID yang diberikan. Jenis mencakup semua entity dan entity bertingkat (di jalur mana pun) dengan jenis yang ditentukan.

gcloud beta firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]

Mengelola operasi penghapusan massal

Setelah Anda memulai operasi penghapusan massal, mode Datastore akan menetapkan nama unik untuk operasi tersebut. Anda dapat menggunakan nama operasi untuk menghapus, membatalkan, atau memeriksa status operasi.

Nama operasi diawali dengan projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, misalnya:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Namun, Anda dapat tidak menyertakan awalan saat menentukan nama operasi untuk perintah describe, cancel, dan delete.

Mencantumkan semua operasi penghapusan massal

gcloud

Gunakan perintah operations list untuk melihat semua operasi yang sedang berjalan dan baru selesai, termasuk operasi penghapusan massal:

gcloud firestore operations list

Memeriksa status operasi

gcloud

Gunakan perintah operations describe untuk menampilkan status operasi penghapusan massal.

gcloud firestore operations describe [OPERATION_NAME]

Memperkirakan waktu penyelesaian

Permintaan untuk status operasi yang berjalan lama akan menampilkan metrik workEstimated dan workCompleted. Setiap metrik tersebut ditampilkan baik dalam jumlah byte maupun jumlah entity:

  • workEstimated menampilkan estimasi total jumlah byte dan entity yang akan diproses oleh sebuah operasi. Mode datastore mungkin menghilangkan metrik ini jika tidak dapat membuat perkiraan.

  • workCompleted menunjukkan jumlah byte dan entity yang dihapus sejauh ini. Setelah operasi selesai, nilai akan menunjukkan jumlah total byte dan entity yang benar-benar diproses, dan mungkin lebih besar dari nilai workEstimated.

Bagilah workCompleted dengan workEstimated untuk mengetahui perkiraan kasar dari progresnya. Perkiraan ini mungkin tidak akurat karena tergantung pada koleksi statistik yang tertunda.

Membatalkan operasi

gcloud

Gunakan perintah operations cancel untuk menghentikan operasi yang sedang berlangsung:

gcloud firestore operations cancel [OPERATION_NAME]

Jika operasi yang sedang berjalan dibatalkan, operasi tersebut tidak akan diurungkan. Operasi penghapusan massal yang dibatalkan tidak akan memulihkan entitas yang dihapus.

Menghapus operasi

Gunakan perintah gcloud firestore operations delete untuk menghapus operasi yang telah selesai dari daftar operasi terbaru. Untuk membatalkan operasi yang sedang berjalan, gunakan operasi pembatalan sebelumnya.

gcloud firestore operations delete [OPERATION_NAME]

Penagihan dan harga untuk operasi penghapusan massal

Anda harus mengaktifkan penagihan untuk project Google Cloud sebelum menggunakan layanan penghapusan massal terkelola.

Operasi penghapusan massal dikenai biaya untuk pembacaan dan penghapusan entity sebesar tarif yang tercantum dalam harga mode Datastore. Operasi penghapusan massal menimbulkan satu entri indeks yang dibaca per entitas yang ditemukan dan satu operasi penghapusan per entitas yang dihapus. Anda dikenai biaya satu operasi baca untuk pembacaan hingga 1.000 entri indeks. Misalnya, untuk operasi penghapusan massal yang menghapus 1.500 entity, Anda akan ditagih dengan 2 pembacaan entity dan 1.500 penghapusan entity.

Perhatikan bahwa mode Datastore mengenakan biaya berdasarkan pekerjaan aktual yang dilakukan. Jika operasi dibatalkan atau gagal karena kesalahan pengguna, Anda akan ditagih berdasarkan progres yang telah dilakukan. Mode Datastore tidak akan mengenakan biaya baca atau hapus untuk entity yang pada akhirnya tidak dihapus (misalnya, entity yang diubah setelah operasi penghapusan dimulai). Biaya akan dibebankan pada hari penyelesaian operasi.

Operasi penghapusan massal tidak akan memicu pemberitahuan anggaran Google Cloud Anda hingga operasi selesai. Demikian pula, operasi baca dan hapus yang dilakukan selama operasi penghapusan massal akan diterapkan pada kuota/penggunaan gratis Anda setelah operasi selesai. Operasi penghapusan massal tidak akan memengaruhi penggunaan yang ditampilkan di bagian penggunaan konsol.

Melihat biaya penghapusan massal

Operasi penghapusan massal menerapkan label goog-firestoremanaged:bulkdelete ke operasi yang ditagih. Di halaman Cloud Billing reports, Anda dapat menggunakan label ini untuk melihat biaya yang terkait dengan operasi penghapusan massal.

Praktik terbaik

Hindari melewati data yang dihapus karena dapat memperlambat kueri.

Opsi lainnya

Dataflow adalah layanan terkelola untuk mengembangkan dan menjalankan alur kerja pemrosesan data yang juga dapat menghapus data secara massal. Dataflow menyediakan template penghapusan Datastore yang dapat Anda gunakan untuk menghapus entity yang dipilih oleh kueri GQL.

Untuk informasi selengkapnya, lihat Dokumentasi Dataflow tentang cara menjalankan template penghapusan massal Datastore.

Jika kasus penggunaan Anda melibatkan retensi data, lihat Mengelola retensi data dengan kebijakan TTL.