공부한 것 꼭꼭 씹어먹기

데이터베이스 필수 개념 트랜잭션과 ACID 본문

데이터 분석

데이터베이스 필수 개념 트랜잭션과 ACID

젤라솜 2022. 11. 6. 16:26
반응형

 

트랜잭션

 

데이터 베이스에 대해 배울때 필수로 배우는 개념이 있습니다. 바로 '트랜잭션(Transaction)'이라는 용어인데요. 데이터 베이스가 수행하는 여러개의 작업(여러개의 쿼리)를 하나로 묶은 실행 단위라고 정의할 수 있습니다. 데이터베이스에서 트랜잭션은 하나의 작업 단위가 되어 같이 묶인 모든 작업이 모두 완료가 되어야 해당 트랜잭션도 완료되었다고 할 수 있습니다. 즉, 트랜잭션에 묶인 모든 작업이 모두 실패 혹은 모두 성공이 되어야 합니다.

 

 

 

ACID

 

데이터 베이스에 대해 배울때 필수로 배우는 또 다른 개념이 있습니다. ACID라고 불리는 데이터 베이스의 설계 원리인데요. A는 Atomicity 원자성, C는 Consistency 일관성, I는 Isolation 고립성 그리고 D는 Durability 지속성을 뜻합니다. 이는 곧 트랜잭션의 관리 스타일이라고 할 수 있습니다. 데이터를 잠금으로써 데이터의 일관성과 안정성을 유지할 수 있지요. 관계형 데이터 베이스에서 데이터를 처리할 때 발생할 수 있는 예외사항을 줄임으로써 데이터의 무결성을 보호할 수 있게 됩니다. 원자성(Atomicity)은 흔히 은행 송금 예시를 들어 설명을 많이 합니다. 모든 작업이 성공 아니면 실패입니다. 실행이 완료되다가 중단된 작업의 상태는 있을 수 없습니다. 우리가 친구에게 돈을 송금할 때 중간에 갑자기 네트워크 장애가 발생한다면 트랜잭션이 롤백됩니다. 예를 들어, 나의 계좌에 십만원이 있고 친구 계좌에는 0원이 있습니다. 어플리케이션을 켜고 친구에게 만원 송금하기를 클릭하면 내 계좌에는 9만원이 찍혀 보입니다. 그런데 이 송금이 완료되기 전에 오류가 발생할 경우 내 계좌에서 마이너스 만원, 친구 계좌에 플러스 천원이라는 두개의 데이터 업데이트는 모두 실행되지 않습니다. 즉, 부분적인 성공은 있을 수 없기 때문에 9만원으로 보였던 내 계좌는 다시 십만원으로 복구가 됩니다. 일관성(Consistency)은 말 그대로 데이터의 일정한 상태를 유지하는 성질을 말합니다. 데이터 베이스의 스키마 조건에 부합하는 데이터만 기록이 가능하게 하는 것을 말하지요. 그렇기 때문에 일관된 상태의 데이터 베이스는 트랜잭션 성공 후에도 일관적인 상태를 유지할 수 있게 됩니다. 예를 들어, float 타입의 컬럼을 가진 테이블이 있다고 해보겠습니다. 그런데 사용자가 이 컬럼에 문자열을 insert하려고 하면 어떻게 될까요. 너무나 당연하게도 데이터베이스가 이에 대한 유효성 검사를 적용하여 float타입이 아닌 값에 대한 제한 조건을 만족하지 않는다고 인식하여 데이터를 입력할 수 없게 됩니다. 이러한 작용을 통해 데이터는 지정한 타입의 값만 기록할 수 있는 일관성을 가질 수 있게 됩니다. 고립성(Isolation)은 무엇일까요. 이는 트랜잭션이 완료될 때까지 다른 작업이 불가하도록 잠금을 걸어놓는 것을 말합니다. 한 트랜잭션은 다른 트랜잭션으로 부터 독립적이어야 한다는 개념인데요. 예를 들어, 한 사용자가 데이터 두 개를 insert하려고 합니다. 데이터베이스가 첫 번째 데이터 업데이트에 성공합니다. 그런데 이 때, 다른 사용자가 같은 데이터 업데이트를 시도하는 경우가 있습니다. 아직 첫번째 사용자가 입력한 두번째 데이터 업데이트가 완료되기 전이지요. 이럴 경우 데이터 베이스는 첫번째 사용자가 시도한 모든 업데이트가 끝날 때까지 두번째 사용자의 업데이트를 허용하지 않습니다. 첫번째 트랜잭션이 끝날 때까지 다른 작업이 불가하도록 잠가놓기 때문입니다. 이렇게 여러 작업의 독립성을 보장함으로써 데이터를 무결하게 만들기 위한 성질을 고립성이라고 합니다. 지속성(Durability)은 데이터베이스가 작업의 결과를 지속하는 것을 말합니다. 만약 시스템 장애나 정전 등의 사고가 발생해도 데이터는 최종적으로 업데이트된 데이터를 영구적으로 지속하여 제공할 수 있게 됩니다. 트랜잭션이 성공적으로 수행되었다면 그 트랜잭션의 로그가 남아있어야 합니다. 

반응형
Comments