Para implementar um contador em sua aplicação online, use o recurso de contador atômico. Defina uma coluna como contador atômico e execute operações de contador atômico nessa coluna.
Pré-requisitos
Cliente inicializado. Para mais informações, consulte Inicializar o cliente do Tablestore.
Tabela de dados criada com dados gravados. Para mais informações, consulte Criar uma tabela de dados.
Observações de uso
Implemente contadores atômicos apenas em colunas INTEGER.
Se a coluna definida como contador atômico não existir antes da gravação dos dados, o valor padrão será 0. Caso a coluna especificada como contador atômico não seja do tipo INTEGER, ocorrerá um erro OTSParameterInvalid.
Atualize o contador atômico com um número positivo ou negativo, mas evite estouro de inteiro. Se houver estouro de inteiro, o sistema retornará um erro OTSParameterInvalid.
Por padrão, a resposta à solicitação de atualização de linha não retorna o valor do contador atômico. Configure o retorno do valor atualizado do contador atômico conforme necessário.
Não defina uma coluna como contador atômico e a atualize na mesma solicitação. Por exemplo, ao definir a Coluna A como contador atômico, não execute simultaneamente outras operações nessa coluna, como sobrescrita ou exclusão.
Envie uma solicitação BatchWriteRow para realizar várias operações de atualização na mesma linha. No entanto, ao executar uma operação de contador atômico, realize apenas uma operação de atualização nessa linha por solicitação BatchWriteRow.
Atualize somente o valor da versão mais recente de um contador atômico. Não é possível atualizar o valor de uma versão específica. Após a conclusão da operação de atualização, o sistema insere uma nova versão dos dados no contador atômico da linha.
Sintaxe
/**
* Update a row of data.
* @api
* @param [] $request The request parameters.
* @return [] The response.
* @throws OTSClientException The exception that is thrown if a parameter error occurs or the Tablestore server returns a verification error.
* @throws OTSServerException The exception that is thrown if the Tablestore server returns an error.
*/
public function updateRow(array $request);
Chame updateRow para executar operações de contador atômico. A tabela a seguir lista as operações compatíveis.
|
Operação |
Descrição |
|
update_of_attribute_columns |
Defina o tipo de atualização como INCREMENT para incrementar ou decrementar o valor de uma coluna por um inteiro específico. Formato de configuração:
|
|
return_content |
Retorna o valor atualizado da coluna. Especifique o nome da coluna e defina return_type como
|
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
Nome da tabela. |
|
column_name |
Nome da coluna para execução da operação de contador atômico. Compatível apenas com colunas INTEGER. |
|
value |
Valor a incrementar ou decrementar na coluna. |
|
return_content |
Informações da coluna retornadas após a operação do contador atômico. Inclui os seguintes parâmetros:
|
Exemplo
O exemplo a seguir incrementa o valor de uma coluna INTEGER durante a gravação de dados e retorna o valor atualizado.
$request = array (
// Specify the name of the table.
'table_name' => 'MyTable',
// Set the row existence condition to RowExistenceExpectationConst::CONST_IGNORE, which specifies that the existence of rows is not checked.
'condition' => RowExistenceExpectationConst::CONST_IGNORE,
// Specify the primary key. The number and types of primary key columns that you specify must be the same as the actual number and types of primary key columns in the table.
'primary_key' => array (
// The name of the first primary key column is PK0, the data type is INTEGER, and the column value is 123.
array('PK0', 123),
// The name of the second primary key column is PK1, the data type is STRING, and the column value is 'inc'.
array('PK1', 'inc')
),
// The attribute column whose value is to be updated. Three operation types are supported: PUT, DELETE, and DELETE_ALL.
'update_of_attribute_columns'=> array(
'INCREMENT' => array (
// Specify the column on which the atomic counter operation is to be performed. The column name is attr0, the increment in the column value is 1, and the data type is INTEGER.
array('attr0', 1, ColumnTypeConst::CONST_INTEGER),
),
'PUT' => array(
array('attr1', 1, ColumnTypeConst::CONST_INTEGER),
)
),
// Return the column information after the atomic counter operation is performed.
'return_content' => array(
'return_type' => ReturnTypeConst::CONST_AFTER_MODIFY,
'return_column_names' => array('attr0')
)
);
$response = $otsClient->updateRow ($request);
print json_encode ($response);