

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Keyspaces의 클라이언트 측 타임스탬프
<a name="client-side-timestamps"></a>

Amazon Keyspaces에서 클라이언트 측 타임스탬프는 테이블의 각 셀에 대해 유지되는 Cassandra 호환 타임스탬프입니다. 클라이언트 애플리케이션이 쓰기 순서를 결정하도록 함으로써 충돌 해결에 클라이언트 측 타임스탬프를 사용할 수 있습니다. 예를 들어 전 세계에 분산된 애플리케이션의 클라이언트가 동일한 데이터를 업데이트하는 경우 클라이언트 측 타임스탬프는 클라이언트에서 업데이트된 순서대로 유지됩니다. Amazon Keyspaces는 이러한 타임스탬프를 사용하여 쓰기를 처리합니다.

Amazon Keyspaces 클라이언트 측 타임스탬프는 완전한 관리형입니다. 정리 및 컴팩션 전략과 같은 낮은 수준의 시스템 설정을 관리할 필요가 없습니다.

데이터를 삭제하면 행이 삭제 표시와 함께 삭제로 표시됩니다. Amazon Keyspaces는 애플리케이션 성능이나 가용성에 영향을 주지 않고 삭제된 데이터를 자동으로(일반적으로 10일 이내) 제거합니다. 삭제 표시된 데이터는 데이터 조작 언어(DML) 문에 사용할 수 없습니다. 삭제된 데이터가 포함된 행에 대해 읽기 및 쓰기를 계속 수행하면 삭제된 데이터는 스토리지에서 삭제될 때까지 스토리지, 읽기 용량 단위(RCU), 쓰기 용량 단위(WCU)에 계속 포함됩니다.

테이블에 클라이언트 측 타임스탬프가 활성화되면 데이터 조작 언어(DML) CQL 쿼리에서 `USING TIMESTAMP` 절을 사용하여 타임스탬프를 지정할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에서 쿼리에 클라이언트 측 타임스탬프 사용](client-side-timestamps-how-to-queries.md) 단원을 참조하십시오. CQL 쿼리에서 타임스탬프를 지정하지 않으면 Amazon Keyspaces는 클라이언트 드라이버가 전달한 타임스탬프를 사용합니다. 클라이언트 드라이버가 타임스탬프를 제공하지 않는 경우, 타임스탬프는 `NULL`이 될 수 없으므로 Amazon Keyspaces에서 셀 수준 타임스탬프를 자동으로 할당합니다. 타임스탬프를 쿼리하려면 DML 문에 `WRITETIME` 함수를 사용할 수 있습니다.

