트랜잭션 처리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이다. 1960년대에 IBM의 IMS와 같은 시스템에서 시작되어, 클라이언트-서버 시대를 거쳐 분산 시스템 및 클라우드 환경으로 발전했다. 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 통해 데이터의 정확성을 유지하며, 롤백, 롤포워드, 데드락 처리, 보상 트랜잭션 등의 기술을 활용한다. 현재는 X/Open DTP와 같은 업계 표준과 함께 CICS와 같은 비표준 시스템도 사용되고 있다.

트랜잭션 처리
📚 더 읽어볼만한 페이지
  • 장애 허용 컴퓨터 시스템 - 컴퓨터 클러스터
  • 장애 허용 컴퓨터 시스템 - OpenVMS
    OpenVMS는 DEC에서 개발한 멀티유저, 멀티프로세싱 가상 메모리 기반 운영 체제로, 고도의 안정성, 보안성, 확장성을 특징으로 하며 다양한 아키텍처, 클러스터링, 네트워킹, 프로그래밍 언어 및 개발 도구를 지원한다.
  • 데이터베이스 관리 시스템 - 저장 프로시저
    저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다.
  • 데이터베이스 관리 시스템 - 데이터베이스 트랜잭션
  • 데이터베이스 - 지식 베이스
    지식 베이스는 특정 주제 정보를 체계적으로 저장 및 관리하며 규칙 기반 추론으로 새로운 지식 도출에 활용되고, 웹 콘텐츠 관리 및 지식 관리 시스템으로 확장되어 온톨로지를 이용, 인공지능 기술과 결합하여 문제 해결책을 제시하고 경험을 통해 학습하는 시스템이다.
  • 데이터베이스 - 화이트리스트
    화이트리스트는 특정 대상만 허용하고 나머지는 차단하는 접근 제어 목록으로, 정보보안, 무역, 금융 등 다양한 분야에서 활용되지만, 목록 선정 기준의 불명확성, 사회적 문제점 등의 위험성으로 투명하고 엄격한 관리가 필요하다.

2. 역사

IBM의 IMS과 같은 표준 트랜잭션 처리 소프트웨어1960년대에 개발되었다. 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. (특히 인터넷을 통해) 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.

현대에는 분산 시스템과 클라우드 환경의 발전으로 트랜잭션 처리 시스템은 더욱 복잡하고 다양한 형태로 발전하고 있다. 특히, 웹 서비스의 확산으로 인해 트랜잭션 처리량은 기하급수적으로 증가했으며, 이에 따라 고성능, 고가용성을 보장하는 트랜잭션 처리 기술의 중요성이 더욱 커지고 있다.

2.1. 초기 시스템

IBM의 IMS과 같은 표준 트랜잭션 처리 소프트웨어는 1960년대에 개발되었다. 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. (특히 인터넷을 통해)) 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.

업계 표준으로는 X/Open DTP(X/Open Distributed Transaction Processing)가 중요하다. 하지만, IBMCICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.

2.2. 클라이언트-서버 시대

IBM의 IMS과 같은 표준 트랜잭션 처리 소프트웨어는 1960년대에 개발되었다. 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. 특히 인터넷을 통해 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.

업계 표준으로는 X/Open DTP(X/Open Distributed Transaction Processing)가 중요하다. 하지만, IBMCICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.

2.3. 현대의 분산 시스템

최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. 특히 인터넷()을 통한 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.

업계 표준으로는 X/Open DTP(X/Open Distributed Transaction Processing)가 중요하다. 하지만, IBMCICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.

3. 주요 특징 및 방법론

모든 트랜잭션 처리 시스템의 기본 원리는 동일하다. 그러나 용어는 트랜잭션 처리 시스템마다 다를 수 있으며, 아래에서 사용되는 용어가 반드시 보편적인 것은 아니다.

