

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Marcas de tiempo del cliente en Amazon Keyspaces
<a name="client-side-timestamps"></a>

En Amazon Keyspaces, las marcas de tiempo del lado del cliente son marcas de tiempo compatibles con Cassandra que se mantienen para cada celda de su tabla. Puede utilizar las marcas de tiempo del lado del cliente para resolver conflictos al permitir que sus aplicaciones cliente determinen el orden de las escrituras. Por ejemplo, cuando los clientes de una aplicación distribuida globalmente realizan actualizaciones de los mismos datos, las marcas de tiempo del lado del cliente conservan el orden en que se realizaron las actualizaciones en los clientes. Amazon Keyspaces utiliza estas marcas de tiempo para procesar las escrituras. 

Las marcas de tiempo del cliente de Amazon Keyspaces están totalmente administradas. No tiene que administrar configuraciones de sistema de bajo nivel, como las estrategias de saneamiento y compactación. 

Al eliminar datos, las filas se marcan para su eliminación con una lápida. Amazon Keyspaces elimina los datos marcados automáticamente (normalmente en un plazo de 10 días) sin afectar al rendimiento o la disponibilidad de su aplicación. Los datos lapidados no están disponibles para las instrucciones de lenguaje de manipulación de datos (DML). A medida que continúe realizando lecturas y escrituras en filas que contienen datos sepultados, los datos sepultados seguirán contabilizándose para el almacenamiento, las unidades de capacidad de lectura () y las unidades de capacidad de escritura (RCUsWCUs) hasta que se eliminen del almacenamiento. 

Una vez activadas las marcas de tiempo del lado del cliente para una tabla, puede especificar una marca de tiempo con la cláusula `USING TIMESTAMP` en su consulta CQL en lenguaje de manipulación de datos (DML). Para obtener más información, consulte [Uso de marcas de tiempo del cliente en consultas en Amazon Keyspaces](client-side-timestamps-how-to-queries.md). Si no especifica una marca de tiempo en su consulta CQL, Amazon Keyspaces utiliza la marca de tiempo transferida por su controlador de cliente. Si el controlador de cliente no suministra marcas de tiempo, Amazon Keyspaces asigna automáticamente una marca de tiempo en el nivel de celda, ya que las marcas de tiempo no pueden ser `NULL`. Para consultar las marcas de tiempo, puede utilizar la función `WRITETIME` en su instrucción DML. 

