Untuk mengimplementasikan penghitung dalam aplikasi online Anda, gunakan fitur penghitung atomik. Untuk memanfaatkan fitur ini, atur kolom sebagai penghitung atomik dan lakukan operasi terkait pada kolom tersebut.
Skema Penggunaan
Penghitung atomik ideal untuk skenario yang memerlukan operasi penghitungan cepat, seperti menghitung jumlah tampilan halaman waktu nyata (PV) di berbagai topik, jumlah pesan dalam aplikasi online, atau menambah nilai kolom tertentu sebesar 1.
Ikhtisar
Penghitung atomik mengurangi overhead kinerja penulisan akibat konsistensi kuat. Saat Anda mengirim permintaan ke server untuk melakukan operasi baca, modifikasi, dan tulis (RMW), server menjalankan operasi tersebut dengan mengunci baris terkait. Untuk memastikan konsistensi data yang kuat, Anda dapat memperbarui penghitung atomik langsung di server database untuk meningkatkan kinerja penulisan.
Kesalahan mungkin terjadi jika operasi penghitung atomik mengalami timeout jaringan atau kegagalan sistem. Dalam kasus ini, Anda dapat mencoba kembali operasi tersebut. Namun, penghitung atomik mungkin diperbarui dua kali, menghasilkan nilai yang lebih kecil atau lebih besar. Kami merekomendasikan penggunaan fitur pembaruan bersyarat untuk memperbarui nilai penghitung atomik secara akurat. Untuk informasi lebih lanjut, lihat Pembaruan Bersyarat.
Anda dapat menggunakan fitur penghitung atomik untuk mengumpulkan statistik waktu nyata pada data dalam satu baris. Untuk mengimplementasikan fitur ini, panggil operasi UpdateRow untuk melakukan operasi pada penghitung atomik, seperti menambah atau mengurangi nilai serta mengembalikan nilai yang telah diperbarui.
Sebagai contoh, buat tabel Tablestore untuk menyimpan metadata gambar dan menghitung jumlah gambar. Setiap baris dalam tabel memiliki ID pengguna. Kolom dalam baris digunakan untuk menyimpan metadata gambar, sementara kolom lainnya berfungsi sebagai penghitung atomik untuk menghitung jumlah gambar waktu nyata yang metadata-nya disimpan dalam baris tersebut.
Saat Anda memanggil operasi UpdateRow untuk menambahkan metadata gambar ke baris, nilai penghitung atomik bertambah 1.
Saat Anda memanggil operasi UpdateRow untuk menghapus metadata gambar dari baris, nilai penghitung atomik berkurang 1.
Anda dapat memanggil operasi GetRow untuk membaca nilai penghitung atomik dan mendapatkan jumlah gambar yang metadata-nya disimpan dalam baris tersebut.
Ini memastikan konsistensi basis data yang kuat. Saat Anda menambahkan metadata gambar ke baris, nilai penghitung atomik bertambah 1, bukan berkurang 1.
Catatan Penggunaan
Penghitung atomik hanya dapat diimplementasikan pada kolom INTEGER.
Jika kolom yang ditentukan sebagai penghitung atomik tidak ada sebelum Anda menulis data, nilai default kolom adalah 0. Jika kolom tersebut bukan kolom INTEGER, kesalahan OTSParameterInvalid akan terjadi.
Anda dapat memperbarui penghitung atomik menggunakan angka positif atau negatif, tetapi hindari overflow integer. Jika overflow terjadi, kesalahan OTSParameterInvalid akan dikembalikan.
Secara default, nilai penghitung atomik tidak dikembalikan dalam respons terhadap permintaan pembaruan. Anda dapat menentukan agar nilai penghitung atomik yang diperbarui dikembalikan.
Anda tidak dapat menentukan kolom sebagai penghitung atomik dan memperbarui kolom tersebut dalam satu permintaan pembaruan. Sebagai contoh, jika Anda menetapkan Kolom A sebagai penghitung atomik, Anda tidak dapat melakukan operasi lain seperti operasi 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, Anda hanya dapat melakukan satu operasi pembaruan 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 operasi pembaruan selesai, versi data baru dimasukkan ke dalam penghitung atomik di baris tersebut.
Metode
Fitur penghitung atomik hanya dapat digunakan melalui SDK Tablestore.
Anda dapat menggunakan fitur penghitung atomik melalui Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET, dan Tablestore SDK for PHP. Dalam contoh ini, Tablestore SDK for Java digunakan.
Kode berikut memberikan contoh cara menggunakan rowUpdateChange untuk menambah nilai penghitung atomik dan mengembalikan nilai yang telah ditingkatkan:
private static void incrementByUpdateRowApi(SyncClient client) {
// Tentukan primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME, PrimaryKeyValue.fromString("pk0"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Tentukan tabel.
RowUpdateChange rowUpdateChange = new RowUpdateChange(TABLE_NAME, primaryKey);
// Atur kolom harga sebagai penghitung atomik dan tingkatkan nilai penghitung atomik sebesar 10. Anda tidak dapat menentukan timestamp.
rowUpdateChange.increment(new Column("price", ColumnValue.fromLong(10)));
// Atur tipe data nilai yang dikembalikan ke ReturnType.RT_AFTER_MODIFY dan kembalikan nilai penghitung atomik.
rowUpdateChange.addReturnColumn("price");
rowUpdateChange.setReturnType(ReturnType.RT_AFTER_MODIFY);
// Ajukan permintaan untuk memperbarui baris.
UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));
// Tampilkan nilai yang diperbarui.
Row row = response.getRow();
System.out.println(row);
}Penagihan
Implementasi penghitung atomik tidak memengaruhi aturan penagihan yang ada. Untuk informasi lebih lanjut tentang penagihan, lihat Ikhtisar Penagihan.