Miner

6주차 -1 본문

데브코스

6주차 -1

MineTime76 2023. 11. 11. 19:42

※ 데이터 웨어하우스와 SQL 기본에 대해 배우고 이를 바탕으로 데이터 분석에 대해 학습 (1)

 

◆ 데이터 관련 3개의 직군

  • 데이터 엔지니어 
    • 파이썬, 자바/스칼라
    • SQL, 데이터베이스
    • ETL, ELT (Airflow, DBT)
    • Spark, Hadoop
  • 데이터 분석가
    • SQL, 비지니스 도메인에 대한 지식
    • 통계 (AB 테스트 분석)
  • 데이터 과학자
    • 머신러닝
    • SQL, 파이썬
    • 통계

1. 관계형 데이터베이스

구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지

  • 엑셀, 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
  • 테이블에는 칼럼(열)과 레코드(행)가 존재

관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL

  • 테이블 정의를 위한 DDL(Data Definition Language)
  • 테이블 데이터 조작/질의를 위한 DML(Data Manipulation Language)

2. 대표적 관계형 데이터베이스

프로덕션 데이터베이스 : MySQL, PostgreSQL, Oracle

  • OLTP (Online Transaction Processing)
  • 빠른 속도에 집중, 서비스에 필요한 정보 저장
  • 웹서비스에서 주로 사용, 빠른 응답 

데이터 웨어하우스 : Redshift, Snowflake, BigQuery, Hive

  • OLAP(Online Analytical Processing)
  • 처리 데이터 크기에 집중 / 데이터 분석 혹은 모델 빌딩등을 위한 데이터 저장
  • 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장

회사가 작은 경우, 프로덕션 데이터베이스만 존재한다.  프로덕션 데이터베이스는 웹서비스와 연동이 되어있기 때문에 내가 어떤 데이터가 필요해서 Bigquery를 날리게 되면 느려져서 전체 서비스에 영향을 미친다. 백엔드 개발자가 기분이 안 좋아진다. 사고로 이어질 수 있다. 데이터 웨어하우스가 없는 회사 일 경우 불화를 일으킬 수 있다. 

 

데이터 웨어하우스를 가지고 있으면 서비스와는 관련 없이 데이터를 컨트롤 할 수 있다. 


3. 관계형 데이터베이스의 구조

2단계로 구성

  1. 가장 밑단에는 테이블들이 존재 (테이블은 엑셀의 시트에 해당)
  2. 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성(엑셀에서는 파일)

테이블의 구조(테이블 스키마라고 부름)

  • 테이블은 레코드(인스턴스)들로 구성(행)
  • 레코드는 하나 이상의 필드(컬럼)로 구성(열)
  • 필드(컬럼)은 이름과 타입과 속성(Primary Key)로 구성됨


4. SQL 

관계형 데이터베이스에 있는 데이터를 질의하거나 조작해주는 언어

  • DDL (Data Definition Language) : 테이블의 구조를 정의하는 언어
  • DML (Data Manipulation Language) : 테이블에서 원하는 레코드를을 읽어오는 질의 언어,  테이블에 레코드를 추가/삭제/갱신해주는데 사용하는 언어

SQL은 빅데이터 세상에서도 중요

  • 구조화된 데이터를 다루는한 SQL은 데이터 규모와 상관없이 쓰임
  • 모든 대용량 데이터 웨어하우스는 SQL 기반 (Redshift, Snowflake, Bigquery, Hive)
  • Spark이나 Hadoop도 예외는 아님
    • SparkSql과 Hive라는 SQL 언어가 지원

SQL의 단점

  • 구조화된 데이터를 다루는데 최적화가 되어있음
    • 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심함
    • 많은 관계형 데이터베이스들이 플랫한 구조만 지원함(no nested like JSON)
      • 구글 빅쿼리는 nested structure를 지원함
    • 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐
      • 즉 SQL만으로는 비구조화된 데이터를 처리하지 못함
    • 관계형 데이터베이스마다 SQL 문법이 조금씩 상이

5. 모델링

Star schema

  • Production DB용 관계형 데이터베이스에서는 보통 스타 스키마를 사용해 데이터를 저장
  • 데이터를 논리적 단위로 나눠 저장하고 필요시 조인. 스토리지의 낭비가 덜하고 업데이트가 쉬움

 

Denormalized schema

  • 데이터 웨어하우스에서 사용하는 방식
    • 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없는 형태를 말함
  • 이는 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능

 


6. 데이터 웨어하우스 : 회사에 필요한 모든 데이터를 저장

여전히 SQL 기반의 관계형 데이터베이스

  • 프로덕션 데이터베이스와는 별도이어야 함
    • OLAP (Online Analytical Processing) vs OLTP (Online Transaction Processing)
  • AWS의 Redshift, Google Cloud의 Big Query, Snowflake 등이 대표적
    • 고정비용 옵션 vs 가변비용 옵션
  • 데이터 웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스
    • 처리속도가 아닌 처리 데이터의 크기가 더 중요해짐
  • ETL 혹은 데이터 파이프라인
    • 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드들이 필요해지는데 이를 ETL 혹은 데이터 파이프라인이라고 부름.

7. 데이터 인프라

데이터 엔지니어가 관리함 / 여기서 한 단계 발전하면 Spark와 같은 대용량 분산처리 시스템이 일부로 추가됨


8. 데이터 순환 구조


9. 클라우드

컴퓨팅 자원(하드웨어, 소프트웨어)을 네트윅을 통해 서비스 형태로 사용하는 것

