Untuk aplikasi online yang memerlukan penghitung, Anda dapat menggunakan fitur penghitung atomik. Untuk mengaktifkan fitur ini, tentukan kolom sebagai penghitung atomik dan lakukan operasi penghitung atomik pada kolom tersebut.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instance OTSClient.
Tabel data telah dibuat dan data telah ditulis ke tabel data. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Catatan penggunaan
Penghitung atomik hanya dapat diimplementasikan pada kolom INTEGER.
Jika kolom yang ditentukan sebagai penghitung atomik tidak ada sebelum menulis data, nilai defaultnya adalah 0. Jika kolom bukan tipe INTEGER, kesalahan OTSParameterInvalid akan terjadi.
Anda dapat memperbarui penghitung atomik dengan angka positif atau negatif, tetapi hindari overflow integer. Jika terjadi overflow, kesalahan OTSParameterInvalid akan dikembalikan.
Secara default, nilai penghitung atomik tidak dikembalikan dalam respons pembaruan baris. Namun, Anda dapat menentukan agar nilai yang diperbarui dari penghitung atomik dikembalikan.
Anda tidak dapat menentukan kolom sebagai penghitung atomik dan memperbarui kolom tersebut dalam satu permintaan pembaruan. Sebagai contoh, jika Kolom A ditetapkan sebagai penghitung atomik, Anda tidak dapat melakukan operasi lain seperti timpa atau hapus pada kolom tersebut secara bersamaan.
Anda dapat melakukan beberapa operasi pembaruan pada baris yang sama melalui permintaan BatchWriteRow. Namun, jika Anda melakukan operasi penghitung atomik pada sebuah baris, hanya satu operasi pembaruan yang dapat dilakukan pada baris tersebut dalam permintaan BatchWriteRow.
Hanya nilai versi terbaru dari penghitung atomik yang dapat diperbarui. Anda tidak dapat memperbarui nilai versi tertentu dari penghitung atomik. Setelah pembaruan selesai, versi data baru dimasukkan ke dalam penghitung atomik di baris tersebut.
Operasi API
Operasi terkait penghitung atomik telah ditambahkan ke operasi updateRow. Tabel berikut menjelaskan operasi terkait penghitung atomik.
Operasi | Deskripsi |
updateOfAttributeColumns | Tentukan INCREMENT sebagai tipe pembaruan untuk menambah atau mengurangi nilai kolom dengan bilangan bulat tertentu. |
returnContent | Tentukan nama kolom yang nilainya ingin Anda kembalikan di antara kolom-kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik. |
Parameter
Parameter | Deskripsi |
tableName | Nama tabel data. |
columnName | Nama kolom tempat Anda ingin melakukan operasi penghitung atomik. Anda hanya dapat mengimplementasikan penghitung atomik pada kolom INTEGER. |
value | Peningkatan atau penurunan nilai kolom. |
returnColumns | Tentukan nama kolom yang nilainya ingin Anda kembalikan di antara kolom-kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik. |
returnType | Atur tipe pengembalian ke TableStore.ReturnType.AfterModify untuk mengembalikan nilai kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik. |
Contoh
Kode sampel berikut menunjukkan cara menggunakan INCREMENT sebagai tipe pembaruan untuk memperbarui nilai kolom atribut tipe INTEGER saat memanggil operasi updateRow untuk memperbarui data:
var params = {
tableName: "<Your-Table-Name>",
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.EXPECT_EXIST, null),
primaryKey: [{'pk0': Long.fromNumber(1)}],
// Tentukan kolom harga sebagai penghitung atomik dan tingkatkan nilai penghitung atomik sebesar 10. Anda tidak dapat menentukan timestamp.
updateOfAttributeColumns: [
{'INCREMENT': [{'price': Long.fromNumber(10)}]}
],
// Atur tipe pengembalian ke TableStore.ReturnType.AfterModify dan kembalikan nilai kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik.
returnContent: {
returnColumns: ["price"],
returnType: TableStore.ReturnType.AfterModify
}
};
client.updateRow(params,
function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});