Lokasikan sebuah baris berdasarkan kunci primernya, lalu tambahkan, ubah, atau hapus kolom atributnya secara inkremental—dengan opsional menyertakan nomor versi tertentu. Java SDK menggunakan UpdateRow untuk pembaruan baris tunggal yang bersifat atomik. Kasus penggunaan umum mencakup penyegaran bidang status, pengarsipan nilai historis, dan penghapusan logis.
Prasyarat
Tablestore SDK untuk Java telah diinstal dan instans OTSClient telah diinisialisasi.
Deskripsi
public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
Lokasikan satu baris berdasarkan kunci primernya dan perbarui kolom atributnya secara inkremental. Gunakan RowUpdateChange untuk menyimpan kunci primer dan operasi perubahan kolom. Konsumsi unit kapasitas (CU) dapat diperoleh dari response.getConsumedCapacity().
Contoh berikut memperbarui baris row1 dalam tabel data update_row_demo, dengan mengatur kolom atribut col1 menjadi changed_val1.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
rowUpdateChange.put("col1", ColumnValue.fromString("changed_val1"));
UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Write CU: " + response.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());
Parameter
Objek RowUpdateChange membawa muatan pembaruan untuk satu baris. Setiap parameter dijelaskan di bawah ini.
|
Nama |
Tipe |
Deskripsi |
|
tableName (wajib) |
String |
Nama tabel data yang akan diperbarui. |
|
primaryKey (wajib) |
PrimaryKey |
Informasi kunci primer, termasuk nama dan nilai kolom kunci primer.
|
|
columnsToUpdate (wajib) |
List<Pair<Column, Type>> |
Daftar perubahan kolom atribut. Panggil metode
Untuk contoh kode setiap operasi, lihat bagian Skenario. |
|
condition (opsional) |
Condition |
Menentukan kondisi penulisan. Untuk detailnya, lihat Conditional update. |
Skenario
Tulis kolom atribut dengan nomor versi tertentu
Berikan argumen ketiga pada put untuk menentukan nomor versi (timestamp dalam milidetik) kolom atribut tersebut. Pendekatan ini berguna untuk mengarsipkan nilai historis yang dikaitkan dengan waktu bisnis.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Tentukan nomor versi (timestamp dalam milidetik) sebagai argumen ketiga.
long version = System.currentTimeMillis();
rowUpdateChange.put("col2", ColumnValue.fromString("val2"), version);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Hapus versi tertentu dari kolom atribut
Gunakan deleteColumn untuk menghapus satu versi kolom atribut sambil mempertahankan semua versi lainnya.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Hapus nilai col2 pada versi yang ditentukan (timestamp dalam milidetik).
rowUpdateChange.deleteColumn("col2", 1747893563831L);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Hapus seluruh kolom atribut
Gunakan deleteColumns untuk menghapus semua versi kolom atribut dalam satu operasi.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Hapus semua versi dari kolom atribut col2.
rowUpdateChange.deleteColumns("col2");
client.updateRow(new UpdateRowRequest(rowUpdateChange));