사진과 음악을 좋아하는 개발자 지망생의 블로그

[데이터 웨어하우스 - 중급] 2. Redshift - ② Redshift 설치 및 초기 설정 본문

개발/데이터 웨어하우스 - 중급

[데이터 웨어하우스 - 중급] 2. Redshift - ② Redshift 설치 및 초기 설정

devculture309 2023. 5. 24. 22:18
반응형

1. Redshit 설치

1 - 1. Redshift 설치 과정 데모

Redshift를 설치하고 설정하는 일반적인 과정은 다음과 같습니다

 

① AWS 계정 생성 및 로그인: AWS 웹 사이트(https://aws.amazon.com)에 접속하여 새로운 AWS 계정을 생성하고 해당 계정으로 로그인합니다.

② Redshift 서비스 선택: AWS 콘솔에 로그인한 후, 서비스 메뉴에서 "Redshift"를 선택합니다.

클러스터 생성: Redshift 콘솔에서 "Launch Cluster" 또는 "Create Cluster" 버튼을 클릭하여 새로운 Redshift 클러스터를 생성합니다. 이때 Redshift Serverless를 선택하고 Free Trial인지 확인하십시오. Free Trial은 일정 기간 동안 무료로 사용할 수 있는 기능입니다. 그러나 만기되기 전에 꼭 셧다운하고 사용 가능한 비용도 최대 $300임을 확인하십시오.

클러스터 구성: 클러스터 생성 페이지에서 다음과 같은 구성 옵션을 설정합니다

  • 클러스터 식별자: 클러스터를 식별하는 고유한 이름을 지정합니다.
  • 노드 유형: 클러스터를 구성하는 노드의 유형을 선택합니다. 예: dc2.large, dc2.8xlarge 등.
  • 노드 개수: 클러스터를 구성하는 노드의 개수를 선택합니다.
  • VPC 및 보안 그룹: 클러스터가 속할 VPC(Virtual Private Cloud) 및 보안 그룹을 선택합니다.
  • IAM 역할: 클러스터가 S3와 통합하기 위해 필요한 IAM 역할을 선택하거나 생성합니다.

클러스터 시작: 구성 옵션을 검토한 후, "Launch Cluster" 또는 "Create Cluster" 버튼을 클릭하여 클러스터를 시작합니다.

클러스터 상태 확인: 클러스터 생성이 시작되면 클러스터 상태를 확인할 수 있는 대시보드가 표시됩니다. 클러스터가 활성 상태가 될 때까지 기다리십시오.

클러스터 연결: 클러스터가 활성 상태가 되면 연결 정보(엔드포인트, 포트, 사용자 이름 등)를 확인하고 이를 사용하여 클라이언트 애플리케이션 또는 SQL 클라이언트로 클러스터에 연결할 수 있습니다.

 

 

1 - 2. Redshift 연결 테스트

Redshift에 Google Colab을 사용하여 연결하려면 다음 단계를 따르세요

 

Google Colab 노트북 열기

필수 정보 입력: 노트북의 적절한 섹션에 다음 정보를 입력합니다

코드 실행: 노트북의 코드 셀을 실행하여 Redshift 클러스터에 연결합니다. 코드는 Redshift 클러스터에 연결하는 데 필요한 라이브러리를 가져오고 연결 매개변수를 설정한 다음 연결을 시도합니다.

연결 테스트: 코드 실행 후에는 Redshift 클러스터에 성공적으로 연결되었는지 확인할 수 있는 메시지가 표시됩니다. 이를 통해 연결이 올바르게 설정되었는지 확인할 수 있습니다.

위 단계를 따라가면 Google Colab을 사용하여 Redshift 클러스터에 연결할 수 있습니다.

 

 

1 - 3. Redshift Serverless 외부 연결 열기

Redshift Serverless 클러스터에 외부 연결을 열기 위해 다음 단계를 따르세요

 

AWS 콘솔에 로그인하고 Redshift 서비스로 이동합니다.

② Redshift 콘솔에서 "Clusters"를 선택하고 Serverless 클러스터 목록에서 대상 클러스터를 선택합니다.

"Cluster details" 탭으로 이동하고 "Network and security" 섹션을 찾습니다.

"Public access" 옵션을 "Off"에서 "On"으로 변경합니다. 이렇게 하면 클러스터가 인터넷에 직접 액세스할 수 있게 됩니다. 주의해야 할 점은 외부 액세스를 허용하기 전에 적절한 보안 조치를 취해야 한다는 것입니다.

외부에서 클러스터에 연결할 수 있도록 VPC Security Group의 인바운드 규칙을 구성합니다.

     이를 위해 다음 단계를 따릅니다

⑤ - 1.  AWS 콘솔에서 "VPC" 서비스로 이동합니다

⑤ - 2. "Security Groups" 섹션으로 이동하여 해당 클러스터에 연결된 VPC Security Group을 선택합니다.

⑤ - 3. 선택한 Security Group의 "Inbound Rules" 탭으로 이동하여 포트 번호 5439를 허용하는 인바운드 규칙을 추가합니다. 이를 위해 "Add Rule" 버튼을 클릭하고 다음과 같이 설정합니다

  • Type: "Custom TCP"
  • Port Range: "5439"
  • Source: "0.0.0.0/0" (이렇게 설정하면 모든 IP 주소에서의 액세스가 허용됩니다. 보안상의 이유로 필요한 경우 출처를 제한하는 것이 좋습니다.)

변경 사항을 저장하고 외부에서 클러스터에 접근할 수 있도록 설정됩니다.

 

이제 Redshift Serverless 클러스터에 대한 외부 연결이 열렸습니다. 주의해야 할 점은 보안을 위해 필요한 경우 액세스 제어 및 방화벽 설정을 적절하게 구성해야 한다는 것입니다.

 

 

 

2 . Redshift 초기 설정

2 - 1. 스키마(shema) 설정

Redshift Schema는 다른 관계형 데이터베이스와 동일한 구조를 가지며, 데이터를 구성하는 테이블, 뷰, 인덱스 등을 정의하는 논리적인 컨테이너입니다. Redshift 스키마를 사용하여 데이터를 구조화하고 관리할 수 있습니다.

 

일반적으로 Redshift를 사용하는 데이터 웨어하우스 환경에서는 다음과 같은 구성 요소가 포함될 수 있습니다

 

  1. Raw_data: 원시 데이터를 저장하는 테이블이 있을 수 있습니다. 이는 ETL 프로세스를 통해 가공되기 전의 원본 데이터를 보관하는 용도로 사용될 수 있습니다.
  2. Analytics: 가공된 데이터를 저장하는 테이블이 있을 수 있습니다. 이는 ETL 또는 ELT 프로세스를 통해 변환된 데이터를 저장하고 분석 작업에 활용하는 용도로 사용될 수 있습니다.
  3. Adhoc: 임시 분석이나 쿼리용 테이블이 있을 수 있습니다. 이는 즉석으로 필요한 분석 작업이나 특정 요구사항에 대한 쿼리를 실행할 때 사용될 수 있습니다.
  4. PII (Personal Identifiable Information): 개인 식별 정보를 포함하는 테이블이 있을 수 있습니다. 이러한 테이블은 개인정보 보호에 관련된 법규 준수를 위해 필요한 데이터 마스킹 또는 암호화 등의 보안 조치가 적용될 수 있습니다.

각 스키마는 특정 목적을 가지며, 테이블, 뷰, 함수 등의 데이터베이스 객체를 그룹화하고 구성하는 역할을 합니다. Redshift에서 스키마를 생성하는 방법은 다음과 같습니다

SELECT * FROM pg_namespace;
CREATE SCHEMA raw_data;
CREATE SCHEMA analytics;
CREATE SCHEMA adhoc;
CREATE SCHEMA pii;
  1. 모든 스키마 나열하기(SELECT * FROM pg_namespace;): 이 쿼리를 실행하면 현재 데이터베이스에 있는 모든 스키마의 목록을 확인할 수 있습니다.
  2. raw_data 스키마 생성하기(CREATE SCHEMA raw_data;): 이 명령은 "raw_data"라는 이름의 스키마를 생성합니다. 이 스키마는 원시 데이터를 저장하는 용도로 사용될 수 있습니다.
  3. analytics 스키마 생성하기(CREATE SCHEMA analytics;): 이 명령은 "analytics"라는 이름의 스키마를 생성합니다. 이 스키마는 가공된 데이터를 저장하고 분석 작업에 활용하는 용도로 사용될 수 있습니다.
  4. adhoc 스키마 생성하기(CREATE SCHEMA adhoc;): 이 명령은 "adhoc"라는 이름의 스키마를 생성합니다. 이 스키마는 임시 분석이나 쿼리 작업을 위해 사용될 수 있습니다.
  5. pii 스키마 생성하기(CREATE SCHEMA pii;): 이 명령은 "pii"라는 이름의 스키마를 생성합니다. 이 스키마는 개인 식별 정보를 포함하는 테이블을 저장하고 개인정보 보호를 위한 보안 조치를 적용하는 용도로 사용될 수 있습니다.

위의 명령을 실행하여 원하는 스키마를 생성할 수 있습니다. 이후에는 각 스키마에 필요한 테이블을 생성하고 데이터를 적재하여 Redshift 데이터베이스에서 데이터를 구조화하고 관리할 수 있습니다.

 

 

2 - 2. 사용자(User) 생성

Redshift에서 사용자(User)를 생성하고 모든 사용자의 목록을 확인하는 방법은 다음과 같습니다.

 

1) 사용자 생성

