[데브코스] 데이터베이스 기초

Updated: Categories:

W2D1 - Database의 필요성, 백엔드와 관계, SQL등에 대해 배워보자

Database

프로덕션 관계형 데이터베이스

  • OLTP (OnLine Transaction Processing)
  • 모바일/웹 앱에서 사용되는 데이터베이스
  • 서비스의 속도는 데이터 처리 속도와 연관되므로 빠른 처리 속도를 우선적으로 한다
  • MySQL, PostgresSQL 두 종류가 많이 사용됨

데이터 웨어하이스 관계형 데이터베이스

  • OLAP (OnLine Analytical Processing)
  • 빠른 처리속도보다는 규모가 큰 데이터의 저장을 중점으로 함
  • 데이터 엔지니어 같은 내부직원이 머신러닝 등에 사용하는 데이터베이스
  • MySQL, BigQuery, Spark, SnowFlake, Hive, RedShift 등

비관계형 데이터베이스 (NoSQL)

  • 프로덕션 DB를 보완하기 위한 용도로 사용
  • 데이터를 테이블 형태로 구조화하여 저장하지 않음
  • 4가지 종류가 있음
    • Key/Value : Redis, Memcache
    • Document Store : MongoDB
    • Wide Column Storage : DynamoDB, Cassandra, HBase
    • Search Engine : ElasticSearch

데이터 순환구조

  1. 사용자가 사용하는 기능에 필요한 데이터는 프로덕션 DB를 사용한다.
  2. 여기서 추가적으로 수집한 데이터는 추출 후 데이터 웨어하우스에 저장해 지표를 설정, 데이터시각화 등으로 사용자 패턴을 분석한다.
  3. 분석 결과를 통해 서비스를 개선할 수 있다.


시스템 구성

2 Tier

  • 옛날 방식
  • 프론트엔드 + 백엔드 두개로 이루어지는 구성
  • 프론트엔드에 서비스 로직, 백엔드에 DB가 있음

3 Tier

  • 웹 서비스에서 사용하는 아키텍처
  • 프론트엔드 + 백엔드 + 데이터베이스로 구성

image


SQL (Structured Qurery Language)

  • 구조화된 데이터를 다룰 때 규모 상관없이 널리 쓰인다!
  • 하지만 비구조화 데이터를 다룰 땐 정규표현식을 사용하나.. 제약이 심하다.
  • 주석
    • 한줄 : --
    • 여러줄 : /* */
  • 협업시 SQL 키워드의 포맷팅이 필요
    • 여기서도 카멜 vs 스네이크…
    • 단수형 vs 복수형

Star Schema

  • 데이터를 논리적 단위로 나눠(PK로) 저장, 필요할때마다 조인해서 사용
  • 스토리지 낭비는 적지만 실행속도가 저하될 수 있다
  • 정규화된 형태를 말하는듯?

Denormalized Schema

  • NoSQL, 관계 사용 X
  • 테이블 하나에 데이터 다 집어넣기
  • 스토리지 낭비 있지만 실행속도 빠름

DDL (Data Definaition Language)

  • 데이터 포맷을 정의하는 언어
  • CREATE, DROP, ALTER

DML (Data Manipulation Language)

  • 데이터의 CRUD를 수행하는 언어
  • SELECT, INSERT, UPDATE, DELETE(TRUNCATE)