Penghapusan
Dokumen ini menjelaskan cara menghapus data yang disimpan di tabel Bigtable, membahas kapan Anda harus menggunakan setiap pendekatan, dan memberikan contoh. Sebelum membaca halaman ini, Anda harus sudah memahami ringkasan Bigtable dan memahami konsep yang terlibat dalam desain skema.
Agar konsisten, deskripsi pada halaman ini merujuk ke metode API yang digunakan untuk setiap jenis permintaan. Namun, sebaiknya selalu gunakan salah satu library klien Bigtable untuk mengakses Bigtable API, bukan menggunakan REST atau RPC.
Contoh di halaman ini menggunakan data sampel yang mirip dengan data yang mungkin Anda simpan di Bigtable.
Untuk mempelajari berapa kali Anda dapat menggunakan operasi yang dijelaskan pada halaman ini per hari, lihat Kuota dan batas.
Cara Bigtable menghapus data
Saat Anda mengirim permintaan penghapusan, sel ditandai untuk dihapus dan tidak dapat dibaca. Data dihapus hingga seminggu kemudian selama pemadatan, proses latar belakang yang terus mengoptimalkan tabel. Metadata penghapusan dapat menyebabkan data Anda menggunakan lebih banyak ruang (beberapa kb per baris) selama beberapa hari setelah Anda mengirim permintaan penghapusan, hingga pemadatan berikutnya terjadi.
Anda selalu dapat mengirim permintaan penghapusan, meskipun cluster Anda telah melampaui batas penyimpanan serta operasi baca dan tulis diblokir.
Menghapus rentang baris
Jika Anda ingin menghapus data dalam jumlah besar yang disimpan dalam baris yang berdekatan, gunakan
dropRowRange
. Operasi ini menghapus semua baris untuk rentang baris yang diidentifikasi
oleh baris awal dan akhir atau awalan kunci baris.
Nilai kunci baris yang Anda berikan saat menghapus rentang baris akan diperlakukan sebagai data layanan. Untuk mengetahui informasi tentang cara penanganan data layanan, lihat Pemberitahuan Privasi Google Cloud.
Setelah penghapusan yang berhasil selesai dan Anda menerima respons, Anda dapat dengan aman menulis data ke rentang baris yang sama.
Operasi dropRowRange
memiliki batasan berikut:
- Anda tidak dapat menghapus rentang baris dari tampilan yang diotorisasi.
- Anda tidak dapat memanggil metode
dropRowRange
secara asinkron. Jika Anda mengirim permintaandropRowRange
ke tabel saat permintaan lain sedang berlangsung, Bigtable akan menampilkan errorUNAVAILABLE
dengan pesanA DropRowRange operation is already ongoing
. Untuk mengatasi error ini, kirim permintaan lagi. - Pada instance yang menggunakan replikasi, perlu diketahui bahwa Bigtable mungkin memerlukan waktu lama untuk menyelesaikan operasi karena adanya peningkatan latensi replikasi dan penggunaan CPU. Untuk menghapus data dari instance yang menggunakan replikasi, gunakan Data API untuk membaca, lalu menghapus data.
Contoh kode berikut menunjukkan cara menghapus rentang baris yang dimulai dengan
awalan kunci baris phone#5c10102
:
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus data menggunakan metode Data API
Jika Anda perlu menghapus sejumlah kecil data yang tidak berdekatan, menghapus data menggunakan metode yang memanggil Cloud Bigtable API (Data API) sering kali merupakan pilihan terbaik. Gunakan metode ini jika Anda menghapus MB, bukan GB, data dalam permintaan. Menggunakan Data API adalah satu-satunya cara untuk menghapus data dari kolom (bukan kelompok kolom).
Metode Data API memanggil MutateRows
dengan salah satu dari tiga jenis mutasi:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Permintaan penghapusan menggunakan Data API bersifat atomik: permintaan berhasil dan semua data akan dihapus, atau permintaan gagal dan tidak ada data yang dihapus.
Pada umumnya, hindari penggunaan metode CheckAndMutate
untuk menghapus data. Dalam peristiwa yang jarang terjadi
yang memerlukan konsistensi kuat, Anda dapat menggunakan pendekatan
ini, tetapi perlu diketahui bahwa pendekatan ini menghabiskan banyak resource dan performa mungkin
terpengaruh.
Agar dapat menggunakan MutateRows
untuk menghapus data, Anda mengirimkan permintaan readRows
dengan filter untuk menentukan apa yang ingin Anda hapus, lalu kirimkan permintaan penghapusan. Untuk daftar filter yang tersedia, lihat
Filter.
Contoh di bagian ini mengasumsikan bahwa Anda telah menentukan data yang akan dihapus.
Menghapus dari kolom
Contoh kode berikut menunjukkan cara menghapus semua sel dari kolom dalam satu baris:
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python asyncio
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus dari grup kolom
Contoh kode berikut menunjukkan cara menghapus sel dari grup kolom secara berturut-turut:
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python asyncio
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus dari baris
Cuplikan kode berikut menunjukkan cara menghapus semua sel dari sebuah baris:
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python asyncio
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Hapus menurut streaming dan pengelompokan
Melakukan streaming dan mengelompokkan permintaan penghapusan sering kali merupakan cara terbaik untuk menghapus data dalam jumlah besar. Strategi ini berguna jika Anda memiliki persyaratan retensi data yang lebih terperinci daripada yang diizinkan oleh kebijakan pembersihan sampah memori.
Cuplikan kode berikut memulai aliran data (membaca
baris), mengelompokkannya, lalu melakukan batch, dan menghapus semua
sel di kolom data_plan_01gb1
dalam kelompok kolom cell_plan
:
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python asyncio
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat Library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus data di tampilan yang diizinkan
Anda dapat menghapus data tabel dengan mengirimkan permintaan penghapusan ke tampilan yang diizinkan. Anda harus menggunakan salah satu dari hal berikut:
- gcloud CLI
- Klien Bigtable untuk Java
Saat menghapus data dari tampilan yang diotorisasi, Anda harus memberikan ID tampilan yang sah selain ID tabel.
Data yang dapat Anda hapus dari tampilan yang diizinkan dibatasi oleh
definisi tampilan yang diizinkan. Anda hanya dapat menghapus data yang disertakan di
tampilan yang diotorisasi. Jika Anda mencoba menghapus data yang berada di luar definisi tampilan yang diizinkan atau tunduk pada aturan berikut, error PERMISSION_DENIED
akan ditampilkan:
- Menghapus rentang baris dari tampilan yang diizinkan menggunakan
DropRowRange
dalam admin API tidak didukung. - Menghapus dari baris tidak didukung.
- Penghapusan dari kolom didukung selama tindakan ini dilakukan untuk baris yang berada dalam tampilan yang diizinkan.
- Menghapus dari grup kolom hanya diizinkan jika grup kolom yang ditentukan
dikonfigurasi untuk mengizinkan semua awalan penentu kolom (
qualifier_prefixes=""
) dalam tampilan yang diizinkan.
Misalnya, jika Anda mencoba menghapus dari baris tertentu, dan baris tersebut berisi kolom dalam tabel pokok yang tidak ada dalam tampilan yang sah, permintaan akan gagal.