사용자를 생성하려면 CREATE USER 문을 사용합니다. 다음은 사용자를 생성하는 예시입니다

CREATE USER myuser PASSWORD 'mypassword';

위의 예시에서 'myuser'는 생성할 사용자의 이름이고 'mypassword'는 해당 사용자의 암호입니다. 원하는 사용자 이름과 암호를 지정하여 사용자를 생성할 수 있습니다.

 

2) 모든 사용자 리스트하기

모든 사용자의 목록을 확인하려면 'pg_user' 시스템 카탈로그 테이블을 조회합니다. 다음은 모든 사용자를 리스트하는 예시입니다

SELECT * FROM pg_user;

위의 쿼리를 실행하면 현재 Redshift 데이터베이스에 등록된 모든 사용자의 정보를 확인할 수 있습니다.

 

사용자 생성 후 'pg_use'r를 조회하여 사용자 목록을 확인할 수 있습니다.

 

 

2 - 3. 그룹(Group) 생성/설정

Redshift에서 그룹(Group)을 생성하고 설정하는 방법은 다음과 같습니다.

 

1) 그룹 생성

그룹을 생성하려면 'CREATE GROUP' 문을 사용합니다. 다음은 그룹을 생성하는 예시입니다.

CREATE GROUP pii_users;
CREATE GROUP analytics_authors;
CREATE GROUP analytics_users;

