All Products
Search
Document Center

Tablestore:Gunakan atomic counters

Last Updated:Aug 05, 2026

Gunakan Tablestore SDK for Python untuk menambah atau mengurangi nilai kolom atribut integer secara atomik pada tingkat baris.

Prasyarat

Instal Tablestore SDK for Python dan inisialisasi klien. Atomic counters memerlukan versi 5.1.0 atau lebih baru. Disarankan untuk menggunakan versi terbaru.

Deskripsi fungsi

Panggil update_row dan atur operasi kolom atribut ke INCREMENT untuk mengubah nilai kolom atribut integer secara atomik. Nilai positif akan menambah kolom tersebut, sedangkan nilai negatif akan menguranginya.

def update_row(
    self,
    table_name,
    row,
    condition,
    return_type=None,
    transaction_id=None,
)

Contoh berikut secara atomik menambah kolom atribut counter sebesar 5.

primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {"INCREMENT": [("counter", 5)]}
row = Row(primary_key, attribute_columns)
condition = Condition(RowExistenceExpectation.EXPECT_EXIST)

consumed, return_row = client.update_row(
    "example_table",
    row,
    condition,
)
print("Write CU: %s" % consumed.write)

Metode update_row dalam Tablestore SDK for Python tidak langsung mengembalikan nilai setelah operasi atomic counter. Untuk mendapatkan nilai baru, panggil get_row setelah pembaruan.

Parameter

Operasi atomic counter mencakup parameter kunci berikut.

Name

Type

Description

table_name (required)

str

Nama tabel.

primary_key (required)

List[Tuple]

Kunci primer dari baris target. Tentukan semua kolom kunci primer. Skema kunci primer harus sesuai dengan skema tabel.

column_name (required)

str

Nama kolom atribut tempat operasi atomic counter dilakukan. Hanya kolom atribut integer yang didukung.

value (required)

int

Jumlah perubahan nilai kolom atribut. Nilai positif akan menambah kolom, sedangkan nilai negatif akan menguranginya.

condition (required)

Condition

Kondisi pembaruan. Untuk informasi selengkapnya, lihat Use conditional updates.

transaction_id (optional)

str

ID transaksi lokal. Tentukan parameter ini hanya untuk operasi atomic counter dalam transaksi lokal.

Batasan

  • Hanya kolom atribut integer yang didukung. Jika kolom target tidak ada, nilai awalnya dianggap sebagai 0. Jika kolom tersebut ada tetapi bukan integer, server mengembalikan OTSParameterInvalid.

  • Jumlah perubahan dapat bernilai positif atau negatif, tetapi hasilnya tidak boleh melebihi rentang integer 64-bit bertanda. Jika melebihi, server mengembalikan OTSParameterInvalid.

  • Operasi atomic counter hanya berlaku untuk versi data terbaru dan tidak mendukung penentuan versi data tertentu. Pembaruan ini menulis versi data baru.

  • Dalam satu pembaruan yang sama, Anda tidak dapat melakukan operasi atomic counter bersamaan dengan operasi lain seperti overwrite atau delete pada kolom atribut yang sama.

    Penting

    Operasi atomic counter dapat gagal karena timeout jaringan atau error sistem. Melakukan retry langsung dapat menerapkan perubahan lebih dari sekali dan menghasilkan hitungan yang tidak akurat. Untuk akurasi ketat, baca nilai saat ini dan gunakan pembaruan kondisional untuk menulis nilai baru.