Si desea implementar un contador para su aplicación en línea, utilice la función de contador atómico. Para usar esta función, configure una columna como contador atómico y ejecute operaciones de contador atómico sobre dicha columna.
Requisitos previos
El cliente se ha inicializado. Para obtener más información, consulte Initialize the Tablestore client.
Se ha creado una tabla de datos y se han escrito datos en ella. Para obtener más información, consulte Create a data table.
Notas de uso
Los contadores atómicos solo se pueden implementar en columnas de tipo INTEGER.
Si una columna especificada como contador atómico no existe antes de escribir los datos, su valor predeterminado será 0. Si la columna designada como contador atómico no es de tipo INTEGER, se produce un error OTSParameterInvalid.
Es posible actualizar un contador atómico mediante un número positivo o negativo, pero debe evitarse el desbordamiento de enteros. Si ocurre este desbordamiento, se devuelve un error OTSParameterInvalid.
De forma predeterminada, el valor del contador atómico no se incluye en la respuesta a una solicitud de actualización de fila. No obstante, puede especificar que se devuelva el valor actualizado del contador atómico.
No es posible especificar una columna como contador atómico y actualizarla en la misma solicitud de actualización. Por ejemplo, si configura la Columna A como contador atómico, no podrá ejecutar simultáneamente otras operaciones sobre ella, como sobrescritura o eliminación.
Mediante una solicitud BatchWriteRow se pueden realizar varias operaciones de actualización en la misma fila. Sin embargo, si ejecuta una operación de contador atómico sobre una fila, solo podrá llevar a cabo una única operación de actualización para esa fila dentro de la solicitud BatchWriteRow.
Únicamente se puede actualizar el valor de la versión más reciente de un contador atómico; no es posible modificar el valor de una versión específica. Una vez completada la operación de actualización, se inserta una nueva versión de datos en el contador atómico de la fila.
Sintaxis
/**
* 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);
Llame a updateRow para ejecutar operaciones de contador atómico. La siguiente tabla enumera las operaciones compatibles.
|
Operación |
Descripción |
|
update_of_attribute_columns |
Establezca el tipo de actualización en INCREMENT para incrementar o decrementar el valor de una columna en un entero específico. Formato de configuración:
|
|
return_content |
Devuelve el valor actualizado de la columna. Especifique el nombre de la columna y establezca return_type en
|
Parámetros
|
Parámetro |
Descripción |
|
table_name |
Nombre de la tabla. |
|
column_name |
Nombre de la columna sobre la cual se ejecutará la operación de contador atómico. Solo se admiten columnas de tipo INTEGER. |
|
value |
Cantidad en la que se incrementará o decrementará el valor de la columna. |
|
return_content |
Información de la columna que se devolverá tras la operación de contador atómico. Incluye los siguientes parámetros:
|
Ejemplo
En el siguiente ejemplo se incrementa el valor de una columna INTEGER al escribir datos y se devuelve el valor actualizado.
$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);