Post

transaction(2)

들어가기에 앞서

저번 글에서, transaction(이하 txn) 및 두 가지 목표에 대해 간략하게 알아보았습니다.

recovery and durability

작업에 대해 잘 기록한 후, 문제가 생기면 처음 상태로 원상복구 한다는 의미입니다.

concurrency

관련 없는 자원에 대한 여러 요청은 동시에 수행하고
공유 자원에 대한 여러 요청에 대해 하나의 txn은 고립된 상태로 유지해서 일관성을 유지하도록 처리하겠다는 의미입니다.

transaction properties : ACID

transaction의 특성에 대해 알아보도록 하겠습니다. ACID라고 부르는데 이는 각각 Atomic, Consistent, Isolated, Durable입니다.

Atomic

모든 하나의 txn은 작은 단위로 보여야 합니다.
이는 txn 내부 statement들이 모두 반영되거나 반영되지 않아야 함을 의미합니다.

Consistent

일관되어야 함을 의미합니다.
예시로 정수형 데이터 타입 column에, 문자열 type이 들어오면 안됨을 의미합니다.
즉, 미리 정해둔 규칙에 한해 작업이 수행되어야 함을 의미합니다.
프로그래머는 정해둔 규칙에 한해 작업이 수행되도록 구현해야 합니다.

Isolated

하나의 txn에 대해, 다른 txn에 대해 어느 레벨(기준) 이상을 침해하면 안됨을 의미합니다. 이러한 Isolated 기준의 정도는 설정이 가능합니다. 즉, 완전 간섭x 모드가 있을 수도 있고, 읽기 정도에 대해선 간섭 ok 가능 모드가 있을 수 있다는 의미입니다.

Durability

txn이 끝나고 나면 쭉 지속이 되어야 합니다. 전원이 꺼져도, 프로그램이 종료되어도 말이죠.
한 번 commit되고 나면, 디스크에 저장해서 영구적으로 반영이 되어야 한다는 의미입니다.

ACID가 맞을까?

데이터 무결성을 유지하도록, 많은 논의가 있었습니다. 많은 db들은 ACID를 채택했지만, NoSql은 ACID를 완화해서 좀 유연하게 작동합니다. 하지만 이는 완전 무결을 보장하진 못하는 것이죠. 현재 ACID + NoSQL한 NewSQL이 생산되고 있다고 하네요.

ACID와 TXN의 목표

ACID에서 atomic, durability(A,D)는 txn의 recovery and durability와 연관이 있습니다.
isolation과 consistency(I,C) 는 txn의 concurreny와 연관이 있습니다.

image

마무리하며

다음 글에선, transaction sql에 대해 알아보도록 하겠습니다.

This post is licensed under CC BY 4.0 by the author.