데이터베이스
데이터의 집합 그 잡채
DBMS
데이터 베이스를 매니지먼트해주는 시스템 (데이터 베이스의 구조에 관련된 정의, 조작, 제어 수행)
1. 정의 = create, alter, drop, truncate, rename (DBA의 영역)
2. 조작 = select, insert, update(+커밋), delete(+롤백)(CRUD) (* 개발자의 영역!)
3. 제어 = grant, revoke (권한과 관련된 운영자의 영역)
| 데이터 조작어 (DML : Data Manipulation Language |
SELECT | 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함 |
| INSERT UPDATE DELETE |
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함. | |
| 데이터 정의어 (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME TRUNCATE |
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함. |
| 데이터 제어어 (DCL : Data Control Language) |
GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함. |
| 트랜잭션 제어어 (TCL : Transaction Control Language) |
COMMIT ROLLBACK SAVEPOINT |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함. |
DBMS의 '조작'에 해당하는 일련의 과정은 '트랜잭션'으로 묶어서 설명할 수 있다.
[트랜잭션의 정의]
- 데이터 베이스의 무결성이 보장되는 상태에서 요청된 작업을 완수하기 위한 작업의 기본 단위
- 쪼갤 수 없는 업무 처리의 최소 단위 (ex. 거래내역)
[트랜잭션의 상태]

[트랜잭션의 목적]
1. 데이터 부정합 방지
- 응용 프로그램이 갱신을 처리하는 과정에서 중단될 가능성이 있는 경우
- 데이터베이스 서버에 여러개의 클라이언트가 동시에 액세스하는 경우
2. 데이터베이스의 완전성(integerity) 유지
- 트랜잭션은 서로 간섭하면 안됨
ex) 쿼리 하나 실패 -> 데이터베이스 시스템이 전체 트랜잭션 또는 실패한 쿼리 롤백
- 데이터베이스가 수행한 일부 쿼리가 잔류하면 안됨
ex) 송금시 한 계좌에서 인출 -> 다른 계좌에서 입금 확인
3. 거래의 안정성 확보
- 테이블에서 데이터를 읽어옴
다른 테이블에 데이터 입력/갱신/삭제 도중 오류발생 시 모든 작업 원상태로 되돌림
- 처리 과정이 모두 성공했을 때만 최종적으로 데이터 베이스에 반영
4. 원자성(Atomicity) = All or Nothing
- 트랜잭션 연산은 데이터에 모두 반영되든지 아니면 전혀 반영되지 않던지 둘중 하나.
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행돼야 하며, 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
5. 일관성(Consistency)
- 트랜잭션이 실행을 성공적으로 수행시 언제나 일관성있는 데이터베이스 상태로 변환됨
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함
6. 독립성, 격리성 (Isolation)
- 둘 이상의 트랜잭션이 동시에 실행되는 경우, 어느 하나의 트랜잭션 실행 중 다른 트랜잭션의 연산이 끼어들 수 없음
- 수행중인 트랜잭션은 완료될때 까지 다른 트랜잭션에서의 수행결과를 참조할 수 없음
+ 기본 개념은 위와 같으나, '트랜잭션 격리 수준'에 따라 다른 트랜잭션이 변경한 데이터를 볼 수 있는 정도가 달라진다.
7. 영구성 (Durability)
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함.
--------------------------참고자료------------------------
https://velog.io/@yu-jin-song/DB-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction
[DB] 트랜잭션(Transaction)
정보의 교환이나 데이터베이스 갱신 등 연관되는 작업들에 대한 일련의 연산데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위💡 데이터베이스의 상태 변화
velog.io
https://brownbears.tistory.com/180
[DB] DDL, DML, DCL 이란?
명령어 종류 명령어 설명 데이터 조작어(DML : Data Manipulation LanguageSELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함INSERTUPDATEDELETE 데
brownbears.tistory.com
'개발' 카테고리의 다른 글
| Spring boot의 Stomp-websocket으로 구성한 채팅 기능 (0) | 2023.05.08 |
|---|---|
| Git과 Github의 차이점 (0) | 2023.02.24 |
| 자바스크립트 & 노드 JS 작동 원리 (이벤트 루프,WENB API, 콜스택, HEAP 이해하기) (0) | 2022.11.20 |
| AoP(관점지향적프로그래밍)에 대하여 (0) | 2022.11.17 |