Amazon Redshift의 반정형 데이터
Amazon Redshift의 비정형 데이터 지원을 사용하여 Amazon Redshift 데이터 웨어하우스에서 비정형 데이터를 수집하고 저장할 수 있습니다. Amazon Redshift는 SUPER 데이터 형식과 PartiQL 언어로 데이터 웨어하우스 기능을 확장하여 SQL 및 NoSQL 데이터 원본과 통합합니다. 이러한 방식으로 Amazon Redshift는 JSON과 같은 관계형 및 비정형 저장 데이터에 대한 효율적인 분석을 지원합니다.
Amazon Redshift는 SUPER 데이터 형식과 Amazon Redshift Spectrum의 두 가지 형태의 비정형 데이터 지원을 제공합니다.
짧은 대기 시간으로 작은 JSON 데이터 배치를 삽입하거나 업데이트해야 하는 경우 SUPER 데이터 형식을 사용합니다. 또한 쿼리에 강력한 일관성, 예측 가능한 쿼리 성능, 복잡한 쿼리 지원, 진화하는 스키마 및 스키마 없는 데이터의 사용 편의성이 필요한 경우 SUPER를 사용합니다.
이와 반대로 데이터 쿼리에 다른 AWS 서비스 및 주로 보관 목적으로 Amazon S3에 저장된 데이터와의 통합이 필요한 경우 오픈 파일 형식과 함께 Amazon Redshift Spectrum을 사용합니다.
SUPER 데이터 형식의 사용 사례
Amazon Redshift에서 SUPER 데이터 형식을 사용하는 비정형 데이터 지원은 뛰어난 성능, 유연성 및 사용 편의성을 제공합니다. 다음 사용 사례는 SUPER와 함께 비정형 데이터 지원을 사용하는 방법을 보여줍니다.
빠르고 유연한 JSON 데이터 삽입 - Amazon Redshift는 JSON을 구문 분석하고 SUPER 값으로 저장할 수 있는 빠른 트랜잭션을 지원합니다. 삽입 트랜잭션은 SUPER의 속성을 기존 열로 나눈 테이블에 동일한 삽입을 수행하는 것보다 최대 5배 빠르게 작동할 수 있습니다. 예를 들어 수신 JSON이 {“a”:.., “b”:.., “c”“..., ...} 형식이라고 가정합니다. 수신 JSON을 "a', 'b', "c' 열이 있는 기존 테이블 TR에 저장하는 대신 단일 SUPER 열 S가 있는 테이블 TJ에 저장하여 삽입 성능을 몇 배 가속화할 수 있습니다. JSON에 수백 개의 속성이 있는 경우 SUPER 데이터 형식의 성능 이점은 상당합니다.
또한 SUPER 데이터 형식에는 일반 스키마가 필요하지 않습니다. 수신 JSON을 저장하기 전에 내부 검사를 수행하고 정리할 필요가 없습니다. 예를 들어 수신 JSON에 문자열 "c" 속성이 있고 다른 JSON에는 SUPER 데이터 형식 없이 정수 "c" 속성이 있다고 가정합니다. 이 경우 c_string과 c_int 열을 분리하거나 데이터를 정리해야 합니다. 반대로 SUPER 데이터 형식을 사용하면 모든 JSON 데이터가 수집 중 정보 손실 없이 저장됩니다. 나중에 SQL의 PartiQL 확장을 사용하여 정보를 분석할 수 있습니다.
검색을 위한 유연한 쿼리 - JSON과 같은 비정형 데이터를 SUPER 데이터 값에 저장한 후 스키마를 적용하지 않고 쿼리할 수 있습니다. 쿼리 전에 스키마를 적용할 필요 없이 PartiQL 동적 형식 지정 및 lax 의미 체계를 사용하여 쿼리를 실행하고 필요한 깊게 중첩 데이터를 검색할 수 있습니다.
기존의 구체화된 뷰에 대한 추출, 로드, 변환(ETL) 작업을 위한 유연한 쿼리 – 스키마 없는 비정형 데이터를 SUPER에 저장한 후 PartiQL 구체화된 뷰를 사용하여 데이터를 내부 검사하고 구체화된 뷰로 나눌 수 있습니다.
나뉜 데이터가 들어 있는 구체화된 뷰는 기존 분석 사례에 대한 성능 및 유용성 이점을 보여주는 좋은 예입니다. 나뉜 데이터에 대한 분석을 수행할 때 Amazon Redshift 구체화된 뷰의 열 형식 구조가 더 나은 성능을 제공합니다. 또한 수집된 데이터에 대한 기존 스키마가 필요한 사용자 및 BI(비즈니스 인텔리전스) 도구는 데이터의 기존 스키마 표현으로 뷰(구체화된 뷰 또는 가상 뷰)를 사용할 수 있습니다.
PartiQL 구체화된 뷰가 JSON 또는 SUPER에 있는 데이터를 기존의 열 형식의 구체화된 뷰로 추출한 후 구체화된 뷰를 쿼리할 수 있습니다. SUPER 데이터 형식이 구체화된 뷰에서 작동하는 방식에 대한 자세한 내용은 SUPER 데이터 형식과 구체화된 뷰 섹션을 참조하세요.
SUPER 유형 열의 경로에 있는 scalar
값에 동적 데이터 마스킹 정책을 적용할 수 있습니다. 동적 데이터 마스킹에 대한 자세한 내용은 동적 데이터 마스킹 섹션을 참조하세요. SUPER 데이터 유형에 동적 데이터 마스킹을 사용하는 방법에 대한 자세한 내용은 SUPER 데이터 유형 경로와 함께 동적 데이터 마스킹 사용 섹션을 참조하세요(미리 보기).
SUPER 데이터 형식에 대한 내용은 SUPER 형식 섹션을 참조하세요.
SUPER 데이터 형식 사용 예는 SUPER 샘플 데이터 집합으로 시작하는 이 항목의 하위 섹션을 참조하세요.
SUPER 데이터 형식 사용에 대한 개념
다음에서 몇 가지 Amazon Redshift SUPER 데이터 형식 개념을 찾아볼 수 있습니다.
Amazon Redshift에서 SUPER 데이터 형식이 무엇인지 이해 – SUPER 데이터 형식은 Amazon Redshift 스칼라와 중첩 배열 및 구조를 포함하는 스키마 없는 배열 및 구조를 저장할 수 있는 Amazon Redshift 데이터 형식입니다. SUPER 데이터 형식은 기본적으로 JSON 또는 문서 지향 소스에서 가져온 데이터를 비롯한 다양한 형식의 비정형 데이터를 저장할 수 있습니다. 새 SUPER 열을 추가하여 비정형 데이터를 저장하고 일반적인 스칼라 열과 함께 SUPER 열에 액세스하는 쿼리를 작성할 수 있습니다. SUPER 데이터 형식에 대한 자세한 내용은 SUPER 형식 섹션을 참조하세요.
스키마 없는 JSON을 SUPER로 수집 - Amazon Redshift는 유연한 비정형 SUPER 데이터 형식으로 스키마 없는 JSON을 수신하고 SUPER 값으로 수집할 수 있습니다. 예를 들어 Amazon Redshift는 JSON 값 [10.5, "first"]를 SUPER 값 [10.5, 'first'], 즉 Amazon Redshift 십진수 10.5와 varchar 'first'를 포함하는 배열로 수집할 수 있습니다. Amazon Redshift는 COPY 명령 또는 json_parse('[10.5, "first"]')와 같은 JSON 구문 분석 기능을 사용하여 JSON을 SUPER 값으로 수집할 수 있습니다. COPY와 json_parse
는 기본적으로 strict 구문 분석 의미 체계를 사용하여 JSON을 수집합니다. 데이터베이스 데이터 자체를 사용하여 배열 및 구조를 포함한 SUPER 값을 구성할 수도 있습니다.
스키마 없는 JSON의 불규칙한 구조를 수집하는 동안 SUPER 열의 스키마 수정이 필요 없습니다. 예를 들어 클릭 스트림을 분석하는 동안 처음에는 "IP" 및 "time" 속성이 있는 "click" 구조를 SUPER 열에 저장합니다. 이러한 변경 사항을 수집하기 위해 스키마를 변경하지 않고 "customer ID" 속성을 추가할 수 있습니다.
SUPER 데이터 형식에 사용되는 기본 형식은 텍스트 형식의 JSON 값보다 작은 공간이 필요한 이진 형식입니다. 이를 통해 쿼리 시 SUPER 값의 빠른 수집 및 런타임 처리가 가능합니다.
PartiQL을 사용하여 SUPER 데이터 쿼리 – PartiQL은 현재 많은 AWS 서비스에서 사용하는 SQL-92의 이전 버전과 호환되는 확장입니다. PartiQL을 사용하면 친숙한 SQL 구문이 SUPER의 기존 테이블 형식 SQL 데이터와 비정형 데이터 모두에 대한 액세스를 원활하게 결합합니다. 객체 및 배열 탐색을 수행하고 배열을 중첩 해제할 수 있습니다. PartiQL은 표준 SQL 언어를 확장하여 중첩 및 다중값 데이터를 선언적으로 표현하고 처리합니다.
PartiQL은 SUPER 열의 중첩 및 스키마 없는 데이터가 일급 시민인 SQL의 확장입니다. PartiQL은 쿼리 컴파일 시간 동안 모든 쿼리 표현식의 형식 검사를 요구하지 않습니다. 이 접근 방식을 사용하면 SUPER 열 내부의 실제 데이터 형식에 액세스할 때 쿼리 실행 중에 SUPER 데이터 형식을 포함하는 쿼리 표현식을 동적으로 입력할 수 있습니다. 또한 PartiQL은 형식 불일치로 인해 오류가 발생하지 않고 null을 반환하는 lax 모드에서 작동합니다. 스키마 없는 쿼리 처리와 lax 쿼리 처리가 결합된 PartiQL은 SQL 쿼리가 SUPER 열에서 수집되는 JSON 데이터를 평가하는 추출, 로드, 전송(ELT) 애플리케이션에 이상적입니다.
Redshift Spectrum과 통합 - Amazon Redshift는 JSON, Parquet 및 중첩 데이터가 있는 기타 형식을 통해 Redshift Spectrum 쿼리를 실행할 때 PartiQL의 여러 측면을 지원합니다. Redshift Spectrum은 스키마가 있는 중첩 데이터만 지원합니다. 예를 들어 Redshift Spectrum을 사용하면 JSON 데이터의 스키마 ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>>에 속성 nested_schemaful_example이 있다고 선언할 수 있습니다. 이 속성의 스키마는 데이터가 항상 정수 a와 소수 b가 있는 구조를 포함하는 배열을 포함한다고 결정합니다. 더 많은 속성을 포함하도록 데이터가 변경되면 형식도 변경됩니다. 반대로 SUPER 데이터 형식에는 스키마가 필요하지 않습니다. 속성이나 형식이 다른 구조 요소가 있는 배열을 저장할 수 있습니다. 또한 일부 값은 배열 외부에 저장할 수 있습니다.
SUPER 데이터 형식을 지원하는 함수에 대한 자세한 내용은 다음을 참조하세요.
SUPER 데이터에 대한 고려 사항
SUPER 데이터 작업 시 다음 사항을 고려합니다.
JDBC 드라이버 버전 1.2.50, ODBC 드라이버 버전 1.4.17 이상 및 Amazon Redshift Python 드라이버 버전 2.0.872 이상을 사용합니다.
JDBC 드라이버에 대한 자세한 내용은 JDBC 연결 구성을 참조하세요.
ODBC 드라이버에 대한 자세한 내용은 ODBC 연결 구성을 참조하세요.
SUPER 샘플 데이터 집합에서 다음 주제에 사용된 스키마 예를 찾아보세요.
다음 주제에 사용된 모든 SQL 코드 예제에는 다운로드를 위해 동일한 S3 접두사가 포함되어 있습니다. 여기에는 DDL(데이터 정의 언어)과 COPY 문 및 SUPER와 함께 작동하는 특정 TPC-H 수정 쿼리가 포함됩니다.
SQL 파일을 보거나 다운로드하려면 다음 중 하나를 수행합니다.
SUPER 튜토리얼 SQL 파일
과 TPC-H 파일 을 다운로드합니다. Amazon S3 CLI를 사용하여 다음 명령을 실행합니다. 고유의 대상 경로를 사용할 수 있습니다.
aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path
SUPER 구성에 대한 자세한 내용은 SUPER 구성 섹션을 참조하세요.