RedShift 02.

Q·2024년 2월 5일
0

AWS

목록 보기
2/15

AWS Redshift 특징

레드시프트의 특징은 여러가지가 있는데요, 그 중 빠른 성능, 간단신속한 확장과 백업, 데이터 레이크 쿼리를 이 세가지를 꼽아보았습니다.

1) 빠른 성능입니다.

레드시프트는 기존의 데이터웨어 하우스보다 10배 빠른 성능을 자랑합니다. 그것이 가능한 것은 기계학습, 대량 병렬 쿼리 실행, 열 기반 스토리지, 결과 캐싱 때문입니다.

  • 레드시프트는 기계학습을 통해 프로세스들의 부하량을 계산하고 가장 빠른 처리가 가능하게 대기열을 구성합니다.
  • 수천 개의 인스턴트를 사용해 대량 병렬 쿼리를 실행합니다. 레드시프트의 클러스터는 쿼리를 통합해 리턴하는 리더노드, 병합쿼리를 실행하는 컴퓨팅 노드로 구성되어있다고 합니다.
  • 고성능 디스크의 열 기반 스토리지 및 데이터 압축, 영역 매핑을 사용하여 쿼리 수행에 필요한 I/O 수를 줄입니다.
  • 쿼리 결과를 캐싱해두어서, 같은 쿼리를 반복적으로 사용할 경우 데이터가 변경되지 않았는가를 확인 후 캐시된 결과를 가져옵니다.
  • 이러한 빠른 성능 덕분에 1밀리초 미만의 응답 시간을 가지며, 30만 row를 sum하는 데도 리턴 시간이 5초 이내라고 합니다.

2) 간단신속한 확장과 백업입니다.

  • 클라우드 기반이다 보니 필요할 때마다 설정을 변경함으로써 DB를 확장하거나 혹은 축소할 수가 있습니다. 설정 변경은 바로 적용되어서, 확장이 간단하고 신속합니다.
  • 자동으로 스냅샷을 S3에 저장해 백업합니다.

3) 데이터 레이크 쿼리입니다.

레드시프트는 레드시프트가 가진 페타바이트 규모의 데이터와 S3에 구축된 데이터 레이크에 있는 엑사바이트 규모의 데이터에 대해 쿼리를 실행할 수 있습니다.
레드시프트는 쿼리를 통한 실행이 가능한건 PostgreSQL을 기반으로 만들어졌기 때문입니다. 레드시프트는 데이터 레이크인 S3에 바로 접근할 수 있기에 데이터를 로딩하는 시간이 없어 시간이 절약됩니다.
레드시프트가 날리는 쿼리로는 Map 안에 Map이 들어간 중첩데이터(ex: c.name.Famliy)에도 접근할 수 있다고 합니다.

AWS Redshift를 사용 하는 기업

  • DOCOMO: 마케팅 운영을 위한 데이터 과학팀이 있는데요, 기존 데이터 웨어하우스가 가진 데이터 양이 어마어마하게 늘어나자 레드시프트를 도입, 확장하였고 그 결과 10배 빠른 결과를 받을 수 있게 되었다고 합니다.
  • Finra: 미국의 금융산업 규제 당국으로, 매일 수십억 건의 트랜잭션을 분석하여 주식 종목, 경제 시황, 시장 및 경영 현황 등을 파악합니다.
  • 핀터레스트: 미국에서 시작된 이미지 SNS로, 레드시프트를 이용해 A/B 테스트 및 개인화된 추천을 지원합니다.

AWS Redshift와 기존의 DW와의 차별성

1) 확장성

  • 기존의 DW: 온리 온프레미스 시스템이어서 확장하기가 어렵고 복잡합니다. 시간 및 비용도 많이 듭니다.
  • 레드시프트: 클라우드 기반이며 S3와 연결되어 확장성이 뛰어납니다. 주로 큰 데이터는 S3에, 중요한 데이터나 소규모 데이터는 레드시프트에 저장하면 효율적이라 합니다. 또한 레드시프트는 확장 관리 작업 대부분을 자동화하여 편리한 확장이 가능합니다.

