

Amazon Timestream for LiveAnalytics와 유사한 기능을 원하는 경우 Amazon Timestream for InfluxDB를 고려해 보세요. 간소화된 데이터 수집과 실시간 분석을 위한 10밀리초 미만의 쿼리 응답 시간을 제공합니다. [여기](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)에서 자세히 알아보세요.

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

# WriteRecords
<a name="API_WriteRecords"></a>

시계열 데이터를 Timestream에 쓸 수 있습니다. 시스템에 삽입할 단일 데이터 포인트 또는 데이터 포인트 배치를 지정할 수 있습니다. Timestream은 데이터베이스에 쓰기를 간접적으로 호출할 때 지정하는 데이터 요소의 차원 이름 및 데이터 유형을 기반으로 Timestream 테이블의 열 이름 및 데이터 유형을 자동으로 탐지하는 유연한 스키마를 제공합니다.

Timestream은 최종 일관성 읽기 시맨틱을 지원합니다. 즉, Timestream에 데이터 배치를 작성한 직후 데이터를 쿼리할 때 쿼리 결과에 최근에 완료된 쓰기 작업의 결과가 반영되지 않을 수 있습니다. 결과에는 일부 오래된 데이터도 포함될 수 있습니다. 잠시 후 쿼리 요청을 반복하면 결과가 최신 데이터를 반환합니다. [서비스 할당량이 적용](https://docs.aws.amazon.com/timestream/latest/developerguide/ts-limits.html)됩니다.

자세한 내용은 [코드 샘플](https://docs.aws.amazon.com/timestream/latest/developerguide/code-samples.write.html)을 참조하세요.

 **업서트** 

`WriteRecords` 요청에서 `Version` 파라미터를 사용하여 데이터 포인트를 업데이트할 수 있습니다. Timestream은 각 레코드와 함께 버전 번호를 추적합니다. 요청의 레코드에 지정되지 않은 경우 `1`은 기본적으로 `Version`으로 설정됩니다. Timestream은 기존 레코드에 대해 더 높은 `Version` 번호가 포함된 쓰기 요청을 수신하면 해당 레코드의 측정값과 `Version`을 함께 업데이트합니다. 측정값이 기존 레코드의 값과 동일한 업데이트 요청을 수신하면 Timestream은 기존 `Version` 값보다 큰 경우 `Version`을 계속 업데이트합니다. `Version` 값이 지속적으로 증가하는 한 원하는 횟수만큼 데이터 포인트를 업데이트할 수 있습니다.

 예를 들어 요청에 `Version`을 표시하지 않고 새 레코드를 작성한다고 가정해 보겠습니다. Timestream은 이 레코드를 저장하고 `Version`을 `1`로 설정합니다. 이제 측정값이 다른 동일한 레코드의 `WriteRecords` 요청으로 이 레코드를 업데이트하려고 하지만 이전과 마찬가지로 `Version`을 제공하지 않는다고 가정해 보겠습니다. 이 경우 업데이트된 레코드의 버전이 기존 버전 값보다 크지 않으므로 Timestream은 `RejectedRecordsException`과 함께 이 업데이트를 거부합니다.

그러나 `Version`을 `2`로 설정하여 업데이트 요청을 다시 보내면 Timestream은 레코드 값을 성공적으로 업데이트하고 `Version`은 `2`로 설정됩니다. 다음으로, 동일한 레코드와 동일한 측정값이 있지만 `Version`이 `3`으로 설정된 `WriteRecords` 요청을 전송했다고 가정해 보겠습니다. 이 경우 Timestream은 `Version`만 `3`으로 업데이트합니다. 추가 업데이트 시 `3`보다 큰 버전 번호를 전송해야 하거나 업데이트 요청에 `RejectedRecordsException`이 수신됩니다.

## 구문 요청
<a name="API_WriteRecords_RequestSyntax"></a>

```
{
   "CommonAttributes": { 
      "Dimensions": [ 
         { 
            "DimensionValueType": "string",
            "Name": "string",
            "Value": "string"
         }
      ],
      "MeasureName": "string",
      "MeasureValue": "string",
      "MeasureValues": [ 
         { 
            "Name": "string",
            "Type": "string",
            "Value": "string"
         }
      ],
      "MeasureValueType": "string",
      "Time": "string",
      "TimeUnit": "string",
      "Version": number
   },
   "DatabaseName": "string",
   "Records": [ 
      { 
         "Dimensions": [ 
            { 
               "DimensionValueType": "string",
               "Name": "string",
               "Value": "string"
            }
         ],
         "MeasureName": "string",
         "MeasureValue": "string",
         "MeasureValues": [ 
            { 
               "Name": "string",
               "Type": "string",
               "Value": "string"
            }
         ],
         "MeasureValueType": "string",
         "Time": "string",
         "TimeUnit": "string",
         "Version": number
      }
   ],
   "TableName": "string"
}
```

## 요청 파라미터
<a name="API_WriteRecords_RequestParameters"></a>

모든 작업에 공통되는 파라미터에 대한 자세한 설명은 [공통 파라미터](CommonParameters.md)를 참조하세요.

요청은 JSON 형식으로 다음 데이터를 받습니다.

 ** [CommonAttributes](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-CommonAttributes"></a>
요청의 모든 레코드에서 공유되는 공통 치수, 차원, 시간 및 버전 속성을 포함하는 레코드입니다. 지정된 측정 및 차원 속성은 데이터가 Timestream에 작성될 때 레코드 객체의 측정 및 차원 속성과 병합됩니다. 차원이 겹치지 않거나 `ValidationException`이 발생합니다. 즉, 레코드에는 고유한 이름을 가진 차원이 포함되어야 합니다.  
유형: [Record](API_Record.md)객체  
필수 여부: 아니요

 ** [DatabaseName](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-DatabaseName"></a>
Timestream 데이터베이스의 이름입니다.  
유형: 문자열  
길이 제약 조건: 최소 길이는 3입니다. 최대 길이는 256.  
필수 항목 여부: 예

 ** [Records](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-Records"></a>
각 시계열 데이터 포인트에 대한 고유한 치수, 차원, 시간 및 버전 속성을 포함하는 레코드 배열입니다.  
타입: [Record](API_Record.md)객체 배열  
어레이 멤버: 최소 항목 수 1개. 최대수는 100개입니다.  
필수 항목 여부: 예

 ** [TableName](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-TableName"></a>
Timestream 테이블의 이름입니다.  
유형: 문자열  
길이 제약 조건: 최소 길이는 3입니다. 최대 길이는 256.  
필수 여부: 예

## 응답 구문
<a name="API_WriteRecords_ResponseSyntax"></a>

```
{
   "RecordsIngested": { 
      "MagneticStore": number,
      "MemoryStore": number,
      "Total": number
   }
}
```

## 응답 요소
<a name="API_WriteRecords_ResponseElements"></a>

작업이 성공하면 서비스가 HTTP 200 응답을 반송합니다.

다음 데이터는 서비스에 의해 JSON 형식으로 반환됩니다.

 ** [RecordsIngested](#API_WriteRecords_ResponseSyntax) **   <a name="timestream-WriteRecords-response-RecordsIngested"></a>
이 요청에서 수집된 레코드에 대한 정보입니다.  
타입: [RecordsIngested](API_RecordsIngested.md) 객체

## 오류
<a name="API_WriteRecords_Errors"></a>

모든 작업에 공통되는 오류에 대한 내용은 [일반적인 오류](CommonErrors.md) 섹션을 참조하세요.

 ** AccessDeniedException **   
이 작업을 수행할 권한이 없습니다.  
HTTP 상태 코드: 400

 ** InternalServerException **   
 내부 서버 오류로 인해 Timestream이 이 요청을 완전히 처리할 수 없습니다.  
HTTP 상태 코드: 500

 ** InvalidEndpointException **   
요청된 엔드포인트가 유효하지 않습니다.  
HTTP 상태 코드: 400

 ** RejectedRecordsException **   
 다음과 같은 경우 WriteRecords에서 이 예외가 발생합니다.  
+ 동일한 차원, 타임스탬프 및 측정 이름을 가진 여러 레코드가 있지만 다음과 같은 중복 데이터가 있는 레코드: 
  + 측정값이 다릅니다.
  + 요청에 버전이 *없거나* 새 레코드의 버전 값이 기존 값보다 작거나 같음

   이 경우 Timestream이 데이터를 거부하면 `RejectedRecords` 응답의 `ExistingVersion` 필드에 현재 레코드의 버전이 표시됩니다. 업데이트를 강제로 수행하려면 레코드 세트의 버전을 `ExistingVersion`보다 큰 값으로 설정하여 요청을 재전송하면 됩니다.
+  메모리 스토어의 보존 기간을 벗어나는 타임스탬프가 있는 레코드입니다.
+  Timestream 정의 한도를 초과하는 차원 또는 측정이 있는 레코드입니다.
 자세한 내용은 Amazon Timestream 개발자 안내서의 [할당량](https://docs.aws.amazon.com/timestream/latest/developerguide/ts-limits.html)을 참조하세요.    
 ** RejectedRecords **   
 
HTTP 상태 코드: 400

 ** ResourceNotFoundException **   
작업이 존재하지 않는 리소스에 액세스하려고 했습니다. 리소스가 올바르게 지정되지 않았거나 상태가 ACTIVE가 아닐 수 있습니다.  
HTTP 상태 코드: 400

 ** ThrottlingException **   
 사용자가 너무 많은 요청을 했으며 서비스 할당량을 초과했습니다. 요청에 병목 현상이 발생했습니다.  
HTTP 상태 코드: 400

 ** ValidationException **   
 유효하지 않거나 잘못된 형식의 요청입니다.  
HTTP 상태 코드: 400

## 참고
<a name="API_WriteRecords_SeeAlso"></a>

언어별 AWS SDKs
+  [AWS 명령줄 인터페이스 V2](https://docs.aws.amazon.com/goto/cli2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS .NET V4용 SDK](https://docs.aws.amazon.com/goto/DotNetSDKV4/timestream-write-2018-11-01/WriteRecords) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/timestream-write-2018-11-01/WriteRecords) 
+  [AWS Go용 SDK v2](https://docs.aws.amazon.com/goto/SdkForGoV2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS Java V2용 SDK](https://docs.aws.amazon.com/goto/SdkForJavaV2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/timestream-write-2018-11-01/WriteRecords) 
+  [AWS PHP V3용 SDK](https://docs.aws.amazon.com/goto/SdkForPHPV3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS Python용 SDK](https://docs.aws.amazon.com/goto/boto3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/timestream-write-2018-11-01/WriteRecords) 