ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트랜잭션이란 무엇인가?
    CS지식/데이터베이스 2021. 6. 16. 22:11

    오늘은 트랜잭션에 대해 공부해보았다.

    트랜잭션... 처음 단어의 정의를 접했을 때에는 이해가 되지 않았다.

    그래서 데이터베이스에서의 트랜잭션의 뜻 말고 원래 트랜잭션이 영어단어로써 어떠한 뜻을 가지고 쓰이는지 찾아보았다.

    구글에 트랜잭션, transaction을 검색한 결과, 대부분의 상위 검색결과는 데이터베이스의 트랜잭션에 대한 내용 뿐이였고 구글번역 자체도 그냥 한국어로 트랜잭션이라고만 나왔다.

    스크롤링을 하다보니 트랜잭션을 설명하는 영영사전 사이트가 있어 들어가봤다.

    https://dictionary.cambridge.org/ko/%EC%82%AC%EC%A0%84/%EC%98%81%EC%96%B4/transaction

     

    transaction

    1. an occasion when someone buys or sells something, or when money is exchanged…

    dictionary.cambridge.org

    여기서 말하는 트랜잭션을 이해해보면 누군가가 무언가를 사거나 파는 경우 혹은 돈이 교환되는 경우, 무언가를 사거나 파는 행위를 의미한다. 즉, 경제적인 거래를 의미하는 것 같다.

    (an occasion when someone buys or sells something, or when money is exchanged or the activity of buying or selling something)

     

    그러면 왜 데이터베이스에서는 트랜잭션이라고 부르는 것일까?

    데이터베이스의 트랜잭션의 개념을 보면 데이터베이스 내에서 하나의 논리적 기능을 수행하기 위해 행해지는 한꺼번에 사용되는 하나 이상의 쿼리를 모아 놓은 쪼갤 수 없는 작업의 논리적인 단위이다.

    간단히 말하면 데이터베이스 조작을 하는 데 사용되는 하나이상의 쿼리로 된 복수 쿼리가 있는데 이 복수 쿼리가 둘 이상으로 쪼갤 수 없는 작업의 단위를 트랜잭션이라고 하는 것이다.

     

    트랜잭션의 원론적인 개념인 경제적인 거래를 보면 누군가는 돈을 받아 물건을 주고 누군가는 돈을 내고 물건을 받게 되는 것이 하나의 거래이다. 즉, 한 명이 돈을 내고 다른 한명이 물건을 주지 않으면 거래라는 말이 성립이 안되는 것이다.

    이러한 개념을 데이터베이스에 적용하여 트랜잭션이라는 말을 쓴 것이다.

    데이터베이스를 조작하기 위해 복수 쿼리를 사용하게 되고 복수 쿼리 중 하나라도 시행되지 않으면 조작은 이루어 지지 않기에 이 전체적인 모습을 트랜잭션이라고 부를 수 있는 것이다.

    이렇게 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고도 부른다.

     

     

    이러한 트랜잭션에는 4가지 특성이 존재한다.

    원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)으로 이들의 영단어의 앞 글자를 따서 ACID라고 부르기도 한다.

    그러면 지금부터 각 특성이 무엇을 의미하는지 알아보자.

     

    1) 원자성(Atomicity)

    원자성이란 트랜잭션 자체가 둘 이상으로 쪼개질 수 없는(분해가 불가능한) 최소의 단위로 하나의 원자처럼 동작한다는 의미이다.

    (쉽게 생각해서 화학시간에 배운 원자(산소, 수소, 질소)는 그 자체로써 쪼개질 수 없다는 것을 원자성에 맞추어 생각해보면 된다.)

    트랜잭션 작업이 시작되면 트랜잭션에서 수행해야하는 모든 일들이 반드시 전체가 정상적으로 수행이 완료되거나 어떠한 연산도 수행되지 않는 All or Nothing 방식이여야 한다.

    즉, 트랜잭션이 4가지의 일을 가지고 있다면 4가지 일을 모두 수행하여 트랜잭션을 완료하거나

    중간에 오류가 났다면 중간 상태를 저장하는 것이 아닌 트랜잭션이 실행되기 전 상태로 종료되어 트랜잭션의 어떠한 일도 수행되지 않아야한다는 것이다.

     

    2) 일관성(Consistency)

    일관성이란 트랜잭션 작업이 시작되기 전에 데이터베이스 상태가 일관된 상태였다면 트랜잭션 작업이 종료된 후에도 일관성 있는 데이터베이스 상태를 유지하는 것이다.

    여기서 말하는 일관된 상태라는 것은 무엇일까?

    일관된 상태는 도메인의 유효범위, 무결성 제약조건 등의 제약조건을 위배하지 않는 정상적인 상태이다.

     

    3) 고립성(Isolation)

    고립성이란 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 다른 트랜잭션에게 주거나 간섭을 받아서도 안되는 것을 말한다.

    즉, 다수의 트랜잭션이 동시에 진행되고 있는 상황이라면 트랜잭션이 완료되기 전 까지 실행 중인 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조할 수 없다는 것이다.

    이러한 트랜잭션의 고립성을 유지하기 위해서는 트랜잭션의 제어 모듈이나 DBMS의 무결성 제약조건이 동일한 데이터에 동시에 접근하고자 할 때 트랜잭션마다 우선순위를 부여하여 순차적으로 접근할 수 있도록 해주어야한다.

     

    4) 지속성(Durability)

    지속성이란 트랜잭션이 성공적으로 완료되어 결과가 데이터베이스 내에 반영됐으면 해당 결과는 영구적으로 데이터베이스에 저장되어야한다는 것이다.

    즉, 트랜잭션의 결과는 시스템 내에 장애가 발생하더라도 유지되어야한다는 것이 트랜잭션의 지속성이다. 

    댓글

Designed by Tistory.