2) 데이터집합적

  • 기존의 DW: 데이터가 여러 장소에 분산되어 있어 어떤 데이터가 원본인지 알 수 없었으며 분석시 시간과 비용이 많이 들었습니다.
  • 레드시프트: 모든 데이터를 S3 하나에 저장하여 분석하여 이점을 가집니다. 이를 통해 개별 데이터만을 분석해서는 알 수 없는 정보들을 얻을 수 있습니다.

3) 가격

  • 기존의 DW: 개발 비용이 비싸서 중소기업은 이용하기가 어려웠습니다.
  • 레드시프트: 비용이 저렴한 편이라 중소기업 및 스타트기업뿐 아니라 개인도 사용하기에 부담이 없습니다. 온디맨드 요금이며, 사용하는 제품에 따라 시간당 0.25달러~6.80달러까지 다양합니다.
  • 기존의 DW: 정형화된 데이터만 분석할 수 있습니다.
  • 레드시프트: 정형화된 데이터뿐만 아니라 반정형화, 비정형화 데이터도 분석할 수 있다(JSON, TextFile, PARQUET, OpenCSV 등 지원). S3에는 원시 데이터를 그대로 저장하고, 그것을 레드시프트가 분석시 필요한 형태로 데이터를 가공한다.(데이터를 분석하는 시점에서 정의. 즉시 분석이 가능. Ad-hoc.) 다만 Glue(데이터 카타로그와 ETL)를 함께 써야 더욱 효과적. 아마존의 다른 서비스들과 유기적이네요...

AWS Redshift와 타 DB와 비교

Oracle

  • 오라클은 상업 RDB 입니다. 예전과 달리 클라우드 서비스를 통해 확장성을 가지게 되었습니다.
  • 타 DB에 비해 오라클만 지원하는 기능들(connect by: TREE구조를 가지는 데이터 조회에 많이 사용 와 같이 대량 데이터 처리 뛰어남)이 많아 편리하며, OLTP가 빠르고, 30년이 넘은 운영 데이터를 통해 신뢰성 높은 DB를 제공하는 것이 장점입니다.
  • 다만 행 기반 스토리지라서 데이터가 많아질수록 읽고 쓰는 시간이 오래걸립니다. 그리고 정형화 데이터만 다룰 수 있으며 비용이 많은 것이 단점입니다.
  • 레드시프트는 DW용 상업 RDB 입니다.
  • S3에서 반정형, 비정형 데이터를 읽어들여 ELT 처리 후 정형 데이터로 저장합니다.
  • 다만 레드시프트는 PregreSQL을 바탕으로 하고 있지만 분석에 초점을 두었기에 소규모 OLTP 처리에 적합한 기능, index나 PK, FK 등 분석과 무관한 기능들은 약하거나 제외되었습니다. 또한 열 기반 스토리지이기에 OLTP 시간은 느립니다. 레드시프트의 유지보수 시간일 때는 속도가 느려질 수도 있습니다.

Hbase

  • Hbase는 와이드 칼럼(wide-column) 저장소입니다. 그래서 다른 비관계형 데이터베이스보다 정형 데이터 및 반정형 데이터 처리에 더 능하고, 관계형 데이터베이스보다 수평 확장성이 더 크고 속도가 더 빠르다는 점이 특징입니다.

  • Hbase는 확장성이 뛰어납니다. Region은 HBase에서 수평확장(Scale-in/out)의 기본단위인데요, Region은 함께 저장되는 테이블 데이터의 부분집합입니다. 처음에는 테이블은 오직 한개의 Region에만 있는데 만약 Region에 많은 row 들이 추가되서 그 크기가 너무 커지면, 중간키를 이용해서 Region을 반으로 나눠서 저장합니다. key가 있어 빠른 대규모 데이터 탐색이 용이하며 Json 저장을 지원합니다.

  • 다만 클라우드 서비스는 아직 미지원이며, row 단위로 데이터를 다루기 때문에 소규모 데이터 처리가 어렵습니다. 트랜잭션은 row 혹은 rowgroup 단위로 이루어지며, 스키마가 단순하여 복잡한 연산이 어려워 스파크 등에 연산 처리를 맡깁니다.

    ▶ 데이터를 통째로 가져오는 일: hbase. 열을 가져와서 행대로 나누는게 레드시프트는 적합하지 않다.

