Catatan
Unit dasar sebuah tabel adalah baris, yang terdiri dari kolom kunci primer dan kolom atribut. Kolom kunci primer wajib ada, dan nama serta tipe datanya harus sama untuk semua baris. Kolom atribut bersifat opsional, dan atributnya dapat berbeda-beda antar baris. Untuk informasi selengkapnya, lihat Model tabel lebar.
Catatan penggunaan
Saat menghapus data, jumlah dan tipe kolom kunci primer yang Anda tentukan harus sesuai dengan skema kunci primer tabel.
Data yang telah dihapus tidak dapat dipulihkan. Lakukan dengan hati-hati.
Hapus satu baris
Panggil operasi DeleteRow untuk menghapus satu baris. Jika baris yang ditentukan tidak ada, operasi tersebut tidak berpengaruh.
Saat menghapus baris, Anda dapat menggunakan pembaruan bersyarat untuk menghapus baris hanya jika memenuhi kondisi tertentu. Untuk informasi selengkapnya, lihat pembaruan bersyarat.
Hapus beberapa baris
Setelah memperoleh kunci primer dari baris-baris yang akan dihapus, panggil operasi BatchWriteRow untuk menghapusnya secara batch.
Catatan Untuk menghapus data yang lebih lama dari waktu tertentu secara otomatis, Anda dapat menggunakan fitur time to live (TTL). Untuk informasi selengkapnya, lihat time to live (TTL).
Saat menghapus baris secara batch, Anda memiliki opsi berikut:
Menghapus baris dari beberapa tabel dalam satu permintaan.
Menggunakan pembaruan bersyarat untuk menghapus baris hanya jika memenuhi kondisi tertentu. Untuk informasi selengkapnya, lihat pembaruan bersyarat.
Metode
Konsol
Anda dapat menggunakan Konsol Tablestore untuk menghapus satu baris atau beberapa baris.
Masuk ke Konsol Tablestore.
Pada halaman Overview, temukan instans yang ingin Anda kelola lalu klik Manage Instance di kolom Actions.
Pada tab Instance Details, klik nama tabel di bagian Tables.
Pada tab Query Data, pilih satu atau beberapa baris yang akan dihapus, lalu klik Delete di bagian bawah halaman.
Pada kotak dialog Delete, klik OK.
Tablestore CLI
Anda dapat menjalankan perintah delete di Tablestore CLI untuk menghapus satu baris.
Contoh berikut menghapus baris dengan kolom kunci primer pertama bernilai "86" dan kolom kedua bernilai 6771.
delete --pk '["86", 6771]'
SDK
Anda dapat menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, atau PHP SDK untuk menghapus data. Contoh berikut menggunakan Java SDK.
Hapus satu baris
Hapus satu baris
Kode contoh berikut menunjukkan cara menghapus satu baris data dari tabel:
private static void deleteRow(SyncClient client, String pkValue) {
// Membangun kunci primer.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Menentukan nama tabel data.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}
Gunakan kondisi untuk menghapus baris
Kode contoh berikut menunjukkan cara menghapus satu baris data dari tabel data ketika baris tersebut ada dan nilai kolom Col0-nya lebih besar dari 100:
private static void deleteRow(SyncClient client, String pkValue) {
// Membangun kunci primer.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Menentukan nama tabel data.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
// Menentukan kondisi untuk operasi DeleteRow. Pada contoh ini, baris dihapus hanya 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
Sebelum menghapus data, pilih metode untuk mencari kunci primer dari baris yang ingin dihapus.
Untuk menghapus baris dalam rentang kunci primer tertentu, gunakan operasi GetRange untuk mengambil kunci primernya. Untuk informasi selengkapnya, lihat Baca data.
Untuk menghapus baris yang memenuhi kriteria tertentu, buat indeks pencarian. Lalu, gunakan indeks pencarian tersebut untuk mencari data dan mengambil kunci primer dari baris yang akan dihapus. Untuk informasi selengkapnya, lihat Buat indeks pencarian dan Gunakan SDK untuk mencari data dengan indeks pencarian.
Setelah memperoleh kunci primernya, panggil operasi BatchWriteRow untuk menghapus baris-baris tersebut. Untuk informasi selengkapnya, lihat Tulis data secara batch.
Kode contoh berikut menunjukkan cara menghapus satu baris data dengan nilai kolom kunci primer pk sebesar pk dari satu tabel data dan satu baris data lain dengan nilai kolom kunci primer pk1 sebesar pk1 serta pk2 sebesar pk2 dari tabel data lain secara bersamaan:
private static void batchWriteRow(SyncClient client) {
BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
// Membangun rowDeleteChange1.
PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
// Menentukan nama tabel data.
RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
// Menambahkan rowDeleteChange1 ke kode operasi batch.
batchWriteRowRequest.addRowChange(rowDeleteChange1);
// Membangun rowDeleteChange2.
PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
// Menentukan nama tabel data.
RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
// Menambahkan 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 yang gagal:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
System.out.println("Penyebab kegagalan:" + rowResult.getError());
}
/**
* Anda dapat menggunakan metode createRequestForRetry untuk membuat permintaan baru guna mencoba ulang operasi pada baris yang gagal. Pada contoh ini, hanya permintaan coba ulang yang dibuat.
* Kami menyarankan agar Anda menggunakan kebijakan coba ulang kustom di SDK Tablestore sebagai metode coba ulang. Fitur ini memungkinkan Anda mencoba ulang baris yang gagal setelah operasi batch dilakukan. Setelah menentukan kebijakan coba ulang, Anda tidak perlu menambahkan kode coba ulang untuk memanggil operasi tersebut.
*/
BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows());
}
}
Penagihan
Anda dikenai biaya berdasarkan Capacity Unit (CU) yang dikonsumsi oleh operasi Anda. Tergantung pada tipe instans, penagihan didasarkan pada CU baca/tulis on-demand atau reserved.
CU baca dan CU tulis yang dikonsumsi oleh operasi DeleteRow dihitung sebagai berikut:
CU tulis yang dikonsumsi: Ukuran total kolom kunci primer dari baris yang dihapus, dibagi 4 KB dan dibulatkan ke atas ke bilangan bulat terdekat.
CU baca yang dikonsumsi: Jika pemeriksaan kondisi ditentukan (tidak diatur ke IGNORE), jumlahnya dihitung sebagai ukuran total kolom kunci primer, dibagi 4 KB dan dibulatkan ke atas ke bilangan bulat terdekat.
Jika operasi gagal karena kondisi keberadaan baris tidak terpenuhi, operasi tersebut mengonsumsi 1 CU tulis.