Program Club

DynamoDB의 타임 스탬프에는 어떤 데이터 유형을 사용해야합니까?

proclub 2020. 11. 18. 21:42
반응형

DynamoDB의 타임 스탬프에는 어떤 데이터 유형을 사용해야합니까?


저는 DynamoDB를 처음 사용합니다. DeviceID를 해시 키로, Timestamp를 범위 키로 사용하고 일부 데이터를 사용하는 테이블을 만들고 싶습니다.

{ DeviceID: 123, Timestamp: "2016-11-11T17:21:07.5272333Z", X: 12, Y: 35 }

SQL에서는 Timestamp에 datetime 유형을 사용할 수 있지만 DynamoDB에는 없습니다.

  1. 어떤 데이터 유형을 사용해야합니까? 끈? 번호?
    여기에 이미지 설명 입력

  2. 선택한 데이터 유형에 대해 어떤 종류의 타임 스탬프 형식을 작성해야합니까? ISO 형식 (예 : 2016-11-11T17 : 21 : 07.5272333Z) 또는 epoch 시간 (예 : 1478943038816)?

  3. 시간 범위를 통해 테이블을 검색해야합니다. 예 : 1/1/2015 10:00:00 am ~ 31/12/2016 11:00:00 pm


날짜 또는 시간 소인 에는 문자열 데이터 유형을 사용해야합니다.

문자열 데이터 유형을 사용하여 날짜 또는 타임 스탬프를 나타낼 수 있습니다. 이를 수행하는 한 가지 방법은 다음 예제에 표시된대로 ISO 8601 문자열을 사용하는 것입니다.

2016-02-15

2015-12-21T17 : 42 : 34Z

20150311T122706Z

날짜 또는 타임 스탬프에 대한 DynamoDB 데이터 유형

예, 날짜가 문자열로 저장 될 때 범위 쿼리가 지원됩니다. BETWEEN FilterExpresssion 사용할 수 있습니다. 아래 필터 표현식을 사용하여 결과에 항목이 있습니다.

시간없는 FilterExpression :-

FilterExpression : 'createdate between :val1 and :val2',
ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01",
        ":val2" : "2010-12-31"
    }

시간에 따른 FilterExpression :-

FilterExpression : 'createdate between :val1 and :val2',
    ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01T00:00:00",
        ":val2" : "2010-12-31T00:00:00"
    }

데이터베이스 값 :-

형식 1-시간대 포함 :

{"Item":{"createdate":{"S":"2010-12-21T17:42:34+00:00"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

형식 2-시간대 없음 :-

{"Item":{"createdate":{"S":"2010-12-21T17:42:34Z"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

데이터 유형은 요구 사항에 따라 다릅니다.

ISO 형식을 사용하는 문자열 또는 epoch 형식을 사용하는 숫자를 사용할 수 있습니다.

ISO 형식 (문자열)의 장점은 사람이 읽을 수 있다는 점이지만 DynamoDB는이 형식에 대해 TTL (Time To Live)을 지원하지 않습니다. 모든 필터는 notionquest에 설명 된대로 '사이'및 '범위'와 같이 작동합니다.

DynamoDB 용 TTL (Time To Live) 을 사용하면 테이블의 항목이 만료되는시기를 정의하여 데이터베이스에서 자동으로 삭제할 수 있습니다.

Epoch 형식 (숫자) 사용의 장점은 TTL 기능과 모든 필터를 사용할 수 있다는 것입니다.

TLDR;

Epoch 형식 (숫자 유형)-TTL
ISO 형식 (문자열 유형)을 사용할 수 있습니다.-TTL은 사용할 수 없지만 사람이 더 읽기 쉽습니다.

참고 URL : https://stackoverflow.com/questions/40561484/what-data-type-should-be-use-for-timestamp-in-dynamodb

반응형