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 untuk setiap baris. Untuk informasi selengkapnya, lihat Wide table model.
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.
-
Jika tabel berisi volume data yang besar, operasi penghapusan (terutama penghapusan batch atau penghapusan asinkron yang melibatkan data dalam jumlah besar) mungkin memerlukan waktu lama untuk selesai. Misalnya, wajar jika operasi tersebut memakan waktu lebih dari 48 jam. Kami menyarankan agar Anda bersabar dan memantau status tugas tanpa mengirim ulang permintaan penghapusan.
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 conditional update.
Hapus beberapa baris
Setelah mendapatkan kunci primer dari baris-baris yang akan dihapus, panggil operasi BatchWriteRow untuk menghapusnya secara batch.
Catatan
Untuk menghapus data secara otomatis yang lebih lama dari waktu tertentu, 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 conditional update.
Metode
Konsol
Anda dapat menggunakan Konsol Tablestore untuk menghapus satu baris atau beberapa baris.
-
Masuk ke Tablestore console.
-
Pada halaman Overview, temukan instans yang ingin Anda kelola dan 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 satu baris di mana kolom kunci primer pertama bernilai "86" dan yang 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) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the name of the data table.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}
-
Gunakan kondisi untuk menghapus satu baris
Kode contoh berikut menunjukkan cara menghapus satu baris data dari tabel data ketika baris tersebut ada dan nilai kolom Col0 pada baris tersebut lebih besar dari 100:
private static void deleteRow(SyncClient client, String pkValue) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the name of the data table.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
// Specify conditions for the DeleteRow operation. In this example, a row is deleted only when the row exists and the value of the Col0 column is greater than 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 mengambil 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 Read data.
-
Untuk menghapus baris yang memenuhi kriteria tertentu, buat indeks pencarian. Lalu, gunakan indeks pencarian tersebut untuk mengkueri data dan mengambil kunci primer dari baris yang akan dihapus. Untuk informasi selengkapnya, lihat Create a search index dan Use an SDK to query data with a search index.
-
Setelah Anda memiliki kunci primernya, panggil operasi BatchWriteRow untuk menghapus baris-baris tersebut. Untuk informasi selengkapnya, lihat Batch write data.
Kode contoh berikut menunjukkan cara menghapus satu baris data di mana nilai kolom kunci primer pk adalah pk dari satu tabel data, dan satu baris data lain di mana nilai kolom kunci primer pk1 adalah pk1 dan nilai kolom kunci primer pk2 adalah pk2 dari tabel data lain secara bersamaan:
private static void batchWriteRow(SyncClient client) {
BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
// Construct rowDeleteChange1.
PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
// Specify the name of the data table.
RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
// Add rowDeleteChange1 to the code of the batch operation.
batchWriteRowRequest.addRowChange(rowDeleteChange1);
// Construct rowDeleteChange2.
PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
// Specify the name of the data table.
RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
// Add rowDeleteChange2 to the code of the batch operation.
batchWriteRowRequest.addRowChange(rowDeleteChange2);
BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest);
System.out.println("Whether all operations are successful:" + response.isAllSucceed());
if (!response.isAllSucceed()) {
for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) {
System.out.println("Failed rows:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
System.out.println("Cause of failures:" + rowResult.getError());
}
/**
* You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed.
* We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This feature allows you to retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation.
*/
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 berdasarkan 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.