Se sua aplicação online precisar de um contador, use o recurso de contador atômico. Para isso, especifique uma coluna como contador atômico e execute operações de contador atômico nessa coluna.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada com dados gravados. Para mais informações, consulte Criar uma tabela de dados e Gravar dados.
Observações de uso
Contadores atômicos são compatíveis apenas com colunas do tipo INTEGER.
Se a coluna definida como contador atômico não existir antes da gravação dos dados, seu valor padrão será 0. Se a coluna especificada não for do tipo INTEGER, ocorrerá um erro OTSParameterInvalid.
Atualize o contador atômico com números positivos ou negativos, mas evite estouro de inteiro. Em caso de estouro, o sistema retornará um erro OTSParameterInvalid.
Por padrão, a resposta à solicitação de atualização de linha não inclui o valor do contador atômico. Configure o retorno do valor atualizado conforme necessário.
Não defina uma coluna como contador atômico e a modifique na mesma solicitação de atualização. Por exemplo, ao configurar a Coluna A como contador atômico, não execute simultaneamente outras operações nela, como sobrescrita ou exclusão.
Envie uma solicitação BatchWriteRow para realizar múltiplas atualizações na mesma linha. Contudo, ao usar operações de contador atômico, realize apenas uma operação de atualização por linha nessa solicitação.
Atualize apenas a versão mais recente do contador atômico. Não altere versões específicas. Após a atualização, o sistema insere automaticamente uma nova versão dos dados no contador atômico da linha.
Operações de API
A operação updateRow inclui funcionalidades relacionadas ao contador atômico. A tabela a seguir descreve essas operações.
|
Operação |
Descrição |
|
updateOfAttributeColumns |
Define INCREMENT como tipo de atualização para aumentar ou diminuir o valor de uma coluna por um número inteiro específico. |
|
returnContent |
Especifica o nome da coluna cujo valor deve ser retornado entre aquelas envolvidas na operação de contador atômico. |
Parâmetro
|
Parâmetro |
Descrição |
|
tableName |
Nome da tabela de dados. |
|
columnName |
Nome da coluna para execução das operações de contador atômico. Apenas colunas INTEGER são compatíveis com essa funcionalidade. |
|
value |
Valor incremental ou decremental a ser aplicado à coluna. |
|
returnColumns |
Indica o nome da coluna cujo valor deve ser retornado dentre as colunas processadas pelo contador atômico. |
|
returnType |
Defina o tipo de retorno como TableStore.ReturnType.AfterModify para obter os valores das colunas após a execução das operações de contador atômico. |
Exemplo
O código de exemplo a seguir demonstra como usar INCREMENT como tipo de atualização para modificar o valor de uma coluna de atributo INTEGER durante uma chamada à operação updateRow:
var params = {
tableName: "<Your-Table-Name>",
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.EXPECT_EXIST, null),
primaryKey: [{'pk0': Long.fromNumber(1)}],
// Specify the price column as an atomic counter and increase the value of the atomic counter by 10. You cannot specify the timestamp.
updateOfAttributeColumns: [
{'INCREMENT': [{'price': Long.fromNumber(10)}]}
],
// Set the return type to TableStore.ReturnType.AfterModify and return the values of the columns on which operations are performed to implement atomic counter.
returnContent: {
returnColumns: ["price"],
returnType: TableStore.ReturnType.AfterModify
}
};
client.updateRow(params,
function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});