[데브코스] 데이터베이스 기초
Updated: Categories: TILW2D1 - 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, MemcacheDocument Store
: MongoDBWide Column Storage
: DynamoDB, Cassandra, HBaseSearch Engine
: ElasticSearch
데이터 순환구조
- 사용자가 사용하는 기능에 필요한 데이터는 프로덕션 DB를 사용한다.
- 여기서 추가적으로 수집한 데이터는 추출 후 데이터 웨어하우스에 저장해 지표를 설정, 데이터시각화 등으로 사용자 패턴을 분석한다.
- 분석 결과를 통해 서비스를 개선할 수 있다.
시스템 구성
2 Tier
- 옛날 방식
- 프론트엔드 + 백엔드 두개로 이루어지는 구성
- 프론트엔드에 서비스 로직, 백엔드에 DB가 있음
3 Tier
- 웹 서비스에서 사용하는 아키텍처
- 프론트엔드 + 백엔드 + 데이터베이스로 구성
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)