홍카나의 공부방

[DE 개념 정리] 데이터 웨어하우스와 클라우드, AWS Redshift 본문

Data Engineering

[DE 개념 정리] 데이터 웨어하우스와 클라우드, AWS Redshift

홍문관카페나무 2023. 5. 8. 14:43

데이터 웨어하우스

  • 여전히 SQL 기반 관계형 데이터베이스의 형태지만, 프로덕션 데이터베이스와 별도로 저장되는 DB다.
  • 회사에 필요한 모든 데이터를 저장하는 DB다. (분석용으로 자주 쓰이는 DB인거지, 분석용 DB요! 라고 답변하면.. 망함
  • 보통 프로덕션 DB로 만들어놓은 MySQL을 복사하여 AWS Redshfit, BigQuery, Snowflake 등으로 별도 저장한다.
  • 데이터 웨어하우스는 OLAP(Online Analytical Processing) 방법론을 이용하여 분석할 수 있다.
  • 데이터 웨어하우스는 서비스 운영이 아닌 기업 내부의 팀을 위한 데이터 집계/분석/요약용 데이터베이스이므로, 처리속도가 아닌 처리 데이터의 크기가 더 중요해진다.
  • 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 적재하는 프로세스를 데이터 파이프라인이라고 부르는데, 이에 대해서는 https://hongcana.tistory.com/81를 참고하면 도움을 받을 수 있다.
  • https://hongcana.tistory.com/67에도 간단히 개념을 정리해 놨다.

 

Cloud Computing

  • 클라우드는 컴퓨팅 자원(하드웨어, 소프트웨어 등)을 네트워크를 통해 서비스 형태로 사용하는 것이다.
  • 초창기에는 서버 하드웨어만 빌려서 OS 깔고, MySQL 깔고 사용하는 것이었으나, 이미 십여 년 전부터 필요한 소프트웨어만 빌려서 사용한 만큼 돈을 지불하는 것이 일상이 되었다.
  • 클라우드 컴퓨팅이 없었다면.. 서버 구매와 설치, 네트워크 설정, 스토리지 구매와 설정, Peak time을 기준으로 Capacity planning하여 직접 운용비용을 줄이는 과정... 이런 거를 다 해야 한다. 많은 시간과 자본이 드는 과정이다.
  • 기회비용을 생각하면 클라우드를 사용하여 비용을 아끼는 것이 훨씬 효율적이다.

 

AWS

  • AWS는 전 세계에서 가장 큰 클라우드 컴퓨팅 서비스 업체로, 2002년 아마존의 상품데이터를 API로 제공하면서 시작되었다.
  • 대표적인 서비스로는 EC2로, 서버 호스팅 서비스다. 3가지 구매 옵션이 있는데, On-Demand로 시간당 비용을 지불하는 옵션, 1년이나 3년간 사용을 보장하고 할인을 받는 Reserved, 그리고 Spot Instance가 존재한다.
  • 그리고 대용량 클라우드 스토리지 서비스인 S3도 있다. 인터넷 하드 디스크라고 생각하면 이해하기 쉽다. 계층적 구조를 제공한다.
  • 그 외에도 다양한 데이터베이스들을 서비스 형태로 지원해 준다. RDS, Redshift 등이 존재한다.
  • 딥러닝과 머신러닝 모델을 만들고, 모델의 테스트와 API 형태로 배포하는 것까지 자동화해주는 SageMaker, 챗봇 서비스인 Lex 등의 AI & ML 서비스들도 존재한다.
  • 기타 중요 서비스로는 Lambda가 있다. 서버리스 컴퓨팅 엔진인데, 구글 클라우드에는 Cloud Function, Azure에는 Azure Function이라는 이름으로 서비스를 제공한다. API 로직만 구현하면 나머지는 Lambda에서 다 알아서 해주는 것.

 

AWS Redshift

  • Redshift는 SQL 엔진이다.
  • 이론적으로는 최대 2 PB까지 지원하며, 실제로 64TB부터는 약간 문제가 생긴다고 한다.
  • OLAP 방식으로 만들어진 서비스이기 때문에 응답속도가 빠르지 않다. 따라서 MySQL처럼 프로덕션 데이터베이스(제품용 DB)로 사용하면 망한다.
  • 디스크에 Column 기반의 블록으로 저장이 될 것이다. 컬럼 별로 압축이 가능하다.
  • SQL의 INSERT 명령어를 사용하여 모든 데이터를 저장하기엔 시간이 오래 걸려서 바람직한 방법이 아니다.
  • 따라서 레코드가 들어있는 파일을 S3로 복사하고, COPY 커맨드로 Redshift로 일괄 복사하는 벌크 업데이트를 사용한다. 이러면 백만 개의 레코드도 1분 안에 복사가 충분히 가능하다.
  • 고정 비용 SQL 엔진이다. 이에 반해 snowflake나 big query는 가변 비용 SQL 엔진이다.
  • 다른 데이터 웨어하우스처럼 Primary Key Uniqueness를 보장하지 않는다. 이게 보장되려면 레코드가 추가될 때마다 PK 값이 중복되는지 체크해야 하는데, MySQL은 이걸 보장하나 Redshift는 그렇지 않다.
  • Redshift는 Postgresql 8.x의 모든 기능을 지원하지 않으나, 대부분 SQL이 호환된다.
  • Redshift를 시작하고 난 뒤, 3개의 스키마를 만드는 방법을 선택할 수 있다.
CREATE SCHEMA raw_data;
CREATE SCHEMA analytics;
CREATE SCHEMA adhoc;
  • 이처럼 외부에서 읽어온 데이터를 저장하는 raw_data, 로우 데이터를 비정규화하거나 변환해서 저장하는 analytics, 사용자가 실시간으로 원하는 조건에 맞게 에드혹 분석을 할 수 있게끔 만들어둔 adhoc을 둘 수 있다.
반응형