Tablestore menyediakan operasi DeleteRow untuk menghapus satu baris data dan operasi BatchWriteRow untuk menghapus beberapa baris data sekaligus.
Catatan penggunaan
Data yang dihapus tidak dapat dipulihkan. Lanjutkan dengan hati-hati.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien.
Sebuah tabel data telah dibuat, dan data telah ditulis ke dalam tabel tersebut.
Hapus satu baris data
Anda dapat memanggil operasi DeleteRow untuk menghapus satu baris data. Jika baris yang ingin dihapus tidak ada, tabel tetap tidak berubah.
Parameter
Parameter | Deskripsi |
tableName | Nama tabel data. |
primaryKey | Kunci utama dari baris. Nilai parameter ini terdiri dari nama, tipe, dan nilai setiap kolom kunci utama. Penting Jumlah dan tipe kolom kunci utama yang Anda tentukan harus sama dengan jumlah dan tipe kolom kunci utama aktual dalam tabel. |
condition | Kondisi yang harus dipenuhi untuk melakukan operasi. Anda dapat mengonfigurasi kondisi keberadaan baris atau kondisi berdasarkan nilai kolom. Untuk informasi lebih lanjut, lihat Lakukan pembaruan bersyarat. |
Contoh
Hapus satu baris data
Kode sampel berikut menunjukkan cara menghapus satu baris data dari tabel:
private static void deleteRow(SyncClient client, String pkValue) {
// Konstruksi kunci utama.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Tentukan nama tabel data.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
} Tentukan kondisi untuk menghapus satu baris data
Kode sampel berikut menunjukkan cara menghapus satu baris data dari tabel ketika baris tersebut ada dan nilai kolom Col0 di baris tersebut lebih besar dari 100:
private static void deleteRow(SyncClient client, String pkValue) {
// Konstruksi kunci utama.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Tentukan nama tabel data.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
// Tentukan kondisi untuk operasi DeleteRow. Dalam contoh ini, sebuah baris hanya dihapus jika baris tersebut ada dan nilai kolom Col0 lebih besar dari 100.
Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
condition.setColumnCondition(new SingleColumnValueCondition("Col0",
SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100)));
rowDeleteChange.setCondition(condition);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
} Hapus beberapa baris data sekaligus
Sebelum menghapus data, pilih metode yang sesuai berdasarkan kebutuhan bisnis Anda untuk mendapatkan informasi kunci utama tentang data yang ingin dihapus.
Untuk menghapus data dengan nilai kunci utama dalam rentang tertentu, panggil operasi GetRange untuk mendapatkan informasi kunci utama terkait. Untuk informasi lebih lanjut, lihat Membaca Data dengan Nilai Kunci Utama dalam Rentang Tertentu.
Untuk menghapus data yang memenuhi kondisi tertentu dari tabel dengan indeks pencarian, gunakan indeks pencarian untuk mendapatkan informasi kunci utama terkait. Untuk informasi lebih lanjut, lihat Kueri Dasar.
Untuk menghapus semua data dari tabel, disarankan untuk menghapus tabel dan membuat tabel baru dengan konfigurasi yang sama.
Alternatifnya, panggil operasi GetRange, atur kunci utama awal ke INF_MIN dan kunci utama akhir ke INF_MAX untuk memindai semua data dalam tabel. Dengan cara ini, Anda dapat mendapatkan informasi kunci utama untuk semua data. Namun, pendekatan ini memerlukan banyak sumber daya komputasi. Lanjutkan dengan hati-hati.
Panggil operasi BatchWriteRow untuk menghapus beberapa baris data sekaligus berdasarkan informasi kunci utama terkait. Untuk informasi lebih lanjut, lihat Menulis Data.
Kode sampel berikut menunjukkan cara menghapus satu baris data dengan nilai kolom kunci utama pk sebagai
pkdari tabel dan satu baris data dengan nilai kolom kunci utama pk1 sebagaipk1serta nilai kolom kunci utama pk2 sebagaipk2dari tabel lain secara bersamaan:private static void batchWriteRow(SyncClient client) { BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest(); // Konstruksi rowDeleteChange1. PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk")); // Tentukan nama tabel data. RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build()); // Tambahkan rowDeleteChange1 ke kode operasi batch. batchWriteRowRequest.addRowChange(rowDeleteChange1); // Konstruksi rowDeleteChange2. PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1")); pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2")); // Tentukan nama tabel data. RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build()); // Tambahkan rowDeleteChange2 ke kode operasi batch. batchWriteRowRequest.addRowChange(rowDeleteChange2); BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest); System.out.println("Apakah semua operasi berhasil:" + response.isAllSucceed()); if (!response.isAllSucceed()) { for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) { System.out.println("Baris gagal:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey()); System.out.println("Penyebab kegagalan:" + rowResult.getError()); } /** * Anda dapat menggunakan metode createRequestForRetry untuk membangun permintaan lain untuk mencoba kembali operasi pada baris yang gagal. Dalam contoh ini, hanya permintaan ulang yang dibangun. * Kami sarankan Anda menggunakan kebijakan ulang kustom dalam Tablestore SDK sebagai metode ulang. Fitur ini memungkinkan Anda mencoba kembali baris yang gagal setelah operasi batch dilakukan. Setelah Anda menentukan kebijakan ulang, Anda tidak perlu menambahkan kode ulang untuk memanggil operasi. */ BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows()); } }
Referensi
Waktu Hidup (TTL) menentukan periode retensi data. Anda dapat mengonfigurasi TTL untuk tabel agar data yang kedaluwarsa dihapus secara otomatis. Untuk informasi lebih lanjut, lihat Versi Data dan TTL.