Tüm Ürünler
Search
Belge Merkezi

Tablestore:Use atomic counters

Son Güncelleme:Oct 02, 2026

Tablestore SDK for Java, satır düzeyinde bir tamsayı nitelik sütununu atomik olarak artırabilir veya azaltabilir ve güncellenen değeri aynı istekte döndürebilir.

Ön koşullar

Tablestore SDK for Java paketini yükleyin ve istemciyi başlatın.

Açıklama

Belirtilen tamsayı sütununu atomik olarak güncellemek için increment(Column) yöntemini çağırın. Pozitif değer sütunu artırır, negatif değer ise azaltır. Tablestore, satır düzeyinde atomikliği garanti eder ve güncellemeden sonra yeni bir veri sürümü yazar. Güncellenen değeri aynı istekte döndürmek için addReturnColumn(String) yöntemini çağırın ve returnType parametresini RT_AFTER_MODIFY olarak ayarlayın.

public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
public RowUpdateChange increment(Column column)
public void addReturnColumn(String columnName)
public void setReturnType(ReturnType returnType)

Aşağıdaki örnekte, counter_demo tablosundaki birincil anahtarı pk0 olan satırın price sütunu 10 artırılır ve güncellenen değer aynı istekte okunur.

PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("pk0"))
        .build();

RowUpdateChange rowUpdateChange = new RowUpdateChange("counter_demo", primaryKey);

// Increment the price column by 10 (use a negative value to decrement)
rowUpdateChange.increment(new Column("price", ColumnValue.fromLong(10)));

// Return the updated column value in the same request
rowUpdateChange.addReturnColumn("price");
rowUpdateChange.setReturnType(ReturnType.RT_AFTER_MODIFY);

UpdateRowResponse response = client.updateRow(new UpdateRowRequest(rowUpdateChange));
Row row = response.getRow();
System.out.println("Updated price: " + row.getLatestColumn("price").getValue().asLong());

Parametreler

İstek yapılandırması

UpdateRowRequest aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


rowChange (zorunlu)


RowUpdateChange


Tek satırlık güncelleme yapılandırması.


transactionId (isteğe bağlı)


String

Yerel işlem ID'si. Bu parametreyi yalnızca atomik sayaç işlemini yerel bir işlem içinde gerçekleştirirken belirtin.

ID'yi nasıl alacağınız ve kullanacağınız hakkında bilgi için bkz. Yerel işlemleri kullanma.

Satır güncelleme yapılandırması

UpdateRowRequest öğesinin rowChange parametresi RowUpdateChange türündedir.


Ad


Tür


Açıklama


tableName (zorunlu)


String


Veri tablosunun adı.


primaryKey (zorunlu)


PrimaryKey


Hedef satırın birincil anahtarı.


columnsToUpdate (zorunlu)


List<Pair<Column, Type>>


Güncellenecek nitelik sütunları. Bir atomik sayaç işlemi eklemek için increment(Column) yöntemini çağırın.


condition (isteğe bağlı)


Condition

Koşullu güncelleme yapılandırması. Atomik sayaç işlemi yalnızca satır koşulu karşıladığında gerçekleştirilir.

Koşulun nasıl yapılandırılacağı hakkında bilgi için bkz. Koşullu güncellemeleri kullanma.


returnType (isteğe bağlı)


ReturnType


Dönüş türü. Varsayılan değer: RT_NONE. Güncellenen değeri döndürmek için bu parametreyi RT_AFTER_MODIFY olarak ayarlayın.


returnColumnNames (isteğe bağlı)


Set<String>


Güncellenmiş değerleri döndürülecek atomik sayaç sütunları. Sütun adlarını addReturnColumn() yöntemini çağırarak ekleyin ve bu parametreyi RT_AFTER_MODIFY ile birlikte kullanın.

Sayaç sütunu

increment() yöntemiyle UpdateRowRequest.rowChange.columnsToUpdate listesine eklenen her öğe bir Column içerir.


Ad


Tür


Açıklama


name (zorunlu)


String


Atomik sayaç işleminin uygulanacağı nitelik sütununun adı.


value (zorunlu)


ColumnValue


Tamsayı artış miktarı. Pozitif değer sütunu artırır, negatif değer ise azaltır. Sonuç taşma yapmamalıdır. Hedef sütun yoksa başlangıç değeri 0 olarak kabul edilir.

Yanıt


Ad


Tür


Açıklama


row


Row


RT_AFTER_MODIFY belirtilirse bu alan, addReturnColumn() ile eklenen atomik sayaç sütunlarının güncellenmiş değerlerini içerir. Değeri almak için getRow() yöntemini çağırın.

Sınırlamalar

  • Atomik sayaç işlemleri yalnızca tamsayı sütunlarını destekler. Sütun varsa ancak bir tamsayı sütunu değilse işlem OTSParameterInvalid hatasını döndürür.

  • Atomik sayaç işlemleri yalnızca en son sürüm için geçerlidir ve kullanıcı tarafından belirtilen bir zaman damgasını kabul etmez.

  • Tek bir güncelleme isteği içinde aynı sütun üzerinde atomik sayaç işlemini üzerine yazma veya silme gibi diğer işlemlerle birleştiremezsiniz.

  • Bir BatchWriteRow isteğinde, atomik sayaç işlemi içeren bir satır yalnızca bir kez görünebilir.

Önemli

Atomik sayaç işlemleri ağ zaman aşımları veya sistem hataları nedeniyle başarısız olabilir. Yeniden deneme, artışı iki kez uygulayarak sayacın beklenenden daha yüksek (veya daha düşük) olmasına neden olabilir. Çift sayımı önlemek için değeri mevcut durumuna göre güncellemek amacıyla koşullu güncelleme kullanın.