데이터 무결성
데이터 무결성을 유지하기 위해 해결해야 할 문제들
➡️ 트랜잭션은 데이터 무결성을 지킴으로써 데이터베이스를 일관된 상태(consistent status)를 유지하기 위한 핵심 개념이다.
ACID : 트랜잭션의 특성
🔸 Atomicity : 트랜잭션안의 모든 operation이 실행되거나, 실패
중간에 있던 operation들이 성공하면 commit을 하고 commit을 하면 결과가 보여, 실패한게 있으면 rollback하여 원복됨
🔸 Consistency : 트랜잭션의 실행이 database의 무결성 유지
🔸 Isolation : 동시에 실행되는 트랜잭션은 모두 독립적인다.(또는 순차적으로 실행)
🔸 Durability : 성공적으로 수행된 Transaction은 영원히 반영되어야 함을 의미
장애나 리커버리를 해도 반영이 되어야함
Active에서 시작
데이터베이스의 consistenet status를 유지하기 위해 동시에 실행되는 트랜잭션들의 operation을 정하는 것을 말한다
Serial or Serializable schedules
정확한 결과를 만드는 두 스케쥴은 serial schedule
serializable schedule
위의 문제점을 보안하고자 serial schedule과 결과는 동일하지만 serializable하지 않는 스케쥴을 serializable schedule이라고 한다.(모든 operation을 serial하게 시행시키지 않는)
serializable을 계산하기 위한 두가지 개념
Conflicr Serializability
conflict Operations : 두 operation이 다음 조건을 만족할때 conflicting이라 할 수 있다.
S1
,S2
,S3
이 Conflicting
하고, S4
,S5
는 non-conflict
하다.View Serializability
View Equilvalent : 다음 조건들을 만족할 때 스케쥴 S1과 S3가 view equivalent하다고 한다.
1. 스케쥴 안의 트랜잭션들 중에 하나의 트랜잭션이 같은 초기값을 읽어야 한다.
2. 만약 S1에서 T1이 T2가 write한 값을 읽는 다면, S2에서도 T1이 T2가 write한 값을 읽어야 한다.
3. 마지막 write는 같은 transaction에서 이루어져야 한다.
View serializable
Recoverability
복구 가능한 스케쥴(Recoverable Schedule)
DB쪽 강의는 오늘 처음 듣는데, 말을 좀 횡설수설하시는 듯.. 말이 잘 이해가 안되서 같은말을 여러번 돌려봤다.
https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.