⭐ 관계형 데이터베이스
1. 관계형 데이터베이스란?
구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
- 액셀 스프레드시트 형태의 테이블로 데이터를 정의하고 저장
- 관계형 데이터베이스를 조작하는 프로그래밍 언어가 SQL
2. 대표적 관계형 데이터베이스
프로덕션 데이터베이스
- MySQL, PostgreSQL, Oracle, ...
- OLTP (OnLine Transaction Processing)
- 빠른 속도에 집중. 서비스에 필요한 정보 저장
데이터 웨어하우스
- Redshift, Snowflake, BigQuery, Hive, ...
- OLAP (OnLine Analytical Processing)
- 처리 데이터 크기에 집중. 데이터 분석 or 모델 빌딩 등을 위한 데이터 저장
- 보통 프로덕션 데이터베이스를 복사 -> 데이터 웨어하우스에 저장
3. 관계형 데이터베이스의 구조
- 가장 밑단에는
테이블들이 존재 (ex. 액셀의 sheet)
- 데이터베이스(or
스키마)라는 폴더 밑에 테이블들이 구성 (ex. 액셀 파일)
테이블의 구조 (테이블 스키마)
- 테이블은 레코드들로 구성 (
행)
- 레코드는 하나 이상의 필드(컬럼)로 구성 (
열)
- 필드(컬럼)는 이름과 타입과 속성(
primary key)으로 구성
⭐ SQL
1. SQL이란?
Structured Query Language
관계형 데이터베이스에 있는 데이터(테이블)를 질의하거나 조작해주는 언어
2. SQL의 단점
- 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심함
- 많은 관계형 데이터베이스들이 플랫한 구조만 지원함
- 비구조화된 데이터를 처리하지 못함
- 관계형 데이터베이스마다 SQL 문법이 조금씩 상이
3. 데이터 모델링 방법
Star Schema
Production DB용 관계형 데이터베이스에서는 보통 스타 스키마를 사용해 데이터 저장
- 데이터를 논리적 단위로 나눠 저장하고 필요시 조인
- 스토리지의 낭비가 덜하고 업데이트가 쉬움
Denormalized Schema
데이터 웨어하우스에서 사용하는 방식
- 별도의 조인이 필요없어 빠른 계산이 가능
- 스토리지 공간을 많이 차지하는 문제