TIL#151 Redshift

Dasom·2021년 8월 11일
0

database

목록 보기
11/15

Redshift

Redshift는 AWS의 MPP(Massive Parallel Processing) Database이다. PostgreSQL을 기반으로 한다. 클라우드에서 완벽하게 관리되는 데이터 웨어하우스 서비스이며 작게는 수백 기가바이트부터 페타바이트 이상까지 데이터를 확장할 수 있다.

OLTP vs OLAP

  • OLTP DB : 주로 서비스 운영에 활용되는 데이터베이스이며 row 단위의 update, insert 가 잦은 서비스 형태로 사용된다.
  • OLAP DB : 상대적으로 큰 규모의 데이터에 분석적인 쿼리, aggregation을 위한 무거운 쿼리가 요구된다.
  • Redshift DB는 OLAP 목적으로 사용된다.

현재 MySQL 을 사용중이고 대용량의 데이터를 가져와야 하는 상황이었는데 아키텍처팀 팀장님께서 Redshift 를 생성해주셔서 처음 사용해 보게 되었다. 쿼리가 조금 달라서 다시 수정을 하였고 내가 경험한 것들만 일단 적어본다.

if

if(PH.KIND_CD in ('refund', 'refund_part'), PH.TOTAL_PRICE * -1, PH.TOTAL_PRICE) as total_price

redshift 에서는 IF문이 실행되지 않는다. 대신 CASE WHEN 구문을 사용하면 된다.

CASE WHEN (PH.KIND_CD in ('refund', 'refund_part')) THEN PH.TOTAL_PRICE * -1 ELSE PH.TOTAL_PRICE END as total_price

ifnull

ifnull(PH.DIVIDE_YN, 'N') as divide_yn

ifnull 역시 실행되지 않고 대신에 coalesce를 사용한다.

coalesce(PH.DIVIDE_YN, 'N') as divide_yn

subquery

외부 조인에서 on 절의 하위쿼리는 지원하지 않는다.

left outer join PAYMENT_HISTORY PH2 on PH2.PAY_HIST_NO = (select max(PAY_HIST_NO) from PAYMENT_HISTORY
profile
개발자꿈나무🌲

0개의 댓글