Penghapusan
Dokumen ini menjelaskan cara menghapus data yang disimpan dalam tabel Bigtable, membahas kapan Anda harus menggunakan setiap pendekatan, dan memberikan contoh. Sebelum membaca halaman ini, Anda harus memahami ringkasan Bigtable dan memahami konsep yang terlibat dalam desain skema.
Untuk konsistensi, deskripsi di halaman ini merujuk ke metode API yang digunakan untuk setiap jenis permintaan. Namun, sebaiknya Anda selalu menggunakan 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 frekuensi penggunaan operasi yang dijelaskan di halaman ini per hari, lihat Kuota dan batas.
Cara Bigtable menghapus data
Saat Anda mengirim permintaan penghapusan, sel akan ditandai untuk dihapus dan tidak dapat dibaca. Data akan dihapus hingga seminggu kemudian selama pemadatan, proses latar belakang yang terus mengoptimalkan tabel. Metadata penghapusan dapat menyebabkan data Anda memerlukan sedikit lebih banyak ruang (beberapa kb per baris) selama beberapa hari setelah Anda mengirim permintaan penghapusan, hingga pemadatan berikutnya terjadi.
Anda dapat mengirim permintaan penghapusan kapan saja, meskipun cluster Anda telah melampaui batas penyimpanan dan 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 informasi tentang cara penanganan data layanan, lihat Pemberitahuan Privasi Google Cloud.
Setelah penghapusan berhasil selesai dan Anda menerima respons, Anda dapat menulis data dengan aman 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, kirim permintaan lagi. - Dengan instance yang menggunakan replikasi, perhatikan bahwa Bigtable mungkin memerlukan waktu lama untuk menyelesaikan operasi karena peningkatan latensi replikasi dan penggunaan CPU. Untuk menghapus data dari instance yang menggunakan replika, gunakan Data API untuk membaca, lalu menghapus data Anda.
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 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus data menggunakan metode Data API
Jika Anda perlu menghapus data non-berurutan dalam jumlah kecil, menghapus data menggunakan metode yang memanggil Cloud Bigtable API (Data API) sering kali merupakan pilihan terbaik. Gunakan metode ini jika Anda menghapus data dalam MB, bukan GB, dalam permintaan. Menggunakan Data API adalah satu-satunya cara untuk menghapus data dari kolom (bukan keluarga kolom).
Metode Data API memanggil MutateRows
dengan salah satu dari tiga jenis mutasi:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Permintaan penghapusan yang menggunakan Data API bersifat atomik: permintaan berhasil dan semua data dihapus, atau permintaan gagal dan tidak ada data yang dihapus.
Pada umumnya, hindari penggunaan metode CheckAndMutate
untuk menghapus data. Jika jarang
memerlukan konsistensi yang kuat, Anda dapat menggunakan pendekatan
ini, tetapi perlu diketahui bahwa pendekatan ini membutuhkan banyak resource dan performanya mungkin
terpengaruh.
Untuk menggunakan MutateRows
guna menghapus data, Anda harus mengirim permintaan readRows
dengan filter untuk menentukan data yang ingin dihapus, lalu mengirim permintaan penghapusan. Untuk mengetahui 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 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Asyncio 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus dari keluarga kolom
Contoh kode berikut menunjukkan cara menghapus sel dari grup kolom dalam 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Asyncio 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus dari baris
Cuplikan kode berikut menunjukkan cara menghapus semua sel dari 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Asyncio 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus dengan streaming dan pengelompokan
Streaming dan mengelompokkan permintaan penghapusan sering kali merupakan cara terbaik untuk menghapus data dalam jumlah besar. Strategi ini dapat berguna jika Anda memiliki persyaratan retensi data yang lebih terperinci daripada yang diizinkan kebijakan pembersihan sampah.
Jika aplikasi ditulis dalam Java, Anda dapat mengaktifkan kontrol alur penulisan batch saat mengirim penghapusan batch ke Bigtable. Untuk informasi selengkapnya, lihat Kontrol alur tulis batch. Untuk melihat cara mengaktifkannya, lihat Mengaktifkan kontrol alur penulisan batch.
Cuplikan kode berikut memulai aliran data (membaca baris), mengelompokkan, lalu memeriksa batch dan menghapus semua sel di kolom data_plan_01gb1
dalam grup 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Asyncio 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 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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menghapus data dalam tampilan yang diizinkan
Anda dapat menghapus data tabel dengan mengirim permintaan penghapusan ke tampilan yang diotorisasi. 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 diotorisasi selain ID tabel.
Data yang dapat Anda hapus dari tampilan resmi dibatasi oleh
definisi tampilan resmi. Anda hanya dapat menghapus data yang disertakan dalam
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 diotorisasi menggunakan
DropRowRange
di admin API tidak didukung. - Penghapusan dari baris tidak didukung.
- Penghapusan dari kolom didukung selama untuk baris yang ada dalam tampilan yang diotorisasi.
- Penghapusan dari grup kolom hanya diizinkan jika grup kolom yang ditentukan dikonfigurasi untuk mengizinkan semua awalan penentu kolom (
qualifier_prefixes=""
) dalam tampilan yang diotorisasi.
Misalnya, jika Anda mencoba menghapus dari baris yang ditentukan, dan baris tersebut berisi kolom dalam tabel pokok yang tidak ada dalam tampilan yang diotorisasi, permintaan akan gagal.