Nota
La unidad básica de una tabla es una fila, la cual se compone de columnas de clave primaria y columnas de atributos. Las columnas de clave primaria son obligatorias, y sus nombres y tipos deben ser iguales en todas las filas. Las columnas de atributos son opcionales, por lo que los atributos pueden variar entre cada fila. Para obtener más información, consulte Wide table model.
Notas de uso
Al eliminar datos, la cantidad y los tipos de las columnas de clave primaria que especifique deben coincidir con el esquema de clave primaria de la tabla.
Los datos eliminados no se pueden recuperar. Proceda con precaución.
Eliminar una sola fila
Llame a la operación DeleteRow para eliminar una sola fila. Si la fila especificada no existe, la operación no surte efecto.
Al eliminar una fila, puede usar una actualización condicional para borrarla únicamente si cumple ciertas condiciones. Para obtener más información, consulte conditional update.
Eliminar varias filas
Una vez que obtenga las claves primarias de las filas que desea eliminar, llame a la operación BatchWriteRow para borrarlas por lotes.
Nota
Para eliminar automáticamente los datos anteriores a una fecha específica, utilice la función time to live (TTL). Para obtener más información, consulte time to live (TTL).
Al eliminar filas por lotes, dispone de las siguientes opciones:
Eliminar filas de varias tablas en una sola solicitud.
Usar una actualización condicional para eliminar las filas solo cuando cumplan ciertas condiciones. Para obtener más información, consulte conditional update.
Métodos
Console
Puede usar la consola de Tablestore para eliminar una o varias filas.
Inicie sesión en la consola de Tablestore.
En la página Overview, busque la instancia que desea gestionar y haga clic en Manage Instance dentro de la columna Actions.
En la pestaña Instance Details, haga clic en el nombre de una tabla dentro de la sección Tables.
En la pestaña Query Data, seleccione una o más filas para eliminar y luego haga clic en Delete en la parte inferior de la página.
En el cuadro de diálogo Delete, haga clic en OK.
Tablestore CLI
Ejecute el comando delete en Tablestore CLI para eliminar una fila.
A continuación se muestra un ejemplo que elimina una fila cuya primera columna de clave primaria es "86" y la segunda es 6771.
delete --pk '["86", 6771]'
SDKs
Utilice Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK o PHP SDK para eliminar datos. Los ejemplos a continuación usan el SDK de Java.
Eliminar una sola fila
-
Eliminar una fila
El siguiente código de ejemplo muestra cómo eliminar una fila de datos de una tabla:
private static void deleteRow(SyncClient client, String pkValue) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the name of the data table.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}
-
Usar una condición para eliminar una fila
El siguiente código de ejemplo muestra cómo eliminar una fila de datos de una tabla cuando la fila existe y el valor de la columna Col0 es mayor que 100:
private static void deleteRow(SyncClient client, String pkValue) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the name of the data table.
RowDeleteChange rowDeleteChange = new RowDeleteChange("<TABLE_NAME>", primaryKey);
// Specify conditions for the DeleteRow operation. In this example, a row is deleted only when the row exists and the value of the Col0 column is greater than 100.
Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
condition.setColumnCondition(new SingleColumnValueCondition("Col0",
SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100)));
rowDeleteChange.setCondition(condition);
client.deleteRow(new DeleteRowRequest(rowDeleteChange));
}
Eliminar varias filas
-
Antes de eliminar los datos, elija un método para consultar las claves primarias de las filas que desea borrar.
Si necesita eliminar filas dentro de un rango específico de claves primarias, use la operación GetRange para obtener dichas claves. Para obtener más información, consulte Read data.
Si va a eliminar filas que cumplen criterios específicos, cree un índice de búsqueda. Luego, utilícelo para consultar los datos y obtener las claves primarias de las filas por eliminar. Para obtener más información, consulte Create a search index y Use an SDK to query data with a search index.
-
Una vez que tenga las claves primarias, llame a la operación BatchWriteRow para eliminar las filas. Para obtener más información, consulte Batch write data.
El siguiente código de ejemplo muestra cómo eliminar simultáneamente una fila de datos donde el valor de la columna de clave primaria pk es pk en una tabla, y otra fila donde el valor de la columna de clave primaria pk1 es pk1 y el de pk2 es pk2 en una segunda tabla:
private static void batchWriteRow(SyncClient client) {
BatchWriteRowRequest batchWriteRowRequest = new BatchWriteRowRequest();
// Construct rowDeleteChange1.
PrimaryKeyBuilder pk1Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk1Builder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk"));
// Specify the name of the data table.
RowDeleteChange rowDeleteChange1 = new RowDeleteChange("<TABLE_NAME1>", pk1Builder.build());
// Add rowDeleteChange1 to the code of the batch operation.
batchWriteRowRequest.addRowChange(rowDeleteChange1);
// Construct rowDeleteChange2.
PrimaryKeyBuilder pk2Builder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pk2Builder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString("pk1"));
pk2Builder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.fromString("pk2"));
// Specify the name of the data table.
RowDeleteChange rowDeleteChange2 = new RowDeleteChange("<TABLE_NAME2>", pk2Builder.build());
// Add rowDeleteChange2 to the code of the batch operation.
batchWriteRowRequest.addRowChange(rowDeleteChange2);
BatchWriteRowResponse response = client.batchWriteRow(batchWriteRowRequest);
System.out.println("Whether all operations are successful:" + response.isAllSucceed());
if (!response.isAllSucceed()) {
for (BatchWriteRowResponse.RowResult rowResult : response.getFailedRows()) {
System.out.println("Failed rows:" + batchWriteRowRequest.getRowChange(rowResult.getTableName(), rowResult.getIndex()).getPrimaryKey());
System.out.println("Cause of failures:" + rowResult.getError());
}
/**
* You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed.
* We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This feature allows you to retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation.
*/
BatchWriteRowRequest retryRequest = batchWriteRowRequest.createRequestForRetry(response.getFailedRows());
}
}
Facturación
Se le cobran las unidades de capacidad (CU) que consuman sus operaciones. Según el tipo de instancia, la facturación se basa en CU de lectura y escritura bajo demanda o reservadas.
Las CU de lectura y escritura que consume una operación DeleteRow se calculan de la siguiente manera:
CU de escritura consumidas: el tamaño total de las columnas de clave primaria de la fila eliminada, dividido entre 4 KB y redondeado al entero superior más cercano.
CU de lectura consumidas: si se especifica una comprobación de condición (distinta de IGNORE), la cantidad se calcula como el tamaño total de las columnas de clave primaria, dividido entre 4 KB y redondeado al entero superior más cercano.
Si la operación termina con errores porque no se cumple una condición de existencia de fila, consume 1 CU de escritura.