Amazon DynamoDB에서 지원되는 데이터 형식 및 이름 지정 규칙 - Amazon DynamoDB

Amazon DynamoDB에서 지원되는 데이터 형식 및 이름 지정 규칙

이 단원에서는 Amazon DynamoDB 이름 지정 규칙 및 DynamoDB가 지원하는 다양한 데이터 형식에 대해 설명합니다. 제한된 데이터 형식이 적용됩니다. 자세한 내용은 데이터 타입 단원을 참조하십시오.

이름 지정 규칙

DynamoDB의 테이블, 속성 및 기타 객체는 이름이 있어야 합니다. 이름은 의미 있고 간결해야 합니다. 예를 들어 Products, Books, Authors와 같이 이름은 쉽게 이해되어야 합니다.

다음은 DynamoDB의 이름 지정 규칙입니다.

  • 모든 이름은 UTF-8로 인코딩되어야 하며, 대소문자를 구분합니다.

  • 테이블 이름 및 인덱스 이름은 3~255자로 이루어져야 하며, 다음 문자만 포함할 수 있습니다.

    • a-z

    • A-Z

    • 0-9

    • _ (밑줄)

    • -(대시)

    • .(점)

  • 속성 이름은 1자 이상이고 크기가 64KB 미만이어야 합니다. 속성 이름을 최대한 짧게 유지하는 것이 좋습니다. 이렇게 하면 속성 이름이 스토리지 및 처리량 사용량 측정에 포함되므로 사용되는 읽기 요청 단위를 줄일 수 있습니다.

    다음과 같은 예외가 있습니다. 이러한 속성 이름은 255자 이내여야 합니다.

    • 보조 인덱스 파티션 키 이름

    • 보조 인덱스 정렬 키 이름

    • 사용자 지정 프로젝션 속성 이름(로컬 보조 인덱스에만 적용 가능)

예약어 및 특수 문자

DynamoDB에 예약어 목록과 특수 문자가 있습니다. 전체 목록은 DynamoDB의 예약어 단원을 참조하세요. 또한 DynamoDB에서 #(해시) 및 :(콜론)은 특별한 의미를 갖습니다.

DynamoDB에서 이러한 예약어 및 특수 문자를 이름에 사용하도록 허용하는 경우에도 표현식에서 이러한 이름을 사용할 때마다 자리 표시자 변수를 정의해야 하므로 사용하지 않는 것이 좋습니다. 자세한 내용은 DynamoDB의 표현식 속성 이름(별칭) 단원을 참조하십시오.

데이터 타입

DynamoDB는 테이블 내 속성에 대해 다양한 데이터 형식을 지원합니다. 이는 다음과 같이 분류할 수 있습니다.

  • 스칼라 형식 - 스칼라 형식은 하나의 값만 표현할 수 있습니다. 스칼라 형식은 숫자, 문자열, 이진수, 부울 및 Null입니다.

  • 문서 형식 - 문서 형식은 중첩된 속성이 있는 복잡한 구조를 표현할 수 있습니다. 이러한 형식은 JSON 문서에서 찾을 수 있습니다. 문서 형식은 목록 및 맵입니다.

  • 집합 형식 - 집합 형식은 여러 스칼라 값을 표현할 수 있습니다. 집합 형식은 문자열 집합, 숫자 집합 및 이진수 집합입니다.

테이블이나 보조 인덱스를 생성할 때는 각 기본 키 속성(파티션 키 및 정렬 키)의 이름 및 데이터 형식을 지정해야 합니다. 또한, 각 기본 키 속성은 문자열, 숫자 또는 이진수 형식으로 정의해야 합니다.

DynamoDB는 스키마 없는 NoSQL 데이터베이스입니다. 이는 테이블을 생성할 때 프라이머리 키 속성 외에는 다른 속성이나 데이터 형식을 정의할 필요가 없다는 의미입니다. 그에 비해, 관계형 데이터베이스는 테이블을 생성할 때 각 열의 이름 및 데이터 형식을 정의해야 합니다.

다음은 각 데이터 형식을 JSON 형식의 예제와 함께 설명한 것입니다.

스칼라 형식

스칼라 형식은 숫자, 문자열, 이진수, 부울 및 Null입니다.

숫자

