Use o Tablestore SDK for Python para incrementar ou decrementar atomicamente colunas de atributos inteiros no nível da linha.
Pré-requisitos
Instale o Tablestore SDK for Python e inicialize um cliente. Os contadores atômicos exigem a versão 5.1.0 ou posterior. Recomendamos usar a versão mais recente.
Descrição da função
Chame update_row e defina a operação da coluna de atributo como INCREMENT para alterar atomicamente uma coluna de atributo inteira. Um valor positivo incrementa a coluna; um valor negativo a decrementa.
def update_row(
self,
table_name,
row,
condition,
return_type=None,
transaction_id=None,
)
O exemplo a seguir incrementa atomicamente a coluna de atributo counter em 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)
O método update_row no Tablestore SDK for Python não retorna diretamente o valor após uma operação de contador atômico. Para obter o novo valor, chame get_row após a atualização.
Parâmetros
Uma operação de contador atômico contém os seguintes parâmetros principais.
|
Nome |
Tipo |
Descrição |
|
table_name (obrigatório) |
|
Nome da tabela. |
|
primary_key (obrigatório) |
|
Chave primária da linha de destino. Especifique todas as colunas da chave primária. O esquema da chave primária deve corresponder ao da tabela. |
|
column_name (obrigatório) |
|
Nome da coluna de atributo na qual executar a operação de contador atômico. Há suporte apenas para colunas de atributos inteiros. |
|
value (obrigatório) |
|
Valor pelo qual alterar o valor da coluna de atributo. Um valor positivo incrementa a coluna; um valor negativo a decrementa. |
|
condition (obrigatório) |
|
Condição de atualização. Para mais informações, consulte Use conditional updates. |
|
transaction_id (opcional) |
|
ID da transação local. Especifique este parâmetro apenas para operações de contador atômico em uma transação local. |
Limites
Há suporte apenas para colunas de atributos inteiros. Se a coluna de destino não existir, seu valor inicial será tratado como
0. Se a coluna existir mas não for do tipo inteiro, o servidor retornaráOTSParameterInvalid.O valor de alteração pode ser positivo ou negativo, mas o resultado não pode exceder o intervalo de um inteiro assinado de 64 bits. Caso contrário, o servidor retornará
OTSParameterInvalid.A operação de contador atômico aplica-se apenas à versão mais recente e não aceita uma versão de dados específica. A atualização grava uma nova versão dos dados.
-
Na mesma atualização, não é possível executar uma operação de contador atômico e outra operação, como sobrescrita ou exclusão, na mesma coluna de atributo.
ImportanteUma operação de contador atômico pode falhar devido a timeout de rede ou erro do sistema. Tentar novamente imediatamente pode aplicar a alteração mais de uma vez e produzir uma contagem imprecisa. Para garantir precisão rigorosa, leia o valor atual e use uma atualização condicional para gravar o novo valor.