자원(서버)를 필요한만큼 (거의) 실시간으로 할당하여 사용한 만큼 지불

탄력적으로 필요한 만큼의 자원을 유지하는 것이 중요

 

※ 클라우드 컴퓨팅이 없었다면?

  • 서버/네트윅/스토리지 구매와 설정등을 직접 수행해야 함
  • 데이터센터 공간을 직접 확보
    • 확장이 필요한 경우 공간을 먼저 더 확보해야 함
  • 그 공간에 서버를 구매하여 설치하고 네트윅 설정
    • 보통 서버를 구매해서 설치하는데 적어도 두세달은 걸림
  • 또한 Peak time을 기준으로 Capacity planning
    • 놀고 있는 자원들이 높게 되는 현상 발생
  • 직접 운영비용 vs 클라우드 비용
    • 기회비용!

※ 클라우드 컴퓨팅의 장점

  • 초기 투자 비용이 크게 줄어둠
    • CAPEX(Capital Expenditure) vs OPEX(Operation Expense)
  • 리소스 준비를 위한 대기시간 대폭 감소
    • Shorter Time to Market
  • 노는 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축
    • Managed Service (SaaS) 이용 

10. AWS

가장 큰 클라우드 컴퓨팅 서비스 업체

다양한 서비스들이 오픈소스 프로젝트들을 기반으로 함 

 

EC2 - Elastic Compute Cloud 

 

  • AWS의 서버 호스팅 서비스
  • 리눅스 혹은 윈도우 서버를 론치하고 어카운트를 생성하여 로그인 가능
  • 가상 서버들이라 전용서버에 비해 성능이 떨어짐

구매 옵션 

  • On-Demand : 시간당 비용을 지불되며 가장 흔히 사용하는 옵션
  • Reserved : 1년이나 3년간 사용을 보장하고 1/3 정도를 40% 디스카운트를 받는 옵션
  • Spot Instance : 일종의 경매방식으로 놀고 있는 리소스들을 보다 싼 비용으로 사용할 수 있는 옵션

S3 - Simple Storage Service

 

아마존이 제공하는 대용량 클라우드 스토리지 서비스

데이터 저장관리를 위해 계층적 구조를 제공

글로벌 내임스페이스를 제공하기 때문에 톱레벨 디렉토리 이름 선정에 주의

S3 에서는 디렉토리를 버킷(Bucket) 이라고 부름

버킷이나 파일별로 액세스 컨트롤 가능

 

Standard storage : $23

Infrequent Access storage : $12.5

Glacier storage : $4

 


11. 기타 중요 서비스 - Database Services

  • RDS (Relational Database Service)
    • MySQL, PostgreSQL, Aurora
    • Oracle, MS SQL Server
  • DynamoDB
  • Redshift
  • ElasticCache
  • Neptune
  • ElasticSearch
  • MongoDB

12. AL & ML Services

 

모델 만들기

 

1. 가설 세우기

2. training set 수집

3. 어떤 머신러닝 알고리즘을 사용할 건지 선택

4. 맞는 hyper parameter를 설정

 

  • SageMaker
    • Deep Learning and Machine Learning end-to-end framework
  • Lex
    • Conversational Interface (Chatbot Service)
  • Polly 
    • Text to Speech Engine
  • Rekognition
    • image recognition Service

AWS 30% Azure 20% Google Cloud 7%


13. Redshift : Scalable SQL 엔진

  • 2PB (페터바이트) 까지 지원
  • still OLAP 
    • 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용불가
  • Columnar storage
    • 컬럼별 압축이 가능
    • 컬럼을 추가하거나 삭제하는 것이 아주 빠름
  • 벌크 업데이트 지원
    • 레코드가 들어있는 파일을 S3(웹 스토리지)로 복사 후 COPY 커멘드로 Redshift로 일괄 복사
    • 고정 용량/비용 SQL 엔진
      • Snowflake vs Bigquery
    • 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음
      • 프로덕션 데이터베이스들은 보장함
      • 개발자가 따로 보장을 해줘야 한다.
  • Redshift는 Postgresql 8.x와 SQL이 호환됨
    • 하지만 Postgrsql 8.x의 모든 기능을 지원하지는 않음
      • 예를 들어 text 타입이 존재하지 않음
    • Postgresql 8.x를 지원하는 툴이나 라이브러리로 액세스 가능
      • JDBC/ODBC
    • 다시 한번 SQL이 메인 언어라는 점을 명심
      • 그러기에 테이블 디자인이 아주 중요

Redshift 는 빅데이터 웨어하우스지만 구조화된 데이터만 처리할 수 있어, 테이블 디자인이 매우 중요하다.

 


14. Redshift Schema (폴더) 구성

 


15. Redshift 액세스 방법

Amazon Redshift는 관리형 클라우드 데이터 웨어하우스 서비스로서, AWS에서 호스팅하고 관리합니다.

그래서 설치한다는 표현이 아니고 액세스한다 라고 나타냄

 

Google Colab 사용 예정

Postgresql 8.x 와 호환되는 모든 툴과 프로그래밍 언어를 통해 접근 가능

  • python 이라면 psycopg2 모듈
  • 시각화/대시보드 툴이라면 Looker, Tableau, Power BI, superset 등에서 연결 가능

 

 

'데브코스' 카테고리의 다른 글

6주차-3  (0) 2023.11.15
6주차-2  (1) 2023.11.14
DAY 14  (0) 2023.11.02
DAY 13  (0) 2023.11.01
DAY 12  (1) 2023.10.31