Spark

  • 스파크는 DB는 아니지만 레드시프트와 그 기능이 유사한 면이 있어 비교해보았습니다. 스파크는 분산 데이터 처리를 위해 설계된 오픈 소스 클러스터 컴퓨팅 프레임워크 입니다. 레드시프트와 마찬가지로 클러스터를 통한 병렬처리로 인해 빠른 처리속도가 장점이며, 라이브러리를 통해 확장하는 것이 용이합니다. 그리고 실시간으로 데이터를 처리할 수 있습니다.

  • 다만 스파크는 DB가 아니기 때문에 데이터를 저장할 DB가 따로 필요하며, OLTP 기능이 없고, 데이터를 메모리로 읽어들여 처리하기 때문에 만약 데이터가 너무 많으면 노드가 죽을 수도 있습니다(그래서 OLTP 기능이 없음).

    ▶ 데이터가 적당히 클 때: 스파크. 실시간으로 처리도 가능하고.

    ▶ 데이터가 클 때: 레드시프트. 가져오는 시간도 많이 걸리는데 S3에 바로 접근할 수 있기에 로드 시간이 없다. 빅데이터 분산 시스템의 운영을 통합해도 좋을듯. 그리고 레드시프트는 기계의 노후화 이런거 신경 안 써도 되니까요... 하드웨어 비용과 비교하여 결정하면 될듯.

AWS Redshift의 쿼리 성능 조사 결과

DB 성능 측정 산업 표준인 TPC-H 벤치마크의 1TB TPC-H 데이터 세트를 이용한 결과입니다.
TPC-H 데이터 세트는 8개 테이블을 조인한 22개의 쿼리를 이용하여 86.6억개의 레코드를 가져옵니다.
레드시프트와 레드시프트 스펙트럼 모두 10 node cluster dc2.8xlarge 제품을 이용하였습니다.
비용은 시간당 48달러이며 클러스터를 구성하는 시간이 20여분 정도 소요된다고 합니다.

레드시프트

로컬 저장소에 저장되어있는 데이터에 쿼리를 날립니다.
S3에서 클러스터로 COPY를 통해 파일을 로드하였습니다.
22개의 쿼리를 실행한 후 평균을 냈을 때 쿼리 1개당 40.6초 정도 걸렸습니다.

레드시프트 스펙트럼

S3에 저장되어있는 데이터에 직접 쿼리를 날립니다.
22개의 쿼리를 실행한 후 평균을 냈을 때 쿼리 1개당 108초 정도 걸렸습니다.

AWS Redshift와 오로라의 차이점

레드시프트는 RDB이지만 데이터웨어 하우스를 위한 DB로, 분석에 집중하였습니다.
대량의 데이터를 분석하고 BI를 통해 분석리포트를 제공하는 것에 특화되어있으며(OLAP) OLTP용으로는 적합하지 않습니다.

오로라는 MySQL과 PostgreSQL 호환 RDB 입니다. MySQL보다 5배 빠르고 PostgreSQL보다 3배 빠르다는 점을 강점으로 내세우며 해당 DB들에 대해 마이그레이션을 지원합니다. 읽고 쓰기 기능이 빠르며 각 행이나 열에 대한 트랜잭션이 빠릅니다(OLTP). OLAP용으로는 적합하지 않습니다.

결론

1) 키네시스로 리얼타임으로 요청오는 DATA를 수집 및 S3에 적재
2) 적재된 파일을 레드시프트 스펙트럼을 이용하여 분석
3) 분석된 결과를 오로라 DB에 넣어서 BI 같은 툴로 보여주던가 아님 별도 화면을 우리가 만들어서 조회 함 (사용자 실시간 조회)

참고

profile
Data Engineer

0개의 댓글