데이터베이스란
데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합
데이터베이스에 저장될 수 있는 것들
- 학생 데이터
- 학과 데이터
- 결제 데이터
- 품목 데이터 ,,,,
- 저장해야 하는 대부분의 것들
데이터베이스란 웹 서비스의 심장과도 같다.
저장되는 대상/ 저장하는 방법에 따라 웹서비스의 목적과 성능이 달라진다
저장되는 방법 -> 데이터베이스 설계 및 모델링하는 방법
DBMS
Data Base Management System
데이터베이스를 관리하는 시스템
DBMS의 종류
- MySQL
- MongoDB
- Oracle
- SQL Server
- PostgreSQL
관계형 DBMS와 비관계형 DBMS로 나눌 수 있다
관계형 DBMS란
- 데이터를 테이블 형태(열 & 행)로 저장
- 즉, 데이터를 표와 같은 형태로 저장하는 DBMS
- 테이블끼리 참조, 합치기도 가능하다
관계형 DBMS를 다루기 위한 언어 -> SQL
SQL은 Structured Query Language
관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 조작하고 관리하기 위한 언어
ex)
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50)
);
SELECT first_name, last_name
FROM employees;
DELETE FROM orders
WHERE order_id =456;
SQL의 종류
DML: Data Manipulation Language
- SELECT, INSERT, UPDATE, DELETE
DDL: Data Definition Language
- CREATE, ALTER, DROP, RENAME, TRUNCATE
DCL: Data Control Language
- GRANT, REVOKE, TCL(COMMIT, ROLLBACK, SAVEPOINT)
cf) NoSQL
비관계형 데이터베이스
NoSQL은 먼저 구조를 정의할 필요없이 데이터를 저장 및 검색
확장성, 가용성이 장점(실시간 웹 어플리케이션 & 빅데이터)
ex) MongoDB
트랜잭션(Transaction)
- 데이터베이스 상호작용의 단위
- 논리적 작업 단위
ex) 돈을 계좌에서 인출하는 작업 / 학생을 테이블에서 삭제하는 작업
트랜잭션이 지켜야 할 성질
ACID
- A(원자성, Atomicity)
트랜잭션은 하나의 논리적인 작업 단위로 간주
모든 데이터 조작 작업은 성공하거나, 실패할 때까지 적용되지 않거나 롤백
계좌에서 인출하고 다른 계좌로 입금하는 트랜잭션에서 하나의 작업이 실패하면 다른 작업도 취소
- C(일관성, Consistency)
트랜잭션은 데이터베이스를 일관된 상태로 유지
트랜잭션이 시작하기 전과 끝난 후에도 데이터베이스는 일관된 규칙과 제약 조건을 따라야 한다
- I(격리성, Isolation)
동시에 여러 트랜잭션이 실행될 때 각 트랜잭션은 서로 간섭하지 않고 격리되어야 한다
한 트랜잭션의 작업이 다른 트랜잭션에게 영향을 미치지 않도록 보장
두 개의 트랜잭션이 동시에 계좌에서 돈을 인출하려 할 때, 한 트랜잭션이 완료되기 전에 다른 트랜잭션은 해당 계좌에 접근하지 못해야 한다
- D(지속성, Durablility)
트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장되어야 한다