Jika Anda ingin menggunakan penghitung untuk aplikasi online, gunakan fitur penghitung atomik. Untuk menggunakannya, 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 tersebut. 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 bertipe 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 penghitung atomik yang diperbarui dikembalikan.
Anda tidak dapat menetapkan 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 baris tersebut, hanya satu operasi pembaruan yang dapat dilakukan 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 baru data dimasukkan ke penghitung atomik di baris tersebut.
Operasi API
Operasi API untuk menggunakan fitur penghitung atomik ditambahkan ke kelas rowUpdateChange. Tabel berikut menjelaskan operasi tersebut.
Operasi | Deskripsi |
RowUpdateChange Increment(Column column) | Menambah atau mengurangi nilai dalam kolom dengan angka tertentu. |
List<String> ReturnColumnNames | Menentukan nama kolom yang nilainya ingin Anda kembalikan di antara kolom-kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik. |
ReturnType ReturnType | Menentukan tipe data untuk mengembalikan nilai penghitung atomik. |
Parameter
Parameter | Deskripsi |
TableName | Nama tabel data. |
ColumnName | Nama kolom tempat Anda ingin melakukan operasi penghitung atomik. Anda hanya dapat menentukan kolom bertipe INTEGER. |
Value | Peningkatan atau penurunan nilai kolom. |
ReturnColumnNames | Menentukan nama kolom yang nilainya ingin Anda kembalikan di antara kolom-kolom tempat operasi dilakukan untuk mengimplementasikan penghitung atomik. |
ReturnType | Jika Anda menetapkan parameter ini ke ReturnType.RT_AFTER_MODIFY, nilai penghitung atomik akan dikembalikan. |
Contoh
Kode sampel berikut menunjukkan cara memanggil operasi rowUpdateChange untuk meningkatkan nilai kolom bertipe INTEGER saat menulis data dan membaca nilai baru dari kolom tersebut.
public static void Increment(int incrementValue)
{
Console.WriteLine("Mulai set kolom penambahan...");
OTSClient otsClient = Config.GetClient();
// Tentukan primary key dari baris. Primary key harus sesuai dengan primary key yang ditentukan dalam TableMeta saat Anda membuat tabel.
PrimaryKey primaryKey = new PrimaryKey
{
{ Pk1, new ColumnValue(0) },
{ Pk2, new ColumnValue("abc") }
};
RowUpdateChange rowUpdateChange = new RowUpdateChange(TableName, primaryKey); // Tentukan nama tabel data.
// Tetapkan parameter ReturnType ke ReturnType.RT_AFTER_MODIFY untuk mengembalikan nilai kolom tempat operasi penghitung atomik dilakukan.
rowUpdateChange.ReturnType = ReturnType.RT_AFTER_MODIFY;
rowUpdateChange.ReturnColumnNames = new List<string>() { IncrementCol};
// Tentukan kolom tempat operasi penghitung atomik dilakukan. Nilai kolom mulai dari 0 dan meningkat sebesar angka yang ditentukan oleh parameter incrementValue.
rowUpdateChange.Increment(new Column(IncrementCol, new ColumnValue(incrementValue)));
UpdateRowRequest updateRowRequest = new UpdateRowRequest(rowUpdateChange);
var response = otsClient.UpdateRow(updateRowRequest);
Console.WriteLine("set kolom penambahan berhasil Hasil penambahan:" + response.Row.GetColumns()[0].Value);
}