최악의 DB를 만들기 위한 규칙
트렌젝션
클리어언트 요청을 서버에서 처리(상호작용) 하는 독립적 (단위적) 결과.
트렌젝션 특징
Non-Atomicity
트렌젝션-원자성-실패 상황-부분만-실행-데이터-불교칙 불완전함
트렌젝션(데이터 제어) 관련 작업은 부분적으로 실행되다가 중단 될 수 있어
데이터는 불규칙하고 불완전 형태로도 저장이 가능하다.
Non-Consistency
트렌젝션-특징-일관성-실패 상황-데이터-불일치-다른 출력값
트렌젝션(데이터 제어) 실행에 성공해도 데이터는 일관되지 않고 조회할 때 매번 다른 값이 출력될 수 있다.
Dependency
트렌젝션-특징-격리성-실패 상황-다른 트렌젝션에서 작업에 끼어듬
트렌젝션 수행 시 다른 트렉젝션 연산 작업도 끼어들 수 있다. 트렌젝션끼리 영향을 준다
Non-Durability
트렌젝션-특징-영구성-실패 상황-서버를 껏다 키면 초기화됨
수행된 트렌젝션이 서버를 껏다 키면 초기화된다.
병행유지 (Concurrency Keeping) 기법 사용
- 트렌젝션이 어떤 데이터에 접근하려할 때 로킹하지 않고 다른 트렌젝션이 전부 접근할 수 있게함
2 단계 로킹 규약 파기
- lock, unlock이 동시에 이뤄지게끔 각 단계를 구분하지 않기
타임스탬프 역행
- 데이터에 접근하는 시간을 랜덤으로 하고 시간의 순선ㄴ 랜덤하게
데이터 접근
무식한+ 병행제어
트렌젝션 수행 동안엔 검사를 하지 않고 트렌젝션 종류 후에도
데이터에 대한 검사를 하지 않기
지연갱신 회복불가 기법
- 트렌젝션 부분 완료 상태에서 변경 내용은 절대 저장하거나 기록하지 않함
즉시갱신 회복불가 기법
- 트렌젝션 수행 도중 변경 내용도 DB에 기록하지 않음.
장애 발생시 날라감.
검사점 회복불가 기법
- 장애 발생시 검사점(checkpoint) 에대한 기록 없고 회복 진행도 하지 않음.
undo, redo는 전부 불가
참고
https://jordy-torvalds.tistory.com/121