2023/11/19

anso·2023년 11월 19일
0

TIL

목록 보기
11/20
post-thumbnail

관계형 데이터베이스

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

  • 관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL
    - 테이블 정의를 위한 DDL(Data Definition Language)
    - 테이블 데이터 조작/질의를 위한 DML(Data Manipulation Language)

대표적인 관계형 데이터베이스

  1. 프로덕션 데이터베이스 : MySQL, PostgreSQL, Oracle
  • OLTP(OnLine Tranaction Processing)
  • 빠른 속도에 집중. 서비스에 필요한 정보 저장
  1. 데이터 웨어하우스 : RedShift, Snowflake, BigQuery, Hive
  • OLAP(OnLine Analytical Processing)
  • 처리데이터 크기에 집중. 데이터 분석 혹은 모델 빌딩 등을 위한 데이터 저장
    • 보통 프로덕션 데이터베이스를 복사해서 데이터 웨어하우스에 저장

if) 프로덕션 데이터베이스만 존재한다면
원하는 데이터를 얻기 위해서 직접 프로덕션 DB에 쿼리 → 해당 관련 시스템(백엔드)의 과부하 발생

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

테이블 스키마, 데이블 레코드 총 2단계로 구성

  • 테이블 스키마 (구조)
    • 테이블은 레코드들로 구성 (행)
    • 레코드는 하나 이상의 필드(컬럼)로 구성 (열)
    • 필드(컬럼)는 이름과 타입, 속성(primary key)으로 구성

SQL

Structured Query Language

  • 관계형 데이터베이스에 있는 데이터를 질의하거나 조작해주는 언어
  • 모든 대용량 데이터 웨어하우스는 SQL 기반 : Redshift, Snowflake, BugQuery, Hive
  • 두 종류의 언어로 구성됨
    • DDL (Data Definition Language)
      • 테이블의 구조를 정의하는 언어
    • DML (Data Manipulation Language)
      • 테이블에서 원하는 레코드들을 읽어오는 질의 언어
      • 테이블에 레코드를 추가/삭제/갱신해주는데 사용하는 언어
  • 단점
    • 구조화된 데이터만을 다루는데 최적화가 되어있음
    • 관계형 데이터베이스마다 SQL 문법이 조금씩 상이

데이터 모델링

  • Star Schema
    • 데이터를 논리적 단위로 나눠 저장하고 필요시 조인
    • 스토리지의 낭비가 덜하고 업데이트가 쉬움
    • 속도 느림
  • Denomalized Schema
    • 모든 데이터를 한 곳에 저장
    • 속도 빠름
    • 스토리지 낭비됨
    • 데이터웨어하우스에 적합한 방식

데이터 웨어하우스

  • 회사에 필요한 모든 데이터 저장
  • SQL 기반의 관계형 데이터베이스
  • OLAP(OnLine Analytical Processing)
  • AWS의 Redshift(고정비용 옵션), Google Cloud의 Big Query, Snowflake(가변비용 옵션) 등이 대표적
  • 데이터웨어하우스는 고객이 아닌 내부 직원을 위한 데이터베이스 → 처리속도가 아닌 처리 데이터의 크기가 중요
  • ETL 혹은 데이터 파이프라인
    • 외부에 존재하는 데이터를 읽어다가 데이터 웨어하우스로 저장해주는 코드들이 필요해지는데 이를 ETL 혹은 데이터 파이프라인이라고 부름
  • 데이터 웨어하우스와 ETL => 데이터 인프라

데이터 인프라

ETL → 데이터 웨어하우스 구조

Cloud

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

  • No Provisioning : 사전준비가 필요하지 않음
  • Pay As You Go : 쓴 만큼만 돈 지불
  • 자원(ex.서버)을 필요한 만큼 (거의) 실시간으로 할당하여 사용한만큼만 지불 → 탄력적으로 필요한 만큼의 자원을 유지하는 것이 중요

장점

  • 초기 투자 비용이 크게 줄어듦
  • 리소스 준비를 위한 대기시간 대폭 감소
  • 노는 리소스 제거로 비용 감소
  • 클로벌 확장 용이
  • 소프트웨어 개발 시간 단축(SaaS 활용)

AWS

아마존의 클라우드 컴퓨팅 서비스 업체로, 가장 큰 클라우드 컴퓨팅 서비스 업체

EC2 (Elastic Compute Cloud)

  • AWS의 서버 호스팅 서비스
  • 다양한 종류의 서버 타입 제공
  • 다양한 구매 옵션 → On-Demand(쓴 만큼 지불), Reserved(1년이나 3년 약정), Spot Instance(남는 리소스 경매)

S3 (Simple Storage Service)

  • AWS의 스토리지 서비스
  • S3에서는 디렉토리를 버킷(bucket)이라 부름
  • 버킷 및 파일 별도로 엑세스 권한 부여 가능
  • 가격 저렴

기타 서비스

Database Services

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

AI&ML Services

  • SageMaker
    • Deep Learning and Machince Learning end-to-end framework
  • Lex
    • Conversational Intergace(Chatbot service)
  • Polly
    • Text to Speech Engine
  • Rekognition
    • Image Recognition Service
  • Amazon Alexa
  • Lambda
    • 서비스 구현을 위해서 EC2를 런치할 필요 없음
    • Google Cloud에는 Cloud Function이란 이름으로 존재

Redshift

  • Scalable SQL 엔진
  • 2PB까지 지원
  • still OLAP → 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용불가
  • Columnar storage
    • 컬럼별 압축 가능, 컬럼을 추가하거나 삭제하는 것이 빠름
  • 벌크 업데이트 지원 → 레코드가 들어있는 파일을 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사
  • 고정 용량 & 고정 비용
  • 다른 데이터 웨어하우스처럼 primary key uniqueness 보장 X (프로덕션 데이터베이스들은 보장함)
  • Postgresql 8.x와 SQL 호환
  • SQL이 메인 언어

0개의 댓글