데이터베이스
기록장치 <- 모든 서비스는 데이터를 만들어내고 그것들을 저장해야한다. 그 기록장치를 데이터베이스라 부른다.
관계형 데이터베이스
데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.
데이터는 관계를 통해 여러 테이블에 분산된다.
1.프로덕션 관계형 데이터베이스(Relational database management system, RDBMS)
- 데이터를 관계로서, 테이블의 형식(행과 열)으로 표현한다.
- 빠른 처리속도가 중요하다.
- 다루는 프로그래밍 언어를 SQL이라 한다.
- 온라인 트랜잭션 처리(Online transaction processing, OLTP)
- 대표적으로 MySQL, PostgreSQL
- 데이터 웨어하우스 관계형 데이터베이스 (data warehouse)
- 온라인 분석 처리(Online Analytical Processing, OLAP)
- 처리 데이터의 크기가 중요하다.
- 한곳에서 데이터 처리 -> join을 안함
- 대표적으로 BigQuery, Snowflak함
장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
- 구조화된 데이터 다루는데 최적화
단점
- 수정하기 힘듬
- 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함(nested structure,no nested json)
- 반대로 비구조화 데이터를 다루는건 어려움
비관계형 데이터베이스
스키마도 없고, 관계도 없다
장점
- 스키마가 없어서 유연함.
- 데이터 읽어오는 속도 빨라짐
- 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함. 또한 수정시 모든 컬렉션에서 수행.
2티어->3티어 시스템 구성 변화
DDL, DML
1. DDL(Data Definition Language), 데이터정의어
- 데이터베이스(스키마)를 정의하는 언어
- CREATE, ALTER, DROP, RENAME 등
- DML(Data Manipulation Language), 데이터 조작어
- 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어
- SELECT, INSERT, UPDATE 등
대표적인 스키마 2가지
- Star Schema
- 데이터를 논리적 단위로 나누고 저장
- 스토리자 낭비가 적고 업데이트가 쉬움
- 조인을 자주해야함 -> 속도저하
- 주로 프로덕선 DB에 사용
- Denormalized Schema
- 주로 NoSQL, 데이터 웨어하우스
- 단위테이블로 나누지 않으므로 join이 필요없음 -> 빠른 계산 가능