번호는 양수, 음수 또는 0일 수 있습니다. 숫자는 최대 38자릿수까지 지원됩니다. 이 제한을 초과하면 예외가 발생합니다. 소수점 아래 38자리보다 높은 정밀도가 필요한 경우 문자열을 사용할 수 있습니다.

  • 양의 범위: 1E-130 ~ 9.9999999999999999999999999999999999999E+125

  • 음의 범위: -9.9999999999999999999999999999999999999E+125 ~ -1E-130

DynamoDB에서 숫자는 가변 길이로 나타냅니다. 앞과 끝의 0은 잘립니다.

모든 숫자는 언어와 라이브러리 간의 호환성을 극대화하기 위해 네트워크를 통해 DynamoDB에 문자열로 전송됩니다. 하지만 DynamoDB는 해당 문자열을 연산 작업에서 숫자 형식 속성으로 처리합니다.

번호 데이터 형식을 사용하면 날짜 또는 타임스탬프를 표현할 수 있습니다. 이렇게 하는 한 가지 방법은 1970년 1월 1일 00:00:00 UTC 이후 경과된 시간(초)인 epoch 시간을 사용하는 것입니다. 예를 들어, epoch 시간 1437136300은 2015년 7월 17일 오후 12:31:40 UTC를 나타냅니다.

자세한 내용은 http://en.wikipedia.org/wiki/Unix_time을 참조하십시오.

String

문자열은 UTF-8 이진수 인코딩을 사용하는 유니코드입니다. 속성이 인덱스 또는 테이블의 키로 사용되지 않고 최대 DynamoDB 항목 크기 제한인 400KB로 제한되는 경우 문자열의 최소 길이는 0일 수 있습니다.

문자열 형식으로 정의된 기본 키 속성에는 다음과 같은 제약이 추가로 적용됩니다.

  • 단순 기본 키의 경우 첫 번째 속성 값(파티션 키)의 최대 길이는 2048바이트입니다.

  • 복합 기본 키의 경우 두 번째 속성 값(정렬 키)의 최대 길이는 1024바이트입니다.

DynamoDB는 기본 UTF-8 문자열 인코딩의 바이트를 사용하여 문자열을 수집하고 비교합니다. 예를 들어 "a" (0x61)"은 "A" (0x41)보다 크고, "¿" (0xC2BF)는 "z" (0x7A)보다 큽니다.

문자열 데이터 형식을 사용하면 날짜 또는 타임스탬프를 표현할 수 있습니다. 다음 예에서와 같이 ISO 8601 문자열을 사용하여 이러한 작업이 가능합니다.

  • 2016-02-15

  • 2015-12-21T17:42:34Z

  • 20150311T122706Z

자세한 내용은 http://en.wikipedia.org/wiki/ISO_8601을 참조하십시오.

참고

기존 관계형 데이터베이스와 달리 DynamoDB는 기본적으로 날짜 및 시간 데이터 유형을 지원하지 않습니다. 대신 Unix epoch 시간을 사용하여 날짜 및 시간 데이터를 숫자 데이터 유형으로 저장하는 것이 유용할 수 있습니다.

바이너리

이진수 형식의 속성에는 압축 텍스트, 암호화 데이터 또는 이미지 같은 모든 이진수 데이터가 저장될 수 있습니다. DynamoDB는 이진수 값을 비교할 때마다 이진수 데이터의 각 바이트를 부호가 없는 것으로 처리합니다.

속성이 인덱스 또는 테이블의 키로 사용되지 않고 최대 DynamoDB 항목 크기 제한인 400KB로 제한되는 경우 이진 속성의 길이는 0일 수 있습니다.

이진수 형식 속성으로 기본 키 속성을 정의하는 경우 다음 추가 제약이 적용됩니다.

  • 단순 기본 키의 경우 첫 번째 속성 값(파티션 키)의 최대 길이는 2048바이트입니다.

  • 복합 기본 키의 경우 두 번째 속성 값(정렬 키)의 최대 길이는 1024바이트입니다.

애플리케이션에서는 데이터를 DynamoDB로 보내기 전에 Base64 인코딩 형식으로 이진수 값을 인코딩해야 합니다. DynamoDB가 이러한 값을 받아 데이터를 부호가 없는 바이트 배열로 디코딩하고 이진수 속성 길이로 사용합니다.

다음은 base64 인코딩 텍스트를 사용하여 이진수 속성을 나타낸 예제입니다.

dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk

부울 형식의 속성은 true 또는 false를 저장할 수 있습니다.

Null

Null은 알려지지 않았거나 정의되지 않은 상태의 속성을 나타냅니다.

