기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
쓰기
연결된 디바이스, IT 시스템 및 산업 장비에서 시계열 데이터를 수집하여 실시간 분석을 위한 Timestream에 쓸 수 있습니다. Timestream for Live Analytics를 사용하면 시계열이 동일한 테이블에 속할 때 단일 시계열의 데이터 포인트 및/또는 여러 시리즈의 데이터 포인트를 단일 쓰기 요청으로 작성할 수 있습니다. 사용자의 편의를 위해 Timestream for Live Analytics는 데이터베이스에 쓰기를 호출할 때 지정하는 측정값의 차원 이름과 데이터 유형을 기반으로 Timestream for Live Analytics 테이블의 열 이름과 데이터 유형을 자동으로 감지하는 유연한 스키마를 제공합니다. 실시간 분석을 위한 Timestream에 데이터 배치를 작성할 수도 있습니다.
참고
Timestream for Live Analytics는 읽기에 대한 최종 일관성 의미 체계를 지원합니다. 즉, Timestream for Live Analytics에 데이터 배치를 작성한 직후에 데이터를 쿼리하면 쿼리 결과에 최근에 완료된 쓰기 작업의 결과가 반영되지 않을 수 있습니다. 결과에는 일부 오래된 데이터도 포함될 수 있습니다. 마찬가지로, 하나 이상의 새 차원으로 시계열 데이터를 쓰는 동안 쿼리는 짧은 시간 동안 열의 부분 하위 집합을 반환할 수 있습니다. 잠시 후 이러한 쿼리 요청을 반복하면 결과가 최신 데이터를 반환해야 합니다.
AWS SDKs, 또는 , , AWS LambdaAWS CLI, AWS IoT Core, Amazon Managed Service for Apache FlinkAmazon MSK, Amazon Kinesis를 통해 데이터를 쓸 수 있습니다오픈 소스 Telegraf.
주제
데이터 타입
Timestream for Live Analytics는 쓰기에 대해 다음 데이터 유형을 지원합니다.
데이터 유형 | 설명 |
---|---|
BIGINT |
64비트 부호 있는 정수를 나타냅니다. |
BOOLEAN |
로직의 두 가지 진실 값, 즉 true와 false를 나타냅니다. |
DOUBLE |
IEEE Standard 754 for Binary Floating-Point Arithmetic을 구현하는 64비트 변수 정밀도입니다. 참고쿼리에 사용할 수 있는 |
VARCHAR |
최대 길이 옵션이 있는 가변 길이 문자 데이터입니다. 최대 제한은 2KB입니다. |
MULTI |
다중 측정 레코드의 데이터 유형입니다. 이 데이터 유형에는 유형 |
TIMESTAMP |
UTC에서 나노초 정밀도 시간을 사용하여 인스턴스를 시간 단위로 나타내며 Unix 시간 이후의 시간을 추적합니다. 이 데이터 유형은 현재 다중 측정 레코드(즉, 유형의 측정값 내
범위의 지원 타임스탬프 |
사전 스키마 정의 없음
라이브 분석을 위한 Amazon Timestream으로 데이터를 전송하기 전에 AWS Management Console라이브 분석을 위한 Timestream SDKs 또는 라이브 분석을 위한 Timestream API 작업을 사용하여 데이터베이스와 테이블을 생성해야 합니다. 자세한 내용은 데이터베이스 생성 및 테이블 생성 단원을 참조하세요. 테이블을 생성하는 동안 스키마를 미리 정의할 필요가 없습니다. Amazon Timestream for Live Analytics는 전송되는 데이터 포인트의 측정값과 차원을 기반으로 스키마를 자동으로 감지하므로 더 이상 스키마를 오프라인으로 변경하여 빠르게 변화하는 시계열 데이터에 적용할 필요가 없습니다.
데이터 작성(삽입 및 업서트)
Amazon Timestream for Live Analytics의 쓰기 작업을 사용하면 데이터를 삽입하고 업서트할 수 있습니다. 기본적으로 Amazon Timestream for Live Analytics의 쓰기는 첫 번째 라이터 성공 시맨틱을 따르며, 여기서 데이터는 추가용으로만 저장되고 중복 레코드는 거부됩니다. 첫 번째 라이터는 많은 시계열 애플리케이션의 요구 사항을 충족하지만, 애플리케이션이 이기적인 방식으로 기존 레코드를 업데이트하고/하거나 마지막 라이터와 함께 데이터를 작성해야 하는 시나리오는 시맨틱에서 승리하며,이 경우 버전이 가장 높은 레코드가 서비스에 저장됩니다. 이러한 시나리오를 해결하기 위해 Amazon Timestream for Live Analytics는 데이터를 업서트할 수 있는 기능을 제공합니다. Upsert는 레코드가 없는 경우 레코드를 시스템에 삽입하거나 레코드가 있는 경우 레코드를 업데이트하는 작업입니다. 레코드가 업데이트되면 등전성 방식으로 업데이트됩니다.
삭제할 레코드 수준 작업이 없습니다. 하지만 테이블과 데이터베이스는 삭제할 수 있습니다.
메모리 스토어 및 마그네틱 스토어에 데이터 쓰기
Amazon Timestream for Live Analytics는 메모리 스토어와 마그네틱 스토어에 데이터를 직접 쓸 수 있는 기능을 제공합니다. 메모리 스토어는 처리량이 높은 데이터 쓰기에 최적화되어 있고 마그네틱 스토어는 도착 후 지연 데이터의 처리량이 낮은 쓰기에 최적화되어 있습니다.
지연 도착 데이터는 타임스탬프가 현재 시간보다 이전이고 메모리 스토어 보존 기간이 지난 데이터입니다. 테이블에 대한 마그네틱 스토어 쓰기를 활성화하여 지연 도착 데이터를 마그네틱 스토어에 쓸 수 있는 기능을 명시적으로 활성화해야 합니다. 또한 테이블MagneticStoreRejectedDataLocation
이 생성될 때 정의됩니다. 마그네틱 스토어에 쓰려면의 호출자에게 테이블 생성 MagneticStoreRejectedDataLocation
중에에 지정된 S3 버킷에 대한 S3:PutObject
권한이 WriteRecords
있어야 합니다. 자세한 내용은 CreateTable, WriteRecords 및 PutObject를 참조하세요.
단일 측정 레코드 및 다중 측정 레코드를 사용하여 데이터 작성
Amazon Timestream for Live Analytics는 두 가지 유형의 레코드, 즉 단일 측정 레코드와 다중 측정 레코드를 사용하여 데이터를 쓸 수 있는 기능을 제공합니다.
단일 측정 레코드
단일 측정 레코드를 사용하면 레코드당 단일 측정값을 보낼 수 있습니다. 이 형식을 사용하여 데이터를 Timestream for Live Analytics로 전송하면 Timestream for Live Analytics는 레코드당 테이블 행 하나를 생성합니다. 즉, 디바이스가 4개의 지표를 내보내고 각 지표가 단일 측정 레코드로 전송되는 경우 Timestream for Live Analytics는 테이블에 4개의 행을 생성하여이 데이터를 저장하고 각 행에 대해 디바이스 속성이 반복됩니다. 이 형식은 애플리케이션에서 단일 지표를 모니터링하려는 경우 또는 애플리케이션이 여러 지표를 동시에 내보내지 않는 경우에 권장됩니다.
다중 측정 레코드
다중 측정 레코드를 사용하면 테이블 행당 하나의 측정값을 저장하는 대신 단일 테이블 행에 여러 측정값을 저장할 수 있습니다. 따라서 다중 측정 레코드를 사용하면 최소한의 변경으로 관계형 데이터베이스에서 Amazon Timestream for Live Analytics로 기존 데이터를 마이그레이션할 수 있습니다.
단일 측정 레코드보다 단일 쓰기 요청에서 더 많은 데이터를 배치할 수도 있습니다. 이렇게 하면 데이터 쓰기 처리량과 성능이 향상되고 데이터 쓰기 비용도 줄어듭니다. 이는 쓰기 요청에서 더 많은 데이터를 배치화하면 Amazon Timestream for Live Analytics가 단일 쓰기 요청(해당하는 경우)에서 더 반복 가능한 데이터를 식별하고 반복된 데이터에 대해 한 번만 청구할 수 있기 때문입니다.
다중 측정 레코드
다중 측정 레코드를 사용하면 메모리 및 마그네틱 스토어에 시계열 데이터를 더 컴팩트한 형식으로 저장할 수 있으므로 데이터 스토리지 비용을 절감할 수 있습니다. 또한 컴팩트 데이터 스토리지는 데이터 검색을 위한 더 간단한 쿼리를 작성하고 쿼리 성능을 개선하며 쿼리 비용을 절감합니다.
또한 다중 측정 레코드는 시계열 레코드에 둘 이상의 타임스탬프를 저장하기 위한 TIMESTAMP 데이터 유형도 지원합니다. 다중 측정 레코드의 TIMESTAMP 속성은 향후 또는 과거의 타임스탬프를 지원합니다. 따라서 다중 측정 레코드는 성능, 비용 및 쿼리 단순성을 개선하고 서로 다른 유형의 상관관계가 있는 측정값을 저장할 수 있는 유연성을 제공합니다.
이점
다음은 다중 측정 레코드 사용의 이점입니다.
-
성능 및 비용 - 다중 측정 레코드를 사용하면 단일 쓰기 요청으로 여러 시계열 측정값을 작성할 수 있습니다. 이렇게 하면 쓰기 처리량이 증가하고 쓰기 비용도 줄어듭니다. 다중 측정 레코드를 사용하면 데이터를 더 컴팩트하게 저장할 수 있으므로 데이터 스토리지 비용을 절감할 수 있습니다. 다중 측정 레코드의 컴팩트한 데이터 스토리지로 인해 쿼리로 처리되는 데이터가 줄어듭니다. 이는 전체 쿼리 성능을 개선하고 쿼리 비용을 낮추는 데 도움이 되도록 설계되었습니다.
-
쿼리 단순성 - 다중 측정 레코드를 사용하면 타임스탬프가 동일한 여러 측정값을 읽기 위해 쿼리에 복잡한 일반 테이블 표현식(CTEs)을 작성할 필요가 없습니다. 이는 측정값이 단일 테이블 행에 열로 저장되기 때문입니다. 따라서 다중 측정 레코드를 사용하면 더 간단한 쿼리를 작성할 수 있습니다.
-
데이터 모델링 유연성 - TIMESTAMP 데이터 유형 및 다중 측정 레코드를 사용하여 Timestream for Live Analytics에 향후 타임스탬프를 작성할 수 있습니다. 다중 측정 레코드에는 레코드의 시간 필드 외에도 TIMESTAMP 데이터 유형의 여러 속성이 있을 수 있습니다. 다중 측정 레코드의 TIMESTAMP 속성은 향후 또는 과거의 타임스탬프를 가질 수 있으며 Timestream for Live Analytics가 다중 측정 레코드의 TIMESTAMP 유형 값을 인덱싱하지 않는다는 점을 제외하면 시간 필드처럼 동작할 수 있습니다.
사용 사례
지정된 시간에 동일한 디바이스에서 둘 이상의 측정값을 생성하는 모든 시계열 애플리케이션에 다중 측정 레코드를 사용할 수 있습니다. 다음은 몇 가지 예제 애플리케이션입니다.
-
지정된 시간에 수백 개의 지표를 생성하는 비디오 스트리밍 플랫폼입니다.
-
혈중 산소 수치, 심박수, 맥박과 같은 측정치를 생성하는 의료 기기입니다.
-
지표, 온도 및 날씨 센서를 생성하는 오일 리그와 같은 산업용 장비입니다.
-
하나 이상의 마이크로서비스로 설계된 기타 애플리케이션.
예: 비디오 스트리밍 애플리케이션의 성능 및 상태 모니터링
200 EC2 인스턴스에서 실행 중인 비디오 스트리밍 애플리케이션을 고려해 보세요. Amazon Timestream for Live Analytics를 사용하여 애플리케이션에서 내보내는 지표를 저장하고 분석하면 애플리케이션의 성능과 상태를 이해하고, 이상을 빠르게 식별하고, 문제를 해결하고, 최적화 기회를 발견할 수 있습니다.
단일 측정 레코드와 다중 측정 레코드를 사용하여이 시나리오를 모델링한 다음 두 접근 방식을 비교/대비합니다. 각 접근 방식에 대해 다음과 같은 가정을 합니다.
-
각 EC2 인스턴스는 초당 4개의 측정값(video_startup_time, rebuffering_ratio, video_playback_failures 및 average_frame_rate)과 4개의 차원(device_id, device_type, os_version 및 리전)을 내보냅니다.
-
메모리 스토어에 6시간의 데이터를 저장하고 마그네틱 스토어에 6개월의 데이터를 저장하려고 합니다.
-
이상을 식별하기 위해 지난 몇 분 동안 비정상적인 활동을 식별하기 위해 1분마다 실행되는 쿼리 10개를 설정했습니다. 또한 애플리케이션을 효과적으로 모니터링할 수 있도록 지난 6시간의 데이터를 표시하는 위젯 8개가 포함된 대시보드를 구축했습니다. 이 대시보드는 지정된 시간에 5명의 사용자가 액세스할 수 있으며 1시간마다 자동으로 새로 고쳐집니다.
단일 측정 레코드 사용
데이터 모델링: 단일 측정 레코드를 사용하면 네 가지 측정(비디오 시작 시간, 재버퍼링 비율, 비디오 재생 실패 및 평균 프레임 속도) 각각에 대해 하나의 레코드를 생성합니다. 각 레코드에는 4차원(device_id, device_type, os_version 및 리전)과 타임스탬프가 있습니다.
쓰기: Amazon Timestream for Live Analytics에 데이터를 쓰면 레코드가 다음과 같이 구성됩니다.
public void writeRecords() { System.out.println("Writing records"); // Specify repeated values for all records List<Record> records = new ArrayList<>(); final long time = System.currentTimeMillis(); List<Dimension> dimensions = new ArrayList<>(); final Dimension device_id = new Dimension().withName("device_id").withValue("12345678"); final Dimension device_type = new Dimension().withName("device_type").withValue("iPhone 11"); final Dimension os_version = new Dimension().withName("os_version").withValue("14.8"); final Dimension region = new Dimension().withName("region").withValue("us-east-1"); dimensions.add(device_id); dimensions.add(device_type); dimensions.add(os_version); dimensions.add(region); Record videoStartupTime = new Record() .withDimensions(dimensions) .withMeasureName("video_startup_time") .withMeasureValue("200") .withMeasureValueType(MeasureValueType.BIGINT) .withTime(String.valueOf(time)); Record rebufferingRatio = new Record() .withDimensions(dimensions) .withMeasureName("rebuffering_ratio") .withMeasureValue("0.5") .withMeasureValueType(MeasureValueType.DOUBLE) .withTime(String.valueOf(time)); Record videoPlaybackFailures = new Record() .withDimensions(dimensions) .withMeasureName("video_playback_failures") .withMeasureValue("0") .withMeasureValueType(MeasureValueType.BIGINT) .withTime(String.valueOf(time)); Record averageFrameRate = new Record() .withDimensions(dimensions) .withMeasureName("average_frame_rate") .withMeasureValue("0.5") .withMeasureValueType(MeasureValueType.DOUBLE) .withTime(String.valueOf(time)); records.add(videoStartupTime); records.add(rebufferingRatio); records.add(videoPlaybackFailures); records.add(averageFrameRate); WriteRecordsRequest writeRecordsRequest = new WriteRecordsRequest() .withDatabaseName(DATABASE_NAME) .withTableName(TABLE_NAME) .withRecords(records); try { WriteRecordsResult writeRecordsResult = amazonTimestreamWrite.writeRecords(writeRecordsRequest); System.out.println("WriteRecords Status: " + writeRecordsResult.getSdkHttpMetadata().getHttpStatusCode()); } catch (RejectedRecordsException e) { System.out.println("RejectedRecords: " + e); for (RejectedRecord rejectedRecord : e.getRejectedRecords()) { System.out.println("Rejected Index " + rejectedRecord.getRecordIndex() + ": " + rejectedRecord.getReason()); } System.out.println("Other records were written successfully. "); } catch (Exception e) { System.out.println("Error: " + e); } }
단일 측정 레코드를 저장할 때 데이터는 다음과 같이 논리적으로 표시됩니다.
Time | device_id | device_type | os_version | 리전 | measure_name | measure_value::bigint | measure_value::double |
---|---|---|---|---|---|---|---|
2021-09-07 21:48:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_startup_time |
200 |
|
2021-09-07 21:48:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
재버퍼링_비율 |
0.5 |
|
2021-09-07 21:48:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
비디오_재생_실패 |
0 |
|
2021-09-07 21:48:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
평균_프레임_속도 |
0.85 |
|
2021-09-07 21:53:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
video_startup_time |
500 |
|
2021-09-07 21:53:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
재버퍼링_비율 |
1.5 |
|
2021-09-07 21:53:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
비디오_재생_실패 |
10 |
|
2021-09-07 21:53:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
평균_프레임_속도 |
0.2 |
쿼리: 다음과 같이 지난 15분 동안 수신한 타임스탬프가 동일한 모든 데이터 포인트를 검색하는 쿼리를 작성할 수 있습니다.
with cte_video_startup_time as ( SELECT time, device_id, device_type, os_version, region, measure_value::bigint as video_startup_time FROM table where time >= ago(15m) and measure_name=”video_startup_time”), cte_rebuffering_ratio as ( SELECT time, device_id, device_type, os_version, region, measure_value::double as rebuffering_ratio FROM table where time >= ago(15m) and measure_name=”rebuffering_ratio”), cte_video_playback_failures as ( SELECT time, device_id, device_type, os_version, region, measure_value::bigint as video_playback_failures FROM table where time >= ago(15m) and measure_name=”video_playback_failures”), cte_average_frame_rate as ( SELECT time, device_id, device_type, os_version, region, measure_value::double as average_frame_rate FROM table where time >= ago(15m) and measure_name=”average_frame_rate”) SELECT a.time, a.device_id, a.os_version, a.region, a.video_startup_time, b.rebuffering_ratio, c.video_playback_failures, d.average_frame_rate FROM cte_video_startup_time a, cte_buffering_ratio b, cte_video_playback_failures c, cte_average_frame_rate d WHERE a.time = b.time AND a.device_id = b.device_id AND a.os_version = b.os_version AND a.region=b.region AND a.time = c.time AND a.device_id = c.device_id AND a.os_version = c.os_version AND a.region=c.region AND a.time = d.time AND a.device_id = d.device_id AND a.os_version = d.os_version AND a.region=d.region
워크로드 비용:이 워크로드의 비용은 단일 측정 레코드와 함께 매월 373.23달러로 추정됩니다.
다중 측정 레코드 사용
데이터 모델링: 다중 측정 레코드를 사용하면 4개의 모든 측정값(비디오 시작 시간, 재버퍼링 비율, 비디오 재생 실패 및 평균 프레임 속도), 4개의 모든 차원(device_id, device_type, os_version 및 리전) 및 타임스탬프가 포함된 하나의 레코드를 생성합니다.
쓰기: Amazon Timestream for Live Analytics에 데이터를 쓰면 레코드가 다음과 같이 구성됩니다.
public void writeRecords() { System.out.println("Writing records"); // Specify repeated values for all records List<Record> records = new ArrayList<>(); final long time = System.currentTimeMillis(); List<Dimension> dimensions = new ArrayList<>(); final Dimension device_id = new Dimension().withName("device_id").withValue("12345678"); final Dimension device_type = new Dimension().withName("device_type").withValue("iPhone 11"); final Dimension os_version = new Dimension().withName("os_version").withValue("14.8"); final Dimension region = new Dimension().withName("region").withValue("us-east-1"); dimensions.add(device_id); dimensions.add(device_type); dimensions.add(os_version); dimensions.add(region); Record videoMetrics = new Record() .withDimensions(dimensions) .withMeasureName("video_metrics") .withTime(String.valueOf(time)); .withMeasureValueType(MeasureValueType.MULTI) .withMeasureValues( new MeasureValue() .withName("video_startup_time") .withValue("0") .withValueType(MeasureValueType.BIGINT), new MeasureValue() .withName("rebuffering_ratio") .withValue("0.5") .withType(MeasureValueType.DOUBLE), new MeasureValue() .withName("video_playback_failures") .withValue("0") .withValueType(MeasureValueType.BIGINT), new MeasureValue() .withName("average_frame_rate") .withValue("0.5") .withValueType(MeasureValueType.DOUBLE)) records.add(videoMetrics); WriteRecordsRequest writeRecordsRequest = new WriteRecordsRequest() .withDatabaseName(DATABASE_NAME) .withTableName(TABLE_NAME) .withRecords(records); try { WriteRecordsResult writeRecordsResult = amazonTimestreamWrite.writeRecords(writeRecordsRequest); System.out.println("WriteRecords Status: " + writeRecordsResult.getSdkHttpMetadata().getHttpStatusCode()); } catch (RejectedRecordsException e) { System.out.println("RejectedRecords: " + e); for (RejectedRecord rejectedRecord : e.getRejectedRecords()) { System.out.println("Rejected Index " + rejectedRecord.getRecordIndex() + ": " + rejectedRecord.getReason()); } System.out.println("Other records were written successfully. "); } catch (Exception e) { System.out.println("Error: " + e); } }
다중 측정 레코드를 저장할 때 데이터는 다음과 같이 논리적으로 표시됩니다.
Time | device_id | device_type | os_version | 리전 | measure_name | video_startup_time | 재버퍼링_비율 | 비디오_재생_실패 | 평균_프레임_속도 |
---|---|---|---|---|---|---|---|---|---|
2021-09-07 21:48:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
비디오_메트릭 |
200 |
0.5 |
0 |
0.85 |
2021-09-07 21:53:44 .000000000 |
12345678 |
iPhone 11 |
14.8 |
us-east-1 |
비디오_메트릭 |
500 |
1.5 |
10 |
0.2 |
쿼리: 다음과 같이 지난 15분 동안 수신한 타임스탬프가 동일한 모든 데이터 포인트를 검색하는 쿼리를 작성할 수 있습니다.
SELECT time, device_id, device_type, os_version, region, video_startup_time, rebuffering_ratio, video_playback_failures, average_frame_rate FROM table where time >= ago(15m)
워크로드 비용: 워크로드 비용은 다중 측정 레코드에서 127.43달러로 추정됩니다.
참고
이 경우 다중 측정 레코드를 사용하면 전체 월별 예상 지출이 2.5배 줄어들고 데이터 쓰기 비용은 3.3배, 스토리지 비용은 3.3배, 쿼리 비용은 1.2배 줄어듭니다.
과거 또는 미래에 존재하는 타임스탬프가 있는 데이터 작성
Timestream for Live Analytics는 몇 가지 메커니즘을 통해 메모리 스토어 보존 기간 외부에 있는 타임스탬프를 사용하여 데이터를 쓸 수 있는 기능을 제공합니다.
-
마그네틱 스토어 쓰기 - 마그네틱 스토어 쓰기를 통해 지연 도착 데이터를 마그네틱 스토어에 직접 쓸 수 있습니다. 마그네틱 스토어 쓰기를 사용하려면 먼저 테이블에 마그네틱 스토어 쓰기를 활성화해야 합니다. 그런 다음 메모리 스토어에 데이터를 쓰는 데 사용된 것과 동일한 메커니즘을 사용하여 테이블에 데이터를 수집할 수 있습니다. Amazon Timestream for Live Analytics는 타임스탬프에 따라 마그네틱 스토어에 데이터를 자동으로 기록합니다.
참고
워드 지연 시간이 1초 미만의 범위에 있는 메모리 스토어에 데이터를 쓰는 것과 달리 마그네틱 스토어의 write-to-read write-to-read 지연 시간은 최대 6시간이 될 수 있습니다.
-
측정값에 대한 TIMESTAMP 데이터 유형 - TIMESTAMP 데이터 유형을 사용하여 과거, 현재 또는 미래의 데이터를 저장할 수 있습니다. 다중 측정 레코드에는 레코드의 시간 필드 외에도 TIMESTAMP 데이터 유형의 속성이 여러 개 있을 수 있습니다. 다중 측정 레코드의 TIMESTAMP 속성은 향후 또는 과거의 타임스탬프를 가질 수 있으며 Timestream for Live Analytics가 다중 측정 레코드의 TIMESTAMP 유형 값을 인덱싱하지 않는다는 점을 제외하고 시간 필드처럼 동작할 수 있습니다.
참고
TIMESTAMP 데이터 유형은 다중 측정 레코드에만 지원됩니다.
읽기에 대한 최종 일관성
Timestream for Live Analytics는 읽기에 대한 최종 일관성 의미 체계를 지원합니다. 즉, Timestream for Live Analytics에 데이터 배치를 작성한 직후에 데이터를 쿼리하면 쿼리 결과에 최근에 완료된 쓰기 작업의 결과가 반영되지 않을 수 있습니다. 잠시 후 이러한 쿼리 요청을 반복하면 결과가 최신 데이터를 반환해야 합니다.