JSON 함수 - Amazon Redshift

JSON 함수

비교적 작은 용량의 키-값 페어 집합을 저장해야 할 때는 JSON 형식으로 저장하면 공간을 절약할 수 있습니다. JSON 문자열은 단일 열에 저장할 수 있기 때문에 테이블 형식의 데이터 저장보다는 JSON을 사용하는 것이 더욱 효율적입니다. 예를 들어 가능한 모든 속성을 완전하게 표현하려면 다수의 열이 필요하지만 임의의 행 또는 열에서 대부분 열 값이 NULL인 희소(sparse) 테이블이 하나 있다고 가정하겠습니다. 이때 JSON을 사용하면 행 데이터를 키:값 페어로 단일 JSON 문자열에 저장하여 희박하게 채워진 테이블 열을 제거할 수 있습니다.

또한 JSON 문자열은 수정이 쉽기 때문에 열을 테이블에 추가하지 않고도 키:값 페어를 더 저장할 수 있습니다.

JSON은 적게 사용하는 것이 바람직합니다. 특히 대용량의 데이터 집합을 저장할 때는 JSON을 사용하지 않는 것이 좋습니다. 이때는 이질적인 데이터가 단일 열에 저장되면서 JSON가 Amazon Redshift 열 저장 아키텍처를 사용하지 못하기 때문입니다. Amazon Redshift는 CHAR 및 VARCHAR 열에 대한 JSON 함수를 지원하지만 JSON 직렬화 형식의 데이터를 처리하는 데 SUPER를 사용하는 것이 좋습니다. SUPER는 계층 데이터를 효율적으로 쿼리할 수 있는 사후 구문 분석 스키마 없는 표현을 사용합니다. SUPER 데이터 형식에 대한 자세한 내용은 Amazon Redshift에서 비정형 데이터 수집 및 쿼리 섹션을 참조하세요.

JSON은 UTF-8로 인코딩된 텍스트 문자열을 사용합니다. 따라서 JSON 문자열은 CHAR 또는 VARCHAR 데이터 형식으로 저장될 수 있습니다. 문자열에 멀티바이트 문자가 포함된 경우에는 VARCHAR를 사용하십시오.

JSON 문자열은 다음 규칙에 따라 올바른 형식의 JSON이 되어야 합니다.

  • 루트 레벨 JSON은 JSON 객체 또는 JSON 배열일 수 있습니다. JSON 객체는 쉼표로 구분된 키:값 페어의 집합으로서 순서 지정 없이 중괄호로 묶입니다.

    예제: {"one":1, "two":2}

  • JSON 배열은 쉼표로 구분된 값의 집합으로서 순서 지정과 함께 대괄호로 묶입니다.

    예제는 다음과 같습니다: ["first", {"one":1}, "second", 3, null]

  • JSON 배열은 0부터 시작되는 인덱스를 사용하기 때문에 배열의 첫 요소가 0 위치에 자리합니다. JSON 키:값 페어에서 키는 큰따옴표로 묶이는 문자열입니다.

  • JSON 값은 다음 중 하나일 수 있습니다.

    • JSON 객체

    • JSON 배열

    • 큰따옴표로 묶이는 문자열

    • 숫자(정수, 부동 소수점 수)

    • boolean

    • null

  • 빈 객체와 빈 배열도 유효한 JSON 값입니다.

  • JSON 필드는 대/소문자를 구분합니다.

  • JSON 구조 요소 사이의 공백({ }, [ ] 등)은 무시됩니다.

Amazon Redshift JSON 함수와 Amazon Redshift COPY 명령은 동일한 메서드를 사용하여 JSON 형식 데이터를 처리합니다. JSON 작업에 대한 자세한 내용은 JSON 형식의 COPY 지원 섹션을 참조하세요.