RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
   웹페이지를 만들어 준 학교 담당자로부터 연락이 왔다. 학생은 분명 신청했다고 하는데, 관리자 페이지에서는 그 학생의 정보가 나오지 않는단다. 문제는 그런 사람들이 한 둘이 아니었다는 사실! DB를 뒤져보니- 무려 10%에 이르는 학생들이 일부 신청이 누락되어 있는 상태였다. 학교에서는 학생들이 민원 들어온다고 난리가 아니다.

  이쪽 웹페이지는 ASP로 만들어져 있고, 학생들이 신청할 때에 총 세 개의 테이블이 insert나 update 쿼리를 수행하고 있는데 이 중 하나가 실패하더라도 다른 쿼리들이 실행된 내용에 대하여 별다른 조치가 없어서 생긴 문제인 것 같다. 문제는 알겠는데 이걸 어떻게 처리해야 할 지 막막하여 회사분께 여쭈어보니 '트랜잭션' 이라는 어디에선가 들어봤음직한... 그러나 영 감이 안오는 단어를 꺼내신다.

  트랜잭션(Transaction).  영어로써의 트랜잭션은 '처리,처치,업무,거래' 등의 의미를 지닌다. 거래를 할 때에 돈을 주었는데 물건을 받지 못했다면 그 거래는 이루어지지 않고 원상태로 복구 되어야 한다. 이렇게 쪼갤 수 없는 - 만일 쪼개질 경우 시스템에 심각하나 오류를 초래할 수 있는 -  하나의 처리 행위를 원자적 행위(stomic action)이라고 하는데, 데이터베이스 상에서 이 기능을 제공하는 것이 바로 트랜잭션이다.  (위키백과)

  ● 롤백 (Roll Back)
   : 트랜잭션이 정상적으로 처리되지 않았을 경우, 트랜잭션이 시작되기 이전의 상태로 되돌린다.

  ● 커밋 (Commit)
   : 트랜잭션이 정상적으로 처리되었음을 확정한다. 이 때 트랜잭션의 처리과정이 모두 반영된다.

   한 페이지 안에서 DB에 변화를 가하는 insert나 update, delete등 두 개 이상의 쿼리문을 사용하고 있다면 트랜잭션을 걸어주는 것이 안전하단다.  

< 프로그래밍 언어별 트랜잭션>
    ① ASP 에서의 트랜잭션               (작성중)
    ② ASP.NET 에서의 트랜잭션       (링크)

  ASP에 트랜잭션을 적용한 그 바로 다음주에 이번엔 ASP.NET에서 역시 트랜잭션을 필요로 하는 경우가 생긴다. 정말 중요하긴 하구나 싶은 생각이 들더라. 비단 웹뿐이 아니라 어플리케이션에서도 데이터베이스를 제어하고 있다면 트랜잭션은 매우 중요한 것이다. 하지만 나는 아직 어플리케이션에서 이를 써본 적이 없다. (랄까 나에게 어플개발의 기회가 아직 안 온다... ) 앞으로 기회가 되면 언어별로 링크를 계속 추가해야 겠다.
2009/10/12 17:34 2009/10/12 17:34
http://deng-i.net/blog/dream/trackback/459
[로그인][오픈아이디란?]
보댕:하하하
댕이넷☆ (184)
브라보 마이 라이프! (97)
한 뼘 더 자라기 (41)
브랜드메이킹 (38)
공부하는 개발자 (7)