문서 형식

문서 형식은 목록 및 맵입니다. 이러한 데이터 형식은 서로 중첩이 가능하여 최대 32개 깊이 수준의 복잡한 데이터 구조까지 나타낼 수 있습니다.

목록 또는 맵 내 값의 수에는 제한이 없습니다. 단, 값을 포함하는 항목이 DynamoDB 항목 크기 제한(400KB)을 초과하지 않아야 합니다.

속성이 테이블 또는 인덱스 키에 사용되지 않는 경우 속성 값은 빈 문자열이거나 빈 이진 값일 수 있습니다. 속성 값은 빈 집합(문자열 집합, 숫자 집합 또는 이진 집합)일 수 없지만 빈 목록 및 맵은 허용됩니다. 목록과 맵 내에서는 빈 문자열과 이진 값이 허용됩니다. 자세한 내용은 속성 단원을 참조하십시오.

나열

목록 형식 속성은 순서가 지정된 값 모음을 저장할 수 있습니다. 목록은 대괄호([ ... ])로 묶습니다.

목록은 JSON 배열과 유사합니다. 목록 요소에 저장할 수 있는 데이터 형식에는 제한이 없으며, 한 목록 요소에 있는 요소의 형식이 달라도 상관없습니다.

다음은 두 개의 문자열과 하나의 숫자를 포함하는 목록 예제입니다.

FavoriteThings: ["Cookies", "Coffee", 3.14159]
참고

DynamoDB는 각 요소가 깊게 중첩되었다고 해도 목록 내의 개별 요소를 사용할 수 있습니다. 자세한 내용은 DynamoDB에서 표현식 사용 단원을 참조하십시오.

맵 형식 속성은 정렬되지 않은 이름-값 페어의 모음을 저장할 수 있습니다. 맵은 중괄호({ ... })로 묶습니다.

맵은 JSON 객체와 유사합니다. 맵 요소에 저장할 수 있는 데이터 형식에는 제한이 없으며, 한 맵에 형식이 다른 요소도 함께 있을 수 있습니다.

맵은 DynamoDB에 JSON 문서를 저장하는 데 이상적입니다. 다음은 문자열, 숫자 및 다른 맵을 포함하는 중첩 목록이 저장된 맵을 나타내는 예제입니다.

{ Day: "Monday", UnreadEmails: 42, ItemsOnMyDesk: [ "Coffee Cup", "Telephone", { Pens: { Quantity : 3}, Pencils: { Quantity : 2}, Erasers: { Quantity : 1} } ] }
참고

DynamoDB는 각 요소가 깊게 중첩되었다고 해도 맵 내의 개별 요소를 사용할 수 있습니다. 자세한 내용은 DynamoDB에서 표현식 사용 단원을 참조하십시오.

집합

DynamoDB에서도 숫자, 문자열 또는 이진수 값의 집합을 나타내는 형식을 지원합니다. 집합 내의 모든 요소의 형식은 동일해야 합니다. 예를 들어, 숫자 집합은 숫자만 포함할 수 있으며, 문자열 집합은 문자열만 포함할 수 있는 식입니다.

집합 내 값의 수에는 제한이 없습니다. 단, 값을 포함하는 항목이 DynamoDB 항목 크기 제한(400KB)을 초과하지 않아야 합니다.

집합 내의 각 값은 고유해야 합니다. 집합 내 값의 순서는 유지되지 않습니다. 따라서 애플리케이션이 집합 내에서 요소가 특정 순서로 유지된다는 가정 하에 실행되지 않아야 합니다. DynamoDB는 빈 집합을 지원하지 않지만 집합 내에서 빈 문자열과 이진 값이 허용됩니다.

다음은 하나의 문자열 집합, 하나의 숫자 집합과 이진 집합이 포함된 예제입니다.

["Black", "Green", "Red"] [42.2, -19, 7.5, 3.14] ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]

데이터 형식 서술자

하위 수준 DynamoDB API 프로토콜은 데이터 형식 서술자를 DynamoDB에 각 속성을 해석하는 방법을 알려 주는 토큰으로 사용합니다.

다음은 DynamoDB 데이터 형식 서술자의 전체 목록입니다.

  • S - 문자열

  • N - 숫자

  • B - 이진수

  • BOOL - 부울

  • NULL - Null

  • M - 맵

  • L - 목록

  • SS - 문자열 집합

  • NS - 숫자 집합

  • BS - 이진수 집합