SQL

데이터베이스

sailorCat 2022. 2. 20. 21:14
728x90

관계형 데이터 베이스

구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지

- 엑셀 스프레드 시트

테이블에는 Column 열, Record 행이 존재한다.

 

Production Database 

OLTP Online Transaction Processing

MySQL, PostgreSQL, Oracle

빠른 속도에 집중한다, 서비스에 필요한 정보를 저장한다

웹서비스나 앱에 바로 연결되어 사용된다.

 

 

Data Warehouse 

OLAP Online Analytical Processing

Redshift, Snowflake, BigQuery

처리 데이터 크기에 집중한다, 데이터 분석 혹은 모델 빌딩을 위해 데이터를 저장한다.

보통 프로덕션 데이터베이스를 복사하여 데이터 웨어하우스에 저장한다.

속도는 중요하지 않고 데이터 크기의 수용성이 더 중요하다.

 

 

SQL

- 데이터 정의 언어 (DDL:data definition language) : Create, Alter, Drop
- 데이터 조작 언어 (DML:data manipulation language) : Select, Insert, Delete, Update
- 데이터 제어 언어 (DCL:data control language) : Grant, Revoke, Commit, Rollback

 

데이터베이스의 특징

- 실시간 접근성
- 지속적인 변화
- 동시 공유
- 내용에 대한 참조
- 데이터 논리적 독립성

 

 

데이터베이스의 장단점

- 데이터베이스 장점
- 데이터 중복 최소화
- 데이터 공유
- 일관성, 무결성, 보안성 유지
- 최신의 데이터 유지
- 데이터의 표준화 가능
- 데이터의 논리적, 물리적 독립성
- 용이한 데이터 접근
- 데이터 저장 공간 절약

 

 

데이터베이스 단점

- 데이터베이스 전문가 필요
- 많은 비용 부담
- 데이터 백업과 복구가 어려움
- 시스템의 복잡함
- 대용량 디스크로 엑세스가 집중되면 과부하 발생

 

트랜잭션 Transaction

트랜잭션은 하나의 논리적 단위를 구성하는 데이터베이스 연산의 모임이다.

동시에 여러 트랜잭션이 수행되기 위해서 데이터베이스의 일관성이 보장되어야 한다.

동시성 제어 Concurrency Control와 회복 제어 Recovery Control를 위한 모듈이 있다.

이 둘을 합쳐 트랜잭션 관리 모듈 Transaction Management Module이라고 한다.

 

동시성 제어 모듈 Concurrency Control Module 

- 데이터 베이스를 일관적으로 유지하기 위해 동시에 수행되는 트랜잭션 사이에 상호작용 제어

회복 제어 모듈 Recovery Control Module

- 데이터 베이스를 일관적으로 유지하기 위해 업데이트를 하는 동안 시스템 인터럽트에도 데이터 베이스의 기존 상태를 유지한다.

 

트랜잭션 스케줄링

- 직렬 스케줄링 Serial Scheduling : 각각의 트랜잭션 별로 연산을 연속적으로 실행

- 비직렬 스케줄링 Nonserial Scheduling : 트랜잭션 연산들을 상호적으로 병행 실행

- 직렬 가능 스케줄링 Serializable Scheduling : 비직렬 스케줄링 S가 항상 직렬 스케줄링 SS에 대해서 같은 결과를 가질 때 "S를 직렬가능"하다고 한다

 

 

728x90