✏️ 트랜잭션
정의
데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위
all or nothing 으로 처리되어야 하는 논리적인 작업 단위
특성
1. Atomicity(원자성)
트랜잭션에 속한 작업들을 하나의 단위로 취급한다.
작업은 전부 수행되거나, 아무것도 수행하지 않거나 둘 중 하나이다.
2. Consistency(일관성)
작업의 중간이 다른 세션에서 보이면 안 된다.
트랜잭션이 테이블에 변경 사항을 적용할 때 미리 정의된 방식만 취한다.
3. Isolation(고립성)
여러 사용자가 같은 테이블에서 동시에 작업을 할 때 트랜잭션이 서로 영향을 주지 않는다.
작업 중간엔 락을 걸어서 다른 작업이 읽어가지 못하도록 한다.
4. Durability(영속성)
트랜잭션 실행으로 인해 데이터에 적용된 변경 사항이 저장되어야 한다.
오류가 발생해도 작업이 완료되면(commit 되면) 데이터가 사라지면 안 된다.
DBMS가 트랜잭션을 관리해준다.
계좌이체를 한다고 가정했을 때, a가 b에게 10000원을 송금한다면
트랜잭션 시작-----------------------------
a = a- 10000 UPDATE
b = b+10000 UPDATE
COMMIT
-----------------------------------------------
2개의 일을 하나의 트랜잭션으로 묶는다.
DBMS는 commit 되지 않은 일은 Rollback(트랜잭션 전체 취소) 한다.
✏️ DW와 OLTP의 차이
DW | OLTP |
1. 분석용 DB 2. 한 번에 많은 데이터를 읽어서 통계 내는 업무 처리 3. 실시간이 아닐 수 있음 4. 한 번에 대량의 데이터 조회 |
1. 트랜잭션 기반으로 하는 데이터 작업 2. 온라인 상에서 실시간으로 일어나는 업무 처리 3. 실시간 처리 4. 작은 데이터 중심(작은 데이터 갱신, 저장, 조회 등) |
✏️ SQL과 NoSQL의 차이
SQL DB(RDB) | NoSQL |
1. 트랜잭션 관리(데드락 모니터링, 락 걸기 등의 백그라운드 프로세스가 많아서 대량의 데이터를 처리하기엔 부담) 2. 금융 업무와 같은 전통적 업무 도메인에 맞는 DB 3. 일관성 유지, 정규화, 스키마 고정 4. 여러 테이블을 조인하므로 조회 속도가 느림 5. 수직적 확장(스토리지 용량 키우기. 한계가 있음) |
1. 많은 데이터 처리가 중요 2. 일관성 양보 가능한 업무에 사용(예를 들어 SNS, 게임, IoT) 3. 하나의 테이블에 거의 모든 데이터 담을 수 있으므로 정규화 하지 않음 4. 정규화를 하지 않으므로 조인이 필요 없는 경우가 많음 4. 수평적 확장(스토리지 개수 늘리기. 한계가 없음) |
'클라우드 스쿨' 카테고리의 다른 글
Jenkins (1) (0) | 2023.08.29 |
---|---|
HTML / CSS (0) | 2023.07.06 |
React (0) | 2023.06.12 |
React - ref 객체 alert으로 출력 (0) | 2023.06.11 |
CSS - 선택자 (0) | 2023.05.21 |