위의 예시에서 'pii_users', 'analytics_authors', 'analytics_users'는 각각 생성할 그룹의 이름입니다. 원하는 그룹 이름으로 그룹을 생성할 수 있습니다.

 

2) 그룹에 사용자 추가

그룹에 사용자를 추가하려면 'ALTER GROUP' 문을 사용합니다. 다음은 사용자를 그룹에 추가하는 예시입니다

ALTER GROUP pii_users ADD USER user1;
ALTER GROUP analytics_authors ADD USER user2;
ALTER GROUP analytics_users ADD USER user3;

위의 예시에서 'pii_users', 'analytics_authors', 'analytics_users'는 각각 그룹의 이름이고 'user1', 'user2', 'user3'은 해당 그룹에 추가할 사용자입니다. 원하는 사용자를 원하는 그룹에 추가할 수 있습니다.

 

3) 그룹 리스트 확인

생성된 그룹을 확인하려면 pg_group 시스템 카탈로그 테이블을 사용합니다. 다음은 모든 그룹을 확인하는 예시입니다

SELECT * FROM pg_group;

위의 쿼리를 실행하면 생성된 모든 그룹의 정보를 확인할 수 있습니다.

 

그룹은 사용자의 권한 관리와 접근 제어를 용이하게 하기 위해 사용됩니다. 한 사용자는 다수의 그룹에 속할 수 있으며, 그룹을 사용하여 필요한 권한 및 접근 제어 설정을 적용할 수 있습니다. 그러나 그룹은 계승되지 않기 때문에 너무 많은 그룹을 만들면 관리가 복잡해질 수 있습니다. 따라서 필요한 범위의 그룹을 생성하고 사용자를 적절히 할당하는 것이 좋습니다.

 

 

2 - 4. 역할(Role) 생성/설정

Redshift에서 역할(Role)을 생성하고 설정하는 방법은 다음과 같습니다

 

1) 역할 생성

역할을 생성하려면 'CREATE ROLE' 문을 사용합니다. 다음은 역할을 생성하는 예시입니다

CREATE ROLE role1;
CREATE ROLE role2;
CREATE ROLE role3;

위의 예시에서 'role1', 'role2', 'role3'은 각각 생성할 역할의 이름입니다. 원하는 역할 이름으로 역할을 생성할 수 있습니다.

 

2) 역할에 사용자 또는 역할 추가

역할에 사용자 또는 다른 역할을 추가하려면 'GRANT' 문을 사용합니다. 다음은 사용자 또는 역할을 역할에 추가하는 예시입니다

GRANT role1 TO user1;
GRANT role2 TO role3;

위의 예시에서 'role1', 'role2'는 역할의 이름이고 'user1', 'role3'은 해당 역할에 추가할 사용자 또는 역할입니다. 역할에 사용자 또는 역할을 추가하여 계승 구조를 만들 수 있습니다.

 

3) 역할 리스트 확인

생성된 역할을 확인하려면 'SVV_ROLES' 시스템 뷰를 사용합니다. 다음은 모든 역할을 확인하는 예시입니다.

SELECT * FROM SVV_ROLES;

위의 쿼리를 실행하면 생성된 모든 역할의 정보를 확인할 수 있습니다.

 

역할은 그룹과는 달리 계승 구조를 가지므로 더 유연한 권한 관리가 가능합니다. 역할은 사용자에게 직접 부여되거나 다른 역할에 부여될 수 있으며, 한 사용자는 다수의 역할에 소속될 수 있습니다. 역할은 권한을 미리 정의하여 역할에 부여함으로써 사용자 또는 다른 역할에게 일괄적으로 권한을 부여할 수 있는 장점이 있습니다. 역할을 사용하여 적절한 권한 관리를 수행할 수 있습니다. 역할은 'SVV_ROLES' 시스템 뷰를 통해 확인할 수 있습니다.

반응형