샘플 데이터베이스
이 섹션에서는 Amazon Redshift 설명서 예제에서 사용하는 샘플 데이터베이스인 TICKIT에 대해 설명합니다.
이 작은 크기의 데이터베이스는 팩트 테이블 2개와 차원 테이블 5개, 총 7개의 테이블로 구성되어 있습니다. Amazon Redshift 시작 안내서의 4단계: Amazon S3에서 Amazon Redshift로 데이터 로드 단계에 따라 TICKIT 데이터 세트를 로드할 수 있습니다.
이 샘플 데이터베이스를 적용하면 사용자가 스포츠 이벤트, 공연 및 콘서트 등을 위한 온라인 티켓을 사고 팔 수 있는 가상의 TICKIT 웹사이트에서 분석가가 판매 작업을 추적하는 데 효과적입니다. 특히 시간 경과에 따른 티켓 이동과 판매자의 성공률, 그리고 티켓이 가장 많이 팔리는 이벤트, 공연장 및 계절 등을 구분할 수 있습니다. 분석가는 이러한 정보를 사용하여 사이트를 자주 방문하는 구매자와 판매자 모두에게 신규 사용자를 유치하거나 광고 및 홍보 효과를 높이는 동기를 제공할 수 있습니다.
예를 들어 다음은 2008년에 판매된 티켓 수를 기준으로 San Diego의 상위 판매자 5명을 찾는 쿼리입니다.
select sellerid, username, (firstname ||' '|| lastname) as name,
city, sum(qtysold)
from sales, date, users
where sales.sellerid = users.userid
and sales.dateid = date.dateid
and year = 2008
and city = 'San Diego'
group by sellerid, username, name, city
order by 5 desc
limit 5;
sellerid | username | name | city | sum
----------+----------+-------------------+-----------+-----
49977 | JJK84WTE | Julie Hanson | San Diego | 22
19750 | AAS23BDR | Charity Zimmerman | San Diego | 21
29069 | SVL81MEQ | Axel Grant | San Diego | 17
43632 | VAG08HKW | Griffin Dodson | San Diego | 16
36712 | RXT40MKU | Hiram Turner | San Diego | 14
(5 rows)
본 설명서의 예에서 사용되는 데이터베이스에는 작은 크기의 데이터 세트가 저장됩니다. 팩트 테이블 2개에는 각각 200,000개 미만의 행이 있고, 차원 테이블은 CATEGORY 테이블의 11개 행부터 USERS 테이블의 50,000개 행에 이르기까지 다양합니다.
특히 본 설명서의 데이터베이스 예는 다음과 같이 Amazon Redshift 테이블 설계의 주요 특성을 잘 드러내고 있습니다.
TICKIT 데이터베이스의 테이블 스키마에 대한 자세한 내용을 보려면 다음 탭을 선택하세요.
- CATEGORY table
-
열 명칭 |
데이터 유형 |
설명 |
CATID |
SMALLINT |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 티켓이 매매되는 특정 유형의 이벤트를 나타냅니다. |
CATGROUP |
VARCHAR(10) |
이벤트 그룹을 나타내는 서술형 이름(Shows , Sports 등)입니다. |
CATNAME |
VARCHAR(10) |
그룹 내 이벤트 유형을 나타내는 짧은 서술형 이름(Opera , Musicals 등)입니다. |
CATDESC |
VARCHAR(50) |
이벤트 유형을 나타내는 긴 서술형 이름(Musical theatre 등)입니다. |
- DATE table
-
열 명칭 |
데이터 유형 |
설명 |
DATEID |
SMALLINT |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 연중 날짜를 나타냅니다. |
CALDATE |
날짜 |
날짜(2008-06-24 등)입니다. |
DAY |
CHAR) |
짧은 형식의 주중 요일(SA 등)입니다. |
주 |
SMALLINT |
주의 수(26 등)입니다. |
MONTH |
CHAR) |
짧은 형식의 월 이름(JUN 등)입니다. |
QTR |
CHAR) |
분기 수(1 ~ 4 )입니다. |
YEAR |
SMALLINT |
4자리 연도(2008 등)입니다. |
holiday |
BOOLEAN |
공휴일(미국 기준) 여부를 나타내는 플래그입니다. |
- EVENT table
-
열 명칭 |
데이터 유형 |
설명 |
EVENTID |
INTEGER |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 특정 장소와 시간에 열리는 이벤트를 나타냅니다. |
VENUEID |
SMALLINT |
VENUE 테이블에 대한 외래 키 참조입니다. |
CATID |
SMALLINT |
CATEGORY 테이블에 대한 외래 키 참조입니다. |
DATEID |
SMALLINT |
DATE 테이블에 대한 외래 키 참조입니다. |
EVENTNAME |
VARCHAR(200) |
Hamlet 또는 La Traviata 와 같은 이벤트 이름입니다. |
StartTime |
TIMESTAMP |
이벤트가 개최되는 연도 및 날짜와 시작 시간(2008-10-10 19:30:00 등)입니다. |
- VENUE table
-
열 명칭 |
데이터 유형 |
설명 |
VENUEID |
SMALLINT |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 이벤트가 열리는 특정 장소를 나타냅니다. |
VENUENAME |
VARCHAR(100) |
정확한 장소 이름(Cleveland Browns Stadium 등)입니다. |
VENUECITY |
VARCHAR(30) |
도시 이름(Cleveland 등)입니다. |
VENUESTATE |
CHAR) |
미국 및 캐나다를 기준으로 2자로 축약된 주 또는 지방(OH 등)입니다. |
VENUESEATS |
INTEGER |
알려진 경우에 한해 해당 장소에서 사용할 수 있는 최대 좌석 수(73200 등)입니다. 이 열에는 표현상 null 값이나 0이 포함되기도 합니다. |
- USERS table
-
열 명칭 |
데이터 유형 |
설명 |
USERID |
INTEGER |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 1개 이상의 이벤트에서 티켓을 판매하였거나 구매한 등록 사용자(구매자, 판매자 또는 둘 다)를 나타냅니다. |
USERNAME |
CHAR(8) |
8자로 구성된 영숫자 사용자 이름(PGL08LJI 등)입니다. |
FirstName |
VARCHAR(30) |
사용자의 이름(Victor 등)입니다. |
LastName |
VARCHAR(30) |
사용자의 성(Hernandez 등)입니다. |
CITY |
VARCHAR(30) |
사용자가 태어난 도시(Naperville 등)입니다. |
STATE |
CHAR) |
사용자가 태어난 주(GA 등)입니다. |
EMAIL |
VARCHAR(100) |
사용자의 이메일 주소입니다. 이 열에는 임의의 Latin 값(turpis@accumsanlaoreet.org 등)이 포함됩니다. |
PHONE |
CHAR) |
14자리의 사용자 전화 번호((818) 765-4255 등)입니다. |
LIKESPORTS, ... |
BOOLEAN |
true 및 false 값으로 사용자의 호불호를 식별할 수 있도록 연속된 10개의 열입니다. |
- LISTING table
-
열 명칭 |
데이터 유형 |
설명 |
LISTID |
INTEGER |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 특정 이벤트의 티켓 목록을 나타냅니다. |
SELLERID |
INTEGER |
USERS 테이블에 대한 외래 키 참조로서 티켓을 판매하는 사용자를 식별합니다. |
EVENTID |
INTEGER |
EVENT 테이블에 대한 외래 키 참조입니다. |
DATEID |
SMALLINT |
DATE 테이블에 대한 외래 키 참조입니다. |
NUMTICKETS |
SMALLINT |
판매할 수 있는 티켓 수(2 , 20 등)입니다. |
PRICEPERTICKET |
DECIMAL(8,2) |
티켓 1장당 정가(27.00 , 206.00 등)입니다. |
TOTALPRICE |
DECIMAL(8,2) |
이 목록의 가격 총액(NUMTICKETS*PRICEPERTICKET)입니다. |
LISTTIME |
TIMESTAMP |
이 목록이 게시된 연도 및 날짜와 시간(2008-03-18 07:19:35 등)입니다. |
- SALES table
-
열 명칭 |
데이터 유형 |
설명 |
SALESID |
INTEGER |
각 행의 고유 ID 값을 나타내는 기본 키입니다. 각 행마다 특정 목록에서 나타낸 것처럼 특정 이벤트에 대한 1장 이상의 티켓 판매를 나타냅니다. |
LISTID |
INTEGER |
LISTING 테이블에 대한 외래 키 참조입니다. |
SELLERID |
INTEGER |
USERS 테이블(티켓을 판매한 사용자)에 대한 외래 키 참조입니다. |
BUYERID |
INTEGER |
USERS 테이블(티켓을 구매한 사용자)에 대한 외래 키 참조입니다. |
EVENTID |
INTEGER |
EVENT 테이블에 대한 외래 키 참조입니다. |
DATEID |
SMALLINT |
DATE 테이블에 대한 외래 키 참조입니다. |
QTYSOLD |
SMALLINT |
판매된 티켓 수(1 ~ 8 )입니다. 거래 1회에 판매 가능한 최대 티켓 수는 8장입니다. |
PRICEPAID |
DECIMAL(8,2) |
티켓을 판매한 가격 총액(75.00 , 488.00 등)입니다. 티켓 1장당 가격은 PRICEPAID/QTYSOLD입니다. |
COMMISSION |
DECIMAL(8,2) |
사업체에서 티켓 판매 시 징수하는 15% 수수료(11.25 , 73.20 등)입니다. 판매자는 PRICEPAID 값의 85%를 받습니다. |
SALETIME |
TIMESTAMP |
판매가 완료된 연도 및 날짜와 시간(2008-05-24 06:21:47 등)입니다. |