전체 글 373

Redshift 권한

사용자별 테이블 권한 설정 https://touchingdata.tistory.com/144 Redshift 초기 설정개념과 실습 Redshift 초기 설정 Redshift를 처음 구동하면 스키마, 그룹, 유저, 역할 등을 생성해야 합니다. 이에 대해 알아보겠습니다. Redshift Schema Redshift의 Schema는 테이블들이나 뷰들을 목적과 용도에 맞게 분 touchingdata.tistory.com 상단 링크의 Redshift의 그룹과 역할에 대해 설명한 적이 있었습니다. 간단히 다시 설명하면 일반적으로 사용자별 테이블별 권한 설정은 하지 않는다고 했습니다. 테이블이 수천개 사용자가 수백명인 경우 관리가 거의 불가능하기 때문입니다. 그렇기 때문에 역할(Role) 혹은 그룹(Group)별로 ..

Redshift 벌크 업데이트(COPY) - 2

S3 생성하기 서비스에서 S3를 검색후 클릭합니다. 우측의 버킷 만들기를 클릭하세요. 저는 버킷 이름을 devjon-test-bucket로 하겠습니다. 여러분은 원하는 대로 지어주세요. 단 버킷 이름은 유니크해야합니다. This is because the bucket name is used in the bucket's URL. For example, if your bucket's name is my-unique-bucket, the URL would be http://my-unique-bucket.s3.amazonaws.com/. 왜냐하면 위의 설명과 같이 버킷 이름이 URL처럼 사용되기 때문입니다. 그리고 AWS 리전은 Redshift 클러스터를 생성했을 때 정한대로 지정해주세요. 다른 모든 옵션들은 ..

Redshift 벌크 업데이트(COPY) - 1

이번 COPY 실습의 목표 1. CREATE TABLE 명령으로 raw_data 스키마 밑에 테이블 3개를 생성합니다. 2. S3의 버킷을 생성합니다. 3. 만든 3개의 테이블들에 입력할 레코드(데이터)들이 담긴 CSV파일을 S3 버킷에 복사합니다. 4. INSERT INTO가 아닌 COPY 명령을 사용해 raw_data 스키마 밑에 있는 3개의 테이블들에 S3에 복사된 CSV파일들의 데이터들을 벌크 업데이트 합니다. 5. 이 때 주의할 점은 Redshift가 CSV파일이 담긴 S3버킷에 접근할 수 있도록 권한을 세팅하고 부여해줘야 합니다. 이때 IAM을 사용할 것입니다. 1. raw_data 스키마에 테이블 만들기 지난 시간 raw_data 스키마는 외부의 데이터들을 ETL을 이용해 읽어온 데이터를 저..

Redshift 초기 설정개념과 실습

Redshift 초기 설정 Redshift를 처음 구동하면 스키마, 그룹, 유저, 역할 등을 생성해야 합니다. 이에 대해 알아보겠습니다. Redshift Schema Redshift의 Schema는 테이블들이나 뷰들을 목적과 용도에 맞게 분류할 수 있는 폴더 기능입니다. 다른 기타 관계형 데이터베이스와 동일한 구조입니다. 이번 실습에서는 위의 이미지와 같이 4개의 Schema를 만들어보려 합니다. raw_data: 외부에 있는 데이터들을 테이블 형태로 저장 analytics: 기존의 테이블을 조합해 만들어진 ELT 테이블을 저장 adhoc: 테스트용 테이블을 저장 pii: 개인정보 저장, 매우 위험하고 민감한 정보이므로 사용과 접근 권한자를 최소화하고 logging 기능을 추가 스키마 이름만 보아도 어떤..

Redshift의 기본 데이터 타입과 주의할 점

Redshift의 기본 데이터 타입 SMALLINT (INT2) INTEGER (INT, INT4) BIGINT (INT8) DECIMAL (NUMERIC) REAL (FLOAT4) DOUBLE PRECISION (FLOAT8) BOOLEAN (BOOL) CHAR (CHARACTER) VARCHAR (CHARACTER VARYING) TEXT (VARCHAR(256)) DATE TIMESTAMP Redshift의 데이터 타입은 위와 같이 PostgreSQL과 거의 동일하지만 볼드체로 표기한 타입들은 주의할 필요가 있습니다. PostgreSQL은 UTF-8 기준이므로 어떤 언어가 되었든 한 글자는 CHARACTER 하나입니다. 반면에 Redshift에서 CHAR, VARCHAR, TEXT는 기본적으로 by..

Redshift 벌크 업데이트 COPY

Redshift의 벌크 업데이트 방식 - COPY SQL INSERT INTO는 record by record 방식이기 때문에 너무 많은 데이터 적재에는 시간이 오래 걸립니다. 그래서 모든 데이터 웨어하우스에서는 COPY SQL 기능을 제공하며 이를 이용해 벌크 업데이트를 진행합니다. 1. 먼저 압축율이 좋은 Binary 파일로 만들어 이를 Cloud Storage에 로딩합니다. (Redshift는 S3) 2. 그리고 이를 Redshift의 S3와 같은 Cloud Storage에 로딩합니다. 3. COPY SQL로 S3에서 데이터 웨어하우스 테이블로 한번에 복사합니다. 데이터 웨어하우스에서 일반적으로 사용하는 벌크 업데이트 (레코드 적재) 방식입니다.

Redshift Scaling, 분산 저장 방식

Redshift의 스케일링 방식 (1) 용량이 부족해질 때마다 새로운 노드를 추가하는 방식으로 스케일링합니다. Scale Out 방식과 Scale Up 방식이 있습니다. 예를 들어 0.16TB 용량의 dc2.large를 사용중 공간이 부족해질 때 dc2.large 한대를 더 추가하면 Scale out입니다. 그게 아니라 더 성능이 좋고 용량이 큰 dc2.8xlarge로 교체하며 사양을 더 좋은 것으로 업그레이드하면 scale up입니다. 이를 Resizing이라고 부르며 Auto Scaling 옵션을 설정하면 자동으로 이루어집니다. Redshift의 스케일링 방식 (2) 이는 Snowflake나 BigQuery의 방식과는 굉장히 다릅니다. 이 둘은 특별히 용량이 정해져있지 않고 사용한만큼 지불하는 온 디..

Redshift의 특징과 개념

Redshift: Scalable SQL 엔진 Amazon Redshift는 Amazon Web Services(AWS)에서 제공하는 완전 관리형, 페타바이트 규모의 데이터 웨어하우스 서비스입니다. Redshift 역시 SQL입니다. Redshift의 특징 (1) 2 PB까지 지원 문제는 2페타바이트에 가까워질수록 성능상에 문제가 발생합니다. 이론상 최대 용량이라고 생각하시는게 좋습니다. Still OLAP 데이터 웨어하우스가 그렇듯 응답속도가 아닌 데이터 크기에 집중했으므로 프로덕션 데이터베이스로는 사용 X Columnar storate 기존의 프로덕션 데이터베이스는 행별로 데이터가 추가되었습니다. 반면에 Redshift는 컬럼별 압축이 가능합니다. 덕분에 컬럼을 추가, 삭제와 쿼리 실행이 아주 빠르며..