Amazon Keyspaces는 클라이언트 측 타임스탬프를 활성화하는 데 추가 비용을 청구하지 않습니다. 하지만 클라이언트 측 타임스탬프를 사용하면 행의 각 값에 대해 추가 데이터를 저장하고 쓸 수 있습니다. 이로 인해 스토리지 사용량이 늘어나고 경우에 따라 처리량 사용량이 증가할 수 있습니다. Amazon Keyspaces 요금에 대한 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용) 요금](https://aws.amazon.com/keyspaces/pricing)을 참조하세요.

Amazon Keyspaces에서 클라이언트 측 타임스탬프를 활성화하면 모든 행의 모든 열에 타임스탬프가 저장됩니다. 이러한 타임스탬프는 약 20\$140바이트(데이터에 따라 다름)를 차지하며 행의 스토리지 및 처리량 비용에 영향을 줍니다. 이러한 메타데이터 바이트는 1MB 행 크기 할당량에도 포함됩니다. 행 크기가 1MB 미만으로 유지되도록 하기 위해 스토리지 공간의 전체 증가량을 확인하려면 테이블의 열 수와 각 행의 수집 요소 수를 확인하세요. 예를 들어 테이블에 20개의 열이 있고 각 열에 40바이트의 데이터가 저장되어 있는 경우 행 크기는 800바이트에서 1,200바이트로 증가합니다. 행 크기를 추정하는 방법에 대한 자세한 내용은 [Amazon Keyspaces에서 행 크기 추정](calculating-row-size.md) 섹션을 참조하세요. 이 예세에서는 스토리지를 위한 추가 400바이트 외에도 쓰기당 소비되는 쓰기 용량 단위(WCU) 수가 1WCU에서 2WCU로 늘어납니다. 읽기 및 쓰기 용량을 계산하는 방법에 대한 자세한 내용은 [Amazon Keyspaces의 읽기/쓰기 용량 모드 구성](ReadWriteCapacityMode.md) 섹션을 참조하세요.

테이블에 대해 클라이언트 측 타임스탬프가 활성화된 후에는 타임스탬프를 비활성화할 수 없습니다.

쿼리에서 클라이언트 측 타임스탬프를 사용하는 방법에 대한 자세한 내용은 [Amazon Keyspaces에서 쿼리에 클라이언트 측 타임스탬프 사용](client-side-timestamps-how-to-queries.md) 섹션을 참조하세요.

**Topics**
+ [Amazon Keyspaces 클라이언트 측 타임스탬프가 AWS 서비스와 통합되는 방법](#client-side-timestamps_integration)
+ [Amazon Keyspaces에서 클라이언트 측 타임스탬프가 있는 새 테이블 생성](client-side-timestamps-create-new-table.md)
+ [Amazon Keyspaces에서 테이블에 대한 클라이언트 측 타임스탬프 구성](client-side-timestamps-existing-table.md)
+ [Amazon Keyspaces에서 쿼리에 클라이언트 측 타임스탬프 사용](client-side-timestamps-how-to-queries.md)

## Amazon Keyspaces 클라이언트 측 타임스탬프가 AWS 서비스와 통합되는 방법
<a name="client-side-timestamps_integration"></a>

Amazon CloudWatch에서는 다음과 같은 클라이언트 측 타임스탬프 지표를 사용하여 지속적인 모니터링을 지원합니다.
+ `SystemReconciliationDeletes` — 삭제된 데이터를 제거하는 데 필요한 삭제 작업 횟수.

CloudWatch 지표를 모니터링하는 방법에 대한 자세한 내용은 [Amazon CloudWatch를 사용하여 Amazon Keyspaces 모니터링](monitoring-cloudwatch.md) 섹션을 참조하세요.

를 사용하면 Amazon Keyspaces 테이블을 생성할 때 클라이언트 측 타임스탬프를 활성화 CloudFormation할 수 있습니다. 자세한 내용은 [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html)를 참조하십시오.

# Amazon Keyspaces에서 클라이언트 측 타임스탬프가 있는 새 테이블 생성
<a name="client-side-timestamps-create-new-table"></a>

다음 예제에 따라 Amazon Keyspaces AWS Management Console, Cassandra 쿼리 언어(CQL) 또는를 사용하여 클라이언트 측 타임스탬프가 활성화된 새 Amazon Keyspaces 테이블을 생성합니다. AWS Command Line Interface

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

**클라이언트 측 타임스탬프가 있는 새 테이블 생성(콘솔)**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 탐색 창에서 **테이블**을 선택한 다음 **테이블 생성**을 선택합니다.

1. **테이블 세부 정보** 섹션의 **테이블 생성** 페이지에서 키스페이스를 선택하고 새 테이블의 이름을 입력합니다.

1. **스키마** 섹션에서 테이블의 스키마를 생성합니다.

1. **테이블 설정** 섹션에서 **설정 사용자 지정**을 선택합니다.

1. **클라이언트 측 타임스탬프**로 이동합니다.

   테이블의 클라이언트 측 타임스탬프를 활성화하려면 **클라이언트 측 타임스탬프 활성화**를 선택합니다.

1. **테이블 생성**을 선택합니다. 클라이언트 측 타임스탬프가 활성화된 상태로 테이블이 생성됩니다.

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

**CQL을 사용하여 새 테이블 생성**

1. CQL을 사용하여 클라이언트 측 타임스탬프가 활성화된 새 테이블을 생성하려면 다음 예제를 사용할 수 있습니다.

   ```
   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. 새 테이블의 클라이언트 측 타임스탬프 설정을 확인하려면 다음 예시와 같이 `SELECT` 문을 사용하여 `custom_properties`를 검토합니다.

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

   이 문의 출력에는 클라이언트 측 타임스탬프의 상태가 표시됩니다.

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

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

**를 사용하여 새 테이블 생성 AWS CLI**

1. 클라이언트 측 타임스탬프가 활성화된 새 테이블을 생성하려면 다음 예제를 사용할 수 있습니다.

   ```
   ./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. 새 테이블에 클라이언트 측 타임스탬프가 활성화되어 있는지 확인하려면 다음 코드를 실행합니다.

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

   결과가 다음 예제와 비슷해야 합니다.

   ```
   {
       "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": ""
       }
   }
   ```

------

# Amazon Keyspaces에서 테이블에 대한 클라이언트 측 타임스탬프 구성
<a name="client-side-timestamps-existing-table"></a>

다음 예제에 따라 Amazon Keyspaces AWS Management Console, Cassandra 쿼리 언어(CQL) 또는를 사용하여 기존 테이블에 대한 클라이언트 측 타임스탬프를 켭니다 AWS Command Line Interface.

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

**기존 테이블의 클라이언트 측 타임스탬프 활성화(콘솔)**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 업데이트할 테이블을 선택한 다음 **추가 설정** 탭을 선택합니다.

1. **추가 설정** 탭에서 **클라이언트 측 타임스탬프 수정**으로 이동한 다음 **클라이언트 측 타임스탬프 활성화**를 선택합니다.

1. **변경 내용 저장**을 선택하여 표 설정을 변경합니다.

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

**CQL 문 사용**

1. `ALTER TABLE` CQL 문을 사용하여 기존 테이블에 대한 클라이언트 측 타임스탬프를 설정합니다.

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

1. 새 테이블의 클라이언트 측 타임스탬프 설정을 확인하려면 다음 예시와 같이 `SELECT` 문을 사용하여 `custom_properties`를 검토합니다.

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

   이 문의 출력에는 클라이언트 측 타임스탬프의 상태가 표시됩니다.

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

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

**사용 AWS CLI**

1. 다음 예제를 사용하여 기존 테이블의 클라이언트 측 타임스탬프를 켤 수 AWS CLI 있습니다.

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

1. 테이블에 대해 클라이언트 측 타임스탬프가 활성화되어 있는지 확인하려면 다음 코드를 실행합니다.

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

   출력은 이 예제와 비슷해야 하며 클라이언트 측 타임스탬프의 상태를 `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": ""
       }
   }
   ```

------

# Amazon Keyspaces에서 쿼리에 클라이언트 측 타임스탬프 사용
<a name="client-side-timestamps-how-to-queries"></a>

클라이언트 측 타임스탬프를 활성화하면 `INSERT`, `UPDATE`, `DELETE` 문에 타임스탬프를 `USING TIMESTAMP` 절과 함께 전달할 수 있습니다.

타임스탬프 값은 epoch로 알려진 표준 기준 시간인 1970년 1월 1일 00:00:00(그리니치 표준시 기준) 이후 경과된 시간을 마이크로초 단위로 나타내는 `bigint` 값입니다. 클라이언트가 제공하는 타임스탬프는 현재 벽시계 시간으로부터 과거 2일과 미래의 5분 사이 범위에 속해야 합니다.

Amazon Keyspaces는 데이터 수명 기간 동안 타임스탬프 메타데이터를 보관합니다. `WRITETIME` 함수를 사용하여 지난 몇 년 동안 발생한 타임스탬프를 조회할 수 있습니다. CQL 구문에 대한 자세한 내용은 [Amazon Keyspaces의 DML 문(데이터 조작 언어)](cql.dml.md) 섹션을 참조하세요.

다음 CQL 문은 타임스탬프를 `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;
```

CQL 쿼리에 타임스탬프를 지정하지 않는 경우 Amazon Keyspaces는 클라이언트 드라이버가 전달한 타임스탬프를 사용합니다. 클라이언트 드라이버가 타임스탬프를 제공하지 않는 경우 Amazon Keyspaces는 쓰기 작업에 서버 측 타임스탬프를 할당합니다.

특정 열에 저장된 타임스탬프 값을 보려면 다음 예시와 같이 `SELECT` 문에 `WRITETIME` 함수를 사용하면 됩니다.

```
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;
```