Amazon Keyspaces no cobra cargos adicionales por activar las marcas de tiempo del cliente. Sin embargo, con las marcas de tiempo del lado del cliente se almacenan y escriben datos adicionales para cada valor de la fila. Esto puede conllevar un uso adicional de almacenamiento y, en algunos casos, de rendimiento. Para obtener más información sobre precios de Amazon Keyspaces, consulte [Precios de Amazon Keyspaces (para Apache Cassandra)](https://aws.amazon.com/keyspaces/pricing).

Cuando las marcas de tiempo del cliente están activadas en Amazon Keyspaces, cada columna de cada fila almacena una marca de tiempo. Estas marcas de tiempo ocupan aproximadamente entre 20 y 40 bytes (dependiendo de sus datos) y contribuyen al costo de almacenamiento y rendimiento de la fila. Estos bytes de metadatos también cuentan para su cuota de tamaño de fila de 1 MB. Para determinar el aumento global de espacio de almacenamiento (a fin de garantizar que el tamaño de la fila se mantenga por debajo de 1 MB), tenga en cuenta el número de columnas de su tabla y el número de elementos de la colección en cada fila. Por ejemplo, si una tabla tiene 20 columnas y cada columna almacena 40 bytes de datos, el tamaño de la fila aumenta de 800 bytes a 1200 bytes. Para obtener más información sobre cómo calcular el tamaño de una fila, consulte [Estimación del tamaño de las filas en Amazon Keyspaces](calculating-row-size.md). Además de los 400 bytes adicionales para el almacenamiento, en este ejemplo, el número de unidades de capacidad de escritura (WCUs) consumidas por escritura aumenta de 1 WCU a 2. WCUs Para obtener más información sobre cómo calcular la capacidad de lectura y escritura, consulte [Configurar los modos de read/write capacidad en Amazon Keyspaces](ReadWriteCapacityMode.md).

Una vez activadas las marcas de tiempo del cliente para una tabla, no puede desactivarlas. 

Para obtener más información sobre cómo utilizar las marcas de tiempo del cliente en las consultas, consulte [Uso de marcas de tiempo del cliente en consultas en Amazon Keyspaces](client-side-timestamps-how-to-queries.md).

**Topics**
+ [Cómo se integran las marcas de tiempo del lado del cliente de Amazon Keyspaces con los servicios AWS](#client-side-timestamps_integration)
+ [Creación de una nueva tabla con marcas de tiempo del cliente en Amazon Keyspaces](client-side-timestamps-create-new-table.md)
+ [Configuración de marcas de tiempo del cliente para una tabla en Amazon Keyspaces](client-side-timestamps-existing-table.md)
+ [Uso de marcas de tiempo del cliente en consultas en Amazon Keyspaces](client-side-timestamps-how-to-queries.md)

## Cómo se integran las marcas de tiempo del lado del cliente de Amazon Keyspaces con los servicios AWS
<a name="client-side-timestamps_integration"></a>

La siguiente métrica de marcas horarias del lado del cliente está disponible en Amazon CloudWatch para permitir la supervisión continua.
+ `SystemReconciliationDeletes`: el número de operaciones de eliminación necesarias para eliminar los datos lapidados.

Para obtener más información sobre cómo supervisar CloudWatch las métricas, consulte. [Supervisión de Amazon Keyspaces con Amazon CloudWatch](monitoring-cloudwatch.md)

Cuando lo usas CloudFormation, puedes habilitar las marcas de tiempo del lado del cliente al crear una tabla de Amazon Keyspaces. Para obtener más información, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html). 

# Creación de una nueva tabla con marcas de tiempo del cliente en Amazon Keyspaces
<a name="client-side-timestamps-create-new-table"></a>

Siga estos ejemplos para crear una nueva tabla de Amazon Keyspaces con marcas de tiempo del lado del cliente habilitadas mediante Amazon Consola de administración de AWS Keyspaces, Cassandra Query Language (CQL) o AWS Command Line Interface

------
#### [ Console ]

**Creación de una nueva tabla con marcas de tiempo del cliente (consola)**

1. [Inicia sesión en la Consola de administración de AWS consola de Amazon Keyspaces y ábrela desde casahttps://console.aws.amazon.com/keyspaces/.](https://console.aws.amazon.com/keyspaces/home)

1. En el panel de navegación, elija **Tablas** y, a continuación, seleccione **Crear tabla**.

1. En la página **Crear tabla**, en la sección **Detalles de la tabla**, seleccione un espacio de claves y proporcione un nombre para la nueva tabla.

1. En la sección **Esquema**, cree el esquema para su tabla.

1. En la sección **Configuración de la tabla**, elija **Personalizar configuración**.

1. Continúe hasta **Marcas de tiempo del lado del cliente**.

   Elija **Activar marcas de tiempo del lado del cliente** para activar las marcas de tiempo del lado del cliente para la tabla. 

1. Elija **Crear tabla**. Su tabla se crea con las marcas de tiempo del cliente activadas.

------
#### [ Cassandra Query Language (CQL) ]

**Creación de una tabla utilizando CQL**

1. Para crear una nueva tabla con marcas de tiempo del cliente activadas mediante CQL, puede utilizar el siguiente ejemplo.

   ```
   CREATE TABLE my_keyspace.my_table (
      userid uuid,
      time timeuuid,
      subject text,
      body text,
      user inet,
      PRIMARY KEY (userid, time)
   ) WITH CUSTOM_PROPERTIES = {'client_side_timestamps': {'status': 'enabled'}};
   ```

1. Para confirmar la configuración de las marcas de tiempo del cliente para la nueva tabla, utilice la instrucción `SELECT` para revisar `custom_properties` como se muestra en el siguiente ejemplo. 

   ```
   SELECT custom_properties from system_schema_mcs.tables where keyspace_name = 'my_keyspace' and table_name = 'my_table';
   ```

   La salida de esta instrucción muestra el estado de las marcas de tiempo del cliente.

   ```
   'client_side_timestamps': {'status': 'enabled'}
   ```

------
#### [ AWS CLI ]

**Cree una tabla nueva con el AWS CLI**

1. Para crear una nueva tabla con marcas de tiempo del cliente activadas, puede utilizar el siguiente ejemplo.

   ```
   ./aws keyspaces create-table \
   --keyspace-name my_keyspace \
   --table-name my_table \
   --client-side-timestamps 'status=ENABLED' \
   --schema-definition 'allColumns=[{name=id,type=int},{name=date,type=timestamp},{name=name,type=text}],partitionKeys=[{name=id}]'
   ```

1. Para confirmar que las marcas de tiempo del cliente estén activadas para la nueva tabla, ejecute el siguiente código.

   ```
   ./aws keyspaces get-table \
   --keyspace-name my_keyspace \
   --table-name my_table
   ```

   La salida debe ser similar al siguiente ejemplo.

   ```
   {
       "keyspaceName": "my_keyspace",
       "tableName": "my_table",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/table/my_table",
       "creationTimestamp": 1662681206.032,
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": 1662681206.032
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "clientSideTimestamps": {
           "status": "ENABLED"
       },
       "ttl": {
           "status": "ENABLED"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       }
   }
   ```

------

# Configuración de marcas de tiempo del cliente para una tabla en Amazon Keyspaces
<a name="client-side-timestamps-existing-table"></a>

Siga estos ejemplos para activar las marcas de tiempo del lado del cliente para las tablas existentes mediante Amazon Keyspaces Consola de administración de AWS, Cassandra Query Language (CQL) o. AWS Command Line Interface

------
#### [ Console ]

**Para activar las marcas de tiempo del cliente para una tabla existente (consola)**

1. [Inicia sesión en la Consola de administración de AWS consola de Amazon Keyspaces y ábrela desde casahttps://console.aws.amazon.com/keyspaces/.](https://console.aws.amazon.com/keyspaces/home)

1. Elija la tabla que desee actualizar y elija la pestaña **Configuración adicional**.

1. En la pestaña **Configuración adicional**, vaya a **Modificar marcas de tiempo del lado del cliente** y seleccione **Activar marcas de tiempo del lado del cliente**.

1. Elija **Guardar cambios** para cambiar la configuración de la tabla.

------
#### [ Cassandra Query Language (CQL) ]

**Uso de una instrucción CQL**

1. Active las marcas de tiempo del cliente de una tabla existente con una instrucción CQL `ALTER TABLE`.

   ```
   ALTER TABLE my_table WITH custom_properties = {'client_side_timestamps': {'status': 'enabled'}};;
   ```

1. Para confirmar la configuración de las marcas de tiempo del cliente para la nueva tabla, utilice la instrucción `SELECT` para revisar `custom_properties` como se muestra en el siguiente ejemplo. 

   ```
   SELECT custom_properties from system_schema_mcs.tables where keyspace_name = 'my_keyspace' and table_name = 'my_table';
   ```

   La salida de esta instrucción muestra el estado de las marcas de tiempo del cliente.

   ```
   'client_side_timestamps': {'status': 'enabled'}
   ```

------
#### [ AWS CLI ]

**Usando la AWS CLI**

1. Puede activar las marcas de tiempo del lado del cliente para una tabla existente AWS CLI mediante el siguiente ejemplo.

   ```
   ./aws keyspaces update-table \
   --keyspace-name my_keyspace \
   --table-name my_table \
   --client-side-timestamps 'status=ENABLED'
   ```

1. Para confirmar que las marcas de tiempo del cliente estén activadas para la tabla, ejecute el siguiente código.

   ```
   ./aws keyspaces get-table \
   --keyspace-name my_keyspace \
   --table-name my_table
   ```

   La salida debe ser similar al siguiente ejemplo e indicar el estado de las marcas de tiempo del cliente como `ENABLED`.

   ```
   {
       "keyspaceName": "my_keyspace",
       "tableName": "my_table",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/table/my_table",
       "creationTimestamp": 1662681312.906,
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": 1662681312.906
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "clientSideTimestamps": {
           "status": "ENABLED"
       },
       "ttl": {
           "status": "ENABLED"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       }
   }
   ```

------

# Uso de marcas de tiempo del cliente en consultas en Amazon Keyspaces
<a name="client-side-timestamps-how-to-queries"></a>

Una vez activadas las marcas de tiempo del cliente, puede pasar la marca de tiempo en sus instrucciones `INSERT`, `UPDATE` y `DELETE` con la cláusula `USING TIMESTAMP`. 

El valor de la marca de tiempo es un `bigint` que representa un número de microsegundos desde la hora base estándar conocida como epoch: 1 de enero de 1970 a las 00:00:00 GMT. Una marca de tiempo proporcionada por el cliente tiene que caer en el rango de 2 días en el pasado a 5 minutos en el futuro desde la hora actual del reloj de pared.

Amazon Keyspaces conserva los metadatos de marca de tiempo durante toda la vida de los datos. Puede utilizar la función `WRITETIME` para buscar marcas de tiempo que ocurrieron años atrás. Para obtener más información sobre la sintaxis CQL, consulte [Instrucciones DML (lenguaje de manipulación de datos) en Amazon Keyspaces](cql.dml.md).

La siguiente instrucción CQL es un ejemplo de cómo utilizar una marca de tiempo como `update_parameter`. 

```
INSERT INTO catalog.book_awards (year, award, rank, category, book_title, author, publisher)
   VALUES (2022, 'Wolf', 4, 'Non-Fiction', 'Science Update', 'Ana Carolina Silva', 'SomePublisher') 
   USING TIMESTAMP 1669069624;
```

Si no especifica una marca de tiempo en su consulta CQL, Amazon Keyspaces utiliza la marca de tiempo transferida por su controlador de cliente. Si el controlador de cliente no proporciona ninguna marca de tiempo, Amazon Keyspaces asigna una marca de tiempo del lado del servidor para su operación de escritura. 

Para ver el valor de marca de tiempo que se almacena para una columna específica, puede utilizar la función `WRITETIME` en una instrucción `SELECT` como se muestra en el siguiente ejemplo. 

```
SELECT year, award, rank, category, book_title, author, publisher, WRITETIME(year), WRITETIME(award), WRITETIME(rank),
  WRITETIME(category), WRITETIME(book_title), WRITETIME(author), WRITETIME(publisher) from catalog.book_awards;
```