BLOG
작성 : 메가존 SA팀
Amazon Redshift를 처음 사용하시는 분들을 위해 DbVisualizer를 사용하여 쉽게 Amazon S3에서 샘플 데이터를 Copy 하고 Amazon Redshift의 데이터들을 확인해 보는 방법을 설명하겠습니다.
Amazon Redshift는 AWS에서 제공하고 있는 관리형 Data warehouse 서비스 입니다.
클러스터 안에 필요한 인스턴스를 추가할 수 있으며 인스턴스를 추가함에 따라 데이터 용량과 성능이 향상되는 구조로 동작하게 됩니다.
이번에 테스트해 볼 구성은 아래와 같이 데이터를 복사해 와서 Redshift에 접속하여 데이터를 확인해 보는 기본적은 테스트입니다.
DbVisualizer(여러 데이터베이스에 접속하여 작업을 할 수 있는 무료 도구)를 먼저 설치해 보죠.
아래와 같은 데이터베이스를 지원합니다.
https://www.dbvis.com/download/ <– 여기에서 다운로드 합니다.
아래 다운로드 페이지에서 운영체제에 맞는 설치 파일을 다운로드 받아 설치 합니다.
설치 과정은 아주 간단하여 여기에서는 설명하지 않겠습니다.
그 다음 Redshift의 Cluster를 구성해 보겠습니다.
AWS 관리 콘솔에서 Redshift를 선택하면 아래와 같은 화면이 나옵니다.
[Launch Cluster]를 선택합니다.
아래 항목들을 지정하고 [Continue]를 선택합니다.
Port는 기본 포트 5439 그래도 사용합니다.
다음 화면에서는 기본값으로 [Continue] 버튼을 선택합니다.
Node Type에 대한 정보는 아래 표를 참조해 주세요.
서울 리전에서 사용 가능한 Node Type 입니다.
다음 화면에서도 모든 값은 기본값을 사용하고 Security Group만 주의해서 설정합니다.
위 화면에서 5439 포트를 지정했기 때문에 Security Group에서 Inbound 5439를 허가해 주는 Security Group를 설정하고 지정해 줘야 합니다.
Security Group에 대한 설정 방법은 아래 AWS 정식 문서를 확인해 주세요.
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-network-security.html
그럼 [Continue]선택하고 다음화면으로 진행합니다.
Cluster 구성에 대한 리뷰 화면이 나오면 [Launch Cluster]를 선택하여 Cluster를 생성합니다.
Cluster가 정상적으로 생성되면 아래와 같은 화면을 볼 수 있습니다.
아래 화면에서 접속에 필요한 Endpoint를 메모해 둡니다.
DbVisualizer 를 아래와 같이 실행합니다.
MAC에서 실행한 화면입니다.
왼쪽 위 화면에서 아래 아이콘을 클릭합니다.
아래와 같은 화면이 나오면 [No Wizard]를 선택합니다.
다음은 위에서 생성한 Redshift에 접속하기 위한 정보를 입력합니다.
[Name] – Redshift test
[Driver(JDBC)] – PostgreSQL
[Database Server] – 위에서 메모한 Endpoint를 입력
[Database Port] – 5439
[Database Userid] – 지정한 Userid
[Database Password] – 지정한 Password
위의 정보가 정상적으로 설정 되었다면 아래와 같이 Redshift에 접속한 화면을 볼 수 있습니다.
이제 테스트 데이터를 Copy 해보겠습니다.
아래 SQL Commander 추가 버튼을 선택하고 샘플 데이터를 복사하기 위한 테이블을 생성합니다.
Create table 문을 입력하고 실행 버튼을 클릭하면 테이블이 생성됩니다.
Create table 문은 화면 아래 예제를 그대로 입력하면 됩니다.
테이블 생성 예제
create table users( userid integer not null distkey sortkey, username char(8), firstname varchar(30), lastname varchar(30), city varchar(30), state char(2), email varchar(100), phone char(14), likesports boolean, liketheatre boolean, likeconcerts boolean, likejazz boolean, likeclassical boolean, likeopera boolean, likerock boolean, likevegas boolean, likebroadway boolean, likemusicals boolean); create table venue( venueid smallint not null distkey sortkey, venuename varchar(100), venuecity varchar(30), venuestate char(2), venueseats integer); create table category( catid smallint not null distkey sortkey, catgroup varchar(10), catname varchar(10), catdesc varchar(50)); create table date( dateid smallint not null distkey sortkey, caldate date not null, day character(3) not null, week smallint not null, month character(5) not null, qtr character(5) not null, year smallint not null, holiday boolean default('N')); create table event( eventid integer not null distkey, venueid smallint not null, catid smallint not null, dateid smallint not null sortkey, eventname varchar(200), starttime timestamp); create table listing( listid integer not null distkey, sellerid integer not null, eventid integer not null, dateid smallint not null sortkey, numtickets smallint not null, priceperticket decimal(8,2), totalprice decimal(8,2), listtime timestamp); create table sales( salesid integer not null, listid integer not null distkey, sellerid integer not null, buyerid integer not null, eventid integer not null, dateid smallint not null sortkey, qtysold smallint not null, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp);
마지막으로 아래와 같이 샘플 데이터를 Copy하게 되면 모든 작업은 끝나게 됩니다.
AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY는 AWS IAM 서비스를 통해 생성한 값을 지정해 주면 됩니다.
copy users from 's3://awssampledbuswest2/tickit/allusers_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' region 'us-west-2'; copy venue from 's3://awssampledbuswest2/tickit/venue_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' region 'us-west-2'; copy category from 's3://awssampledbuswest2/tickit/category_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' region 'us-west-2'; copy date from 's3://awssampledbuswest2/tickit/date2008_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' region 'us-west-2'; copy event from 's3://awssampledbuswest2/tickit/allevents_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region 'us-west-2'; copy listing from 's3://awssampledbuswest2/tickit/listings_pipe.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '|' region 'us-west-2'; copy sales from 's3://awssampledbuswest2/tickit/sales_tab.txt' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region 'us-west-2';
위의 샘플 데이터 Copy가 끝나면 실제 Select문으로 쿼리를 실행해 보도록 합니다.
위에서 실행한 쿼리는 아래와 같습니다.
-- Get definition for the sales table. SELECT * FROM pg_table_def WHERE tablename = 'sales'; -- Find total sales on a given calendar date. SELECT sum(qtysold) FROM sales, date WHERE sales.dateid = date.dateid AND caldate = '2008-01-05'; -- Find top 10 buyers by quantity. SELECT firstname, lastname, total_quantity FROM (SELECT buyerid, sum(qtysold) total_quantity FROM sales GROUP BY buyerid ORDER BY total_quantity desc limit 10) Q, users WHERE Q.buyerid = userid ORDER BY Q.total_quantity desc; -- Find events in the 99.9 percentile in terms of all time gross sales. SELECT eventname, total_price FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile FROM (SELECT eventid, sum(pricepaid) total_price FROM sales GROUP BY eventid)) Q, event E WHERE Q.eventid = E.eventid AND percentile = 1 ORDER BY total_price desc;
마지막으로 AWS Redshift 관리 콘솔에서 아래와 같이 성능 지표나 실행된 쿼리들을 확인할 수 있습니다.
여기까지 Amazon Redshift를 GettingStarted로 시작해보기!! 였습니다.
Getting Started with Amazon Redshift
=> http://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html
Amazon Redshift 에 대해 더 궁금하신 사항이 있으시면 메가존으로 연락 주십시요.