CH5. DATABASE
Section1. 개요
데이터베이스 : 구조화된 데이터를 저장하고 관리하는 시스템, 데이터를 테이블로 구조화하고 효율적으로 관리
저장되는 데이터 특징 : 공용 데이터, 저장된 데이터, 통합된 데이터, 운영 데이터
DB 기능적 특징 : 실시간 접근성, 지속적인 변화, 동시 공용, 내용 참조Section2. DBMS 종류
DBMS : 데이터베이스 관리 시스템
계층형(Hierarchical) DBMS : 데이터가 계층 구조를 이루며, DB 최상위 계층의 데이터부터 검색하는 트리 구조, 데이터 접근 속도가 빠르지만, 초기 세팅 후 변화가 어려움
망형(Network) DBMS : 계층 구조를 극복하기 위해 데이터 구조를 네트워크상의 노드 형태로 표현한 데이터 모델, 각 노드가 대등한 관계
관계형(Relational) DBMS : 데이터를 테이블 형태로 구성, 각 테이블간의 상관관계를 정의
NO SQL : 고정된 스키마가 없거나 유연한 스키마 구조, 수평적 확장과 스키마 변경이 용이하며, 대규모 데이터 처리, 분산 환경에 유리. 단점은 데이터 일관성과 무결성 보장 XSection3-1. 상용 RDBMS 비교
오라클
1. 비싸고 수평 및 수직확장 가능
2. 모든 운영체제 호환
SQL Server
1. 오라클보다 저렴하지만 수직 확장만 가능
2. 윈도우 환경에 최적화Section3-2. 오픈소스 RDBMS 비교
MySQL
1. 관계형 DBMS
2. 기능이 제한적이며 데이터는 JSON 형식 사용
3. 일부 엔진만 ACID 원칙 준수
4. 트리 구조로 인덱싱 지원하여 읽기 작업에 유리
PostgreSQL
1. 객체 관계형 DBMS
2. 고급 기능을 여러 언어로 지원하며 XML 및 모든 MySQL 데이터 형식 지원
3. 전부 ACID 원칙 준수
4. 트리 외에도 해시 인덱싱 지원하여 쓰기 작업에 유리Section3-3. NoSQL RDBMS 비교
Mongo DB
1. Document 타입 DB
2. JSON 지원
3. 고가용성, 자동 샤딩, 유연한 스키마 설계
Redis
1. Key-Value 타입 DB
2. 문자열, 해시, Set 지원
3. 인메모리 DB, 속도 매우 빠름, Pub/Sub 메시징, 트랜잭션Section4. 데이터 모델링
데이터 모델링 : 데이터를 구조화하여 논리적으로 설계하는 과정으로, 데이터의 관계, 속성, 흐름을 시각적으로 표현하는 작업
장점 : 개발 오류 감소, DB설계 효율성 증가, 시스템 일관성 유지, 커뮤니케이션 효율성
개념적 데이터 모델 : DB 설계중 가장 먼저 개체관계 다이어그램(ERD)로 데이터의 주요 개념과 관계를 정의하는 모델
논리적 데이터 모델 : 개념적 데이터 모델을 기반으로 DB를 실제 구현할 때 사용되는 구체적 데이터 구조. 따라서 DBMS에 종속적
물리적 데이터 모델 : 논리적 데이터 모델을 구체적인 DBMS로 변환한 모델Section5. SQL 소개
SQL : 관계형DB에서 데이터를 관리하고 조작하기 위해 사용되는 표준 언어
DML(데이터 조작어) : 데이터 관련 select, insert ...
DDL(데이터 정의어) : 데이터 구조 관련 create, alter ...
DCL(데이터 제어어) : DB 권한 관련 grant, revoke ...
TCL(트랜잭션 제어어) : 논리적 작업 단위 관련 commit, rollback...
SQL 실행 순서
1. FROM 테이블명
2. WHERE 조건식
3. GROUP BY 컬럼/표현식
4. HAVING 그룹조건식
5. SELECT 컬럼명
6. ORDER BY 컬럼/표현식
JOIN : 두개 이상의 테이블을 연결하여 데이터 결합
Inner Join : 두 테이블간 일치하는 행만 선택
Left/Right Outer Join : 왼쪽/오른쪽 테이블의 모든 행 선택, 반대쪽 테이블과 일치하는 행만 선택
Full Outer Join : 양쪽 모든 행 선택 후, 반대쪽에 없는 값은 NULL로 표현
INDEX : DB에서 검색 속도 향상을 위해 사용하는 데이터 구조, 검색이 잦은 특정 컬럼으로 정렬한 데이터 집합
INDEX 장단점 : 검색 속도가 빨라지지만, 추가적인 저장 공간 필요 및 데이터 삽입/수정에 오버헤드 발생Section6. 데이터베이스 백업
전체 백업 : 단순하지만 사이즈가 크고 오래걸림
차등 백업 : 마지막 전체 백업 이후 변경사항들만 백업
증분 백업 : 아무거나 마지막 백업 이후 변경사항들 백업
RTO : 장애 후 복구되어 정상적으로 운영될 때까지 걸리는 최대 허용시간
RPO : 데이터 복구 시점과 사고 발생 시점 간의 최대 허용시간. EX) RPO가 30분이면, 장애 발생 시점으로부터 30분 이전까지의 데이터는 복구해야 함