; ACID 속성
짐 그레이는 1970년대 후반에 신뢰할 수 있는 트랜잭션 시스템의 특성을 ACID(원자성, 일관성, 격리성, 지속성)라는 약어로 정의했다. 트랜잭션 처리 시스템은 데이터베이스의 일관성을 유지하기 위해 여러 방법을 사용하지만, 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 지원하는 것은 동일하다.

; 원자성(Atomicity)
트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.

; 일관성(Consistency)
일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.

; 격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.

; 지속성(Durability)
트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다.

; 롤백(Rollback)
트랜잭션 처리 시스템은 데이터베이스의 무결성을 보장하기 위해 데이터베이스 업데이트의 중간 상태를 기록하고, 트랜잭션이 커밋되지 못한 경우 데이터베이스를 알려진 상태로 복원하기 위해 그러한 기록을 활용한다. 예를 들어, 트랜잭션에 의한 업데이트 이전의 데이터베이스 정보의 사본을 미리 저장해 둔다(이것을 before image라고 부른다). 트랜잭션이 커밋되기 전에 실패한 경우, 그 사본을 사용하여 데이터베이스를 트랜잭션 시작 전 상태로 되돌린다. 이것을 “롤백”이라고 부른다.

; 롤포워드(Rollforward)
데이터베이스 관리 시스템은 데이터베이스 오류 발생 시 데이터베이스를 최신 상태로 복구하기 위해 별도의 로그(애프터 이미지)를 보관한다. 데이터베이스 관리 시스템이 완전히 실패하면 가장 최근의 백업에서 복원해야 한다. 백업은 백업 생성 이후 커밋된 트랜잭션을 반영하지 않지만, 데이터베이스 복원 후 애프터 이미지 로그를 데이터베이스에 적용하여(롤포워드) 데이터베이스 관리 시스템을 최신 상태로 만들 수 있다. 오류 발생 시 진행 중이던 트랜잭션은 롤백할 수 있으며, 결과적으로 오류 발생 시점까지 커밋된 모든 트랜잭션의 결과를 포함하는 일관되고 알려진 상태의 데이터베이스가 생성된다.

; 데드락(Deadlock)
두 개 이상의 트랜잭션이 처리 과정에서 동시에 데이터베이스의 같은 부분에 접근하려고 시도하여 진행을 막을 수 있다. 예를 들어 트랜잭션 A가 데이터베이스의 X 부분에, 트랜잭션 B가 Y 부분에 접근하고 있는 상황에서, 트랜잭션 A가 Y 부분에, 트랜잭션 B가 X 부분에 접근하려고 시도하면 데드락이 발생하여 어떤 트랜잭션도 진행할 수 없게 된다. 이러한 데드락은 트랜잭션 처리 시스템에 의해 감지되며, 일반적으로 두 트랜잭션 모두 취소, 롤백된 후 자동으로 다른 순서로 다시 시작되거나, 데드락된 트랜잭션 중 하나만 취소, 롤백된 후 짧은 시간 후에 자동으로 다시 시작되어 해결된다. 데드락은 세 개 이상의 트랜잭션에서도 발생할 수 있으며, 관련된 트랜잭션이 많을수록 감지하기 어려워진다.

; 보상 트랜잭션(Compensating Transaction)
커밋 및 롤백 메커니즘을 사용할 수 없거나 바람직하지 않은 시스템에서는, 실패한 트랜잭션을 취소하고 시스템을 이전 상태로 복원하기 위해 보상 트랜잭션을 자주 사용한다.

3.1. ACID 속성

짐 그레이는 1970년대 후반에 신뢰할 수 있는 트랜잭션 시스템의 특성을 ACID(원자성, 일관성, 격리성, 지속성)라는 약어로 정의했다. 트랜잭션 처리 시스템은 데이터베이스의 일관성을 유지하기 위해 여러 방법을 사용하지만, 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 지원하는 것은 동일하다.

; 원자성(Atomicity)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.

; 일관성(Consistency)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.

; 격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.

; 지속성(Durability)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다. 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)이라 불리는 기능을 지원한다.

3.1.1. 원자성(Atomicity)

짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.

3.1.2. 일관성(Consistency)

짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.

3.1.3. 격리성(Isolation)

여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.

3.1.4. 지속성(Durability)

짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다. 트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다. 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)이라 불리는 기능을 지원한다.

3.2. 롤백(Rollback)

트랜잭션 처리 시스템은 데이터베이스의 무결성을 보장하기 위해 데이터베이스 업데이트의 중간 상태를 기록하고, 트랜잭션이 커밋되지 못한 경우 데이터베이스를 알려진 상태로 복원하기 위해 그러한 기록을 활용한다. 예를 들어, 트랜잭션에 의한 업데이트 이전의 데이터베이스 정보의 사본을 미리 저장해 둔다(이것을 before image라고 부른다). 트랜잭션이 커밋되기 전에 실패한 경우, 그 사본을 사용하여 데이터베이스를 트랜잭션 시작 전 상태로 되돌린다. 이것을 “롤백”이라고 부른다.

3.3. 롤포워드(Rollforward)

데이터베이스 관리 시스템은 데이터베이스 오류 발생 시 데이터베이스를 최신 상태로 복구하기 위해 별도의 로그(애프터 이미지)를 보관한다. 데이터베이스 관리 시스템이 완전히 실패하면 가장 최근의 백업에서 복원해야 한다. 백업은 백업 생성 이후 커밋된 트랜잭션을 반영하지 않지만, 데이터베이스 복원 후 애프터 이미지 로그를 데이터베이스에 적용하여(롤포워드) 데이터베이스 관리 시스템을 최신 상태로 만들 수 있다. 오류 발생 시 진행 중이던 트랜잭션은 롤백할 수 있으며, 결과적으로 오류 발생 시점까지 커밋된 모든 트랜잭션의 결과를 포함하는 일관되고 알려진 상태의 데이터베이스가 생성된다.

3.4. 데드락(Deadlock)

두 개 이상의 트랜잭션이 처리 과정에서 동시에 데이터베이스의 같은 부분에 접근하려고 시도하여 진행을 막을 수 있다. 예를 들어 트랜잭션 A가 데이터베이스의 X 부분에, 트랜잭션 B가 Y 부분에 접근하고 있는 상황에서, 트랜잭션 A가 Y 부분에, 트랜잭션 B가 X 부분에 접근하려고 시도하면 데드락이 발생하여 어떤 트랜잭션도 진행할 수 없게 된다. 이러한 데드락은 트랜잭션 처리 시스템에 의해 감지되며, 일반적으로 두 트랜잭션 모두 취소, 롤백된 후 자동으로 다른 순서로 다시 시작되거나, 데드락된 트랜잭션 중 하나만 취소, 롤백된 후 짧은 시간 후에 자동으로 다시 시작되어 해결된다. 데드락은 세 개 이상의 트랜잭션에서도 발생할 수 있으며, 관련된 트랜잭션이 많을수록 감지하기 어려워진다.

3.5. 보상 트랜잭션(Compensating Transaction)

커밋 및 롤백 메커니즘을 사용할 수 없거나 바람직하지 않은 시스템에서는, 실패한 트랜잭션을 취소하고 시스템을 이전 상태로 복원하기 위해 보상 트랜잭션을 자주 사용한다.

4. 구현

IBM의 IMS과 같은 표준 트랜잭션 처리 소프트웨어1960년대에 개발되었다. 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. (특히 인터넷을 통해)) 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.

업계 표준으로는 X/Open 분산 트랜잭션 처리(DTP)가 중요하다. Java Transaction API (JTA)도 참고할 만하다. 그러나 IBM의 CICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.

극한 트랜잭션 처리(XTP)라는 용어는 특히 처리량 요구 사항(초당 트랜잭션)과 같이 특이하게 어려운 요구 사항을 가진 트랜잭션 처리 시스템을 설명하는 데 사용되었다. 이러한 시스템은 분산 또는 클러스터 스타일 아키텍처를 통해 구현될 수 있다.

5. 한국의 트랜잭션 처리 시스템

6. 관련 기술