HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/데이터베이스(Database)/
Database
Database
/
🚡
개요
개요
🚡

개요

관계형 데이터베이스단점스키마Star schemaDenormalized schemaDDLCREATE TABLEDROP TABLEALTER TABLEDMLSELECT관계형 데이터베이스의 구조프로덕션 관계형 데이터베이스(RDBMS)데이터 웨어하우스데이터 순환 구조비관계형 데이터베이스백엔드시스템 구성도2 tier3-tier

관계형 데이터베이스

  • 관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL
    • 테이블 정의를 위한 DDL (Data Definition Language)
      • 앞서 보여준 테이블의 포맷을 정의해주는 언어
    • 테이블 데이터 조작/질의를 위한 DML (Data Manipulation Language)
      • DDL로 정의된 테이블에 레코드를 추가, 수정, 삭제 혹은 읽어 들이기 위해 사용하는 언어

단점

  • 이미지, 비디오, 텍스트 데이터와 같은 비구조화된 데이터는 관계형 데이터베이스를 사용하기에는 제약이 있음
  • 플랫한 구조만 지원함(no nested like JSON)
    • 구글 빅쿼리는 nested structure를 지원함
  • 비구조화된 데이터를 다루는데 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐
    • SQL 만으로는 비 구조화 데이터를 처리하지 못함

스키마

Star schema

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

Denormalized schema

  • NoSQL이나 데이터 웨어하우스에서 사용하는 방식
    • 단위 테이블로 나눠 저장하지 않음으로 별도의 조인이 필요 없는 형태를 말함
  • 이는 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능함
  • 스토리지 낭비가 심해지고, 바꾸려고 하면 일일이 다 바꾸어 줘야 함
하나의 테이블에 모든 내용 다 넣음
하나의 테이블에 모든 내용 다 넣음

DDL

CREATE TABLE

  • Primary key 속성을 지정할 수 있음(Primary key uniqueness : 유일키 보장)
  • 성능 향상을 위해 인덱스를 지정할 수 있음
notion image
  • 데이터베이스나, 스키마를 raw_data. 으로 명시해서 테이블 생성도 가능함

DROP TABLE

DROP TABLE table_name; DROP TABLE IF EXISTS table_name; -- DELETE FROM 은 테이블을 없애지 않고 조건에 맞는 레코드를 지우는 명령임

ALTER TABLE

  • 새로운 컬럼 추가 - ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입;
  • 기존 컬럼 이름 변경 - ALTER TABLE 테이블이름 RENAME 현재필드이름 to 새필드이름
  • 기존 컬럼 제거 - ALTER TABLE 테이블이름 DROP COLUMN 필드이름;
  • 테이블 이름 변경 - ALTER TABLE 현재테이블이름 RENAME TO 새테이블이름;

DML

SELECT

  • WHERE를 사용해서 레코드 선택 조건을 지정
  • GROUP BY를 통해 정보를 그룹 레벨에서 뽑는데 사용하기도 함
  • ORDER BY를 사용해서 레코드 순서를 결정하기도 함
  • INSERT INTO
  • UPDATE FROM
  • DELETE FROM vs TRUNCATE
    • TRUNCATE는 조건 제시 못하고 모든 레코드를 삭제

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

  • 2단계로 구성됨
    • 테이블들은 데이터베이스(혹은 스키마)라는 폴더 밑으로 구성
    • 가장 밑 단에는 테이블들이 존재

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

  • 데이터를 구조화된 테이블들의 집합으로 구성하여 저장하고 관리
  • 빠른 처리 속도가 중요함(웹 서비스나 앱이 속도가 느려질 때 보통 관계형 데이터베이스와 관계가 있을 가능성이 높음) vs. 데이터 웨어하우스 관계형 데이터베이스(얼마나 큰 데이터를 처리할 수 있느냐에 초점 - 구글 클라우드에 빅쿼리, SnowFlake, aws RedShift, Spark)

데이터 웨어하우스

  • 회사 내부 직원들을 위한 데이터베이스
  • 회사 관련 데이터를 저장하고 분석함으로써 의사결정과 서비스 최적화에 사용
    • BigQuery, Snowflake, Redshift, Hive, ...
  • 처리속도 보다는 구조화된 큰 데이터를 처리하는 것이 중요. 데이터 분석 혹은 모델 빌딩들을 위한 데이터 저장(보통 프로덕션 데이터베이스의 복사본을 데이터 웨어하우스에 저장)
  • 데이터 직군이라면 반드시 알아야 함. Data-driven decision 등을 할 때 이용
    • 데이터 엔지니어, 데이터 분석가, 데이터 과학자

데이터 순환 구조

notion image
  • 서비스에 가까운건 프로덕션 관계형 데이터베이스
  • 데이터 엔지니어링 팀(1)은 서비스에서 얻은 데이터들을 데이터 웨어하우스로 추출해 오는 것, 데이터 웨어하우스를 관리함
  • 데이터 분석가가 하는 일이 2번. 데이터 웨어 하우스에 저장된 데이터를 기반으로 회사에 중요한 지표를 시각화 함으로써 인사이트를 발굴 하는 것. 회사의 도메인에 대해 잘 알고 있어야 함
  • 데이터 과학자 - ML, AI를 통해 사용자 경험 개선. 수집된 과거 데이터를 기반으로 미래를 예측하는 모델링 혹은 개인화 작업으로 서비스의 만족도를 높이고 프로세스의 최적화를 수행

비관계형 데이터베이스

  • 데이터가 깔끔하게 구조화되지 않은 비 구조화 데이터를 다루는 데 적합함
  • 프로덕션용 관계형 데이터베이스를 보완하기 위한 용도로 많이 사용됨
  • 크게 2종류가 존재
    • Key/Value Storage : Redis, Memcache, ...
    • Document Store : MongoDB,
    • Wide Column Storage : Cassandra, HBase, DynamoDB
    • Search Engine: ElasticSearch

백엔드시스템 구성도

2 tier

notion image
  • 클라이언트와 서버 두 개의 티어로 구성
    • 클라이언트는 사용자가 사용하는 UI가 됨(front-end)
      • 비즈니스 로직은 보통 클라이언트에 위치
    • 서버단이 데이터베이스가 됨(back-end)
  • 2tier는 프론트엔드가 db를 바로 조작

3-tier

  • 웹 서비스에서 많이 사용되는 아키텍처
  • 로직을 백엔드 쪽으로 옮기게 됨
  • 프리젠테이션 티어 : 프런트엔드
  • 애플리케이션 티어 : 백엔드
  • 데이터 티어(Data Tier) : 백엔드
notion image