트랜잭션 처리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이다. 1960년대에 IBM의 IMS와 같은 시스템에서 시작되어, 클라이언트-서버 시대를 거쳐 분산 시스템 및 클라우드 환경으로 발전했다. 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 통해 데이터의 정확성을 유지하며, 롤백, 롤포워드, 데드락 처리, 보상 트랜잭션 등의 기술을 활용한다. 현재는 X/Open DTP와 같은 업계 표준과 함께 CICS와 같은 비표준 시스템도 사용되고 있다.
더 읽어볼만한 페이지
- 장애 허용 컴퓨터 시스템 - 컴퓨터 클러스터
컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다. - 장애 허용 컴퓨터 시스템 - OpenVMS
OpenVMS는 DEC에서 개발한 멀티유저, 멀티프로세싱 가상 메모리 기반 운영 체제로, 고도의 안정성, 보안성, 확장성을 특징으로 하며 다양한 아키텍처, 클러스터링, 네트워킹, 프로그래밍 언어 및 개발 도구를 지원한다. - 트랜잭션 처리 - 2단계 커밋 프로토콜
2단계 커밋 프로토콜은 분산 컴퓨팅 환경에서 트랜잭션의 원자성을 보장하는 분산 알고리즘으로, 조정자와 참가자로 구성되어 모든 참가자가 트랜잭션을 완료하거나 아무도 완료하지 못하도록 하며, 커밋 요청 및 커밋 단계를 거쳐 모든 참가자의 동의를 얻어야 커밋된다. - 트랜잭션 처리 - 온라인 트랜잭션 처리
온라인 트랜잭션 처리(OLTP)는 실시간 데이터베이스 트랜잭션 처리 방식으로, 가용성, 속도, 동시성, 내구성을 목표로 은행, 항공사, 전자 상거래 등에서 활용된다. - 데이터베이스 관리 시스템 - 저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다. - 데이터베이스 관리 시스템 - 데이터베이스 트랜잭션
데이터베이스 트랜잭션은 데이터베이스의 무결성을 보장하기 위해 ACID 속성을 만족하며 일련의 연산을 묶은 단위로서, 데이터베이스 내에서 여러 쿼리를 실행하고 금융 거래 등에서 중요한 역할을 한다.
트랜잭션 처리 |
---|
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)가 중요하다. 하지만, IBM의 CICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.
2. 2. 클라이언트-서버 시대
IBM의 IMS과 같은 표준 트랜잭션 처리 소프트웨어는 1960년대에 개발되었다. 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. 특히 인터넷을 통해 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.업계 표준으로는 X/Open DTP(X/Open Distributed Transaction Processing)가 중요하다. 하지만, IBM의 CICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.
2. 3. 현대의 분산 시스템
최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다. 특히 인터넷(웹)을 통한 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다. 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.업계 표준으로는 X/Open DTP(X/Open Distributed Transaction Processing)가 중요하다. 하지만, IBM의 CICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.
3. 주요 특징 및 방법론
모든 트랜잭션 처리 시스템의 기본 원리는 동일하다. 그러나 용어는 트랜잭션 처리 시스템마다 다를 수 있으며, 아래에서 사용되는 용어가 반드시 보편적인 것은 아니다.
; ACID 속성
짐 그레이는 1970년대 후반에 신뢰할 수 있는 트랜잭션 시스템의 특성을 ACID(원자성, 일관성, 격리성, 지속성)라는 약어로 정의했다.[1][5] 트랜잭션 처리 시스템은 데이터베이스의 일관성을 유지하기 위해 여러 방법을 사용하지만, 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 지원하는 것은 동일하다.
; 원자성(Atomicity)
트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.
; 일관성(Consistency)
일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.
; 격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.[5]
; 지속성(Durability)
트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다.
; 롤백(Rollback)
트랜잭션 처리 시스템은 데이터베이스의 무결성을 보장하기 위해 데이터베이스 업데이트의 중간 상태를 기록하고, 트랜잭션이 커밋되지 못한 경우 데이터베이스를 알려진 상태로 복원하기 위해 그러한 기록을 활용한다. 예를 들어, 트랜잭션에 의한 업데이트 이전의 데이터베이스 정보의 사본을 미리 저장해 둔다(이것을 before image라고 부른다). 트랜잭션이 커밋되기 전에 실패한 경우, 그 사본을 사용하여 데이터베이스를 트랜잭션 시작 전 상태로 되돌린다. 이것을 “롤백”이라고 부른다.
; 롤포워드(Rollforward)
데이터베이스 관리 시스템은 데이터베이스 오류 발생 시 데이터베이스를 최신 상태로 복구하기 위해 별도의 로그(애프터 이미지)를 보관한다. 데이터베이스 관리 시스템이 완전히 실패하면 가장 최근의 백업에서 복원해야 한다. 백업은 백업 생성 이후 커밋된 트랜잭션을 반영하지 않지만, 데이터베이스 복원 후 애프터 이미지 로그를 데이터베이스에 적용하여(롤포워드) 데이터베이스 관리 시스템을 최신 상태로 만들 수 있다. 오류 발생 시 진행 중이던 트랜잭션은 롤백할 수 있으며, 결과적으로 오류 발생 시점까지 커밋된 모든 트랜잭션의 결과를 포함하는 일관되고 알려진 상태의 데이터베이스가 생성된다.
; 데드락(Deadlock)
두 개 이상의 트랜잭션이 처리 과정에서 동시에 데이터베이스의 같은 부분에 접근하려고 시도하여 진행을 막을 수 있다. 예를 들어 트랜잭션 A가 데이터베이스의 X 부분에, 트랜잭션 B가 Y 부분에 접근하고 있는 상황에서, 트랜잭션 A가 Y 부분에, 트랜잭션 B가 X 부분에 접근하려고 시도하면 ''데드락''이 발생하여 어떤 트랜잭션도 진행할 수 없게 된다. 이러한 데드락은 트랜잭션 처리 시스템에 의해 감지되며, 일반적으로 두 트랜잭션 모두 취소, 롤백된 후 자동으로 다른 순서로 다시 시작되거나, 데드락된 트랜잭션 중 하나만 취소, 롤백된 후 짧은 시간 후에 자동으로 다시 시작되어 해결된다. 데드락은 세 개 이상의 트랜잭션에서도 발생할 수 있으며, 관련된 트랜잭션이 많을수록 감지하기 어려워진다.
; 보상 트랜잭션(Compensating Transaction)
커밋 및 롤백 메커니즘을 사용할 수 없거나 바람직하지 않은 시스템에서는, 실패한 트랜잭션을 취소하고 시스템을 이전 상태로 복원하기 위해 보상 트랜잭션을 자주 사용한다.
3. 1. ACID 속성
짐 그레이는 1970년대 후반에 신뢰할 수 있는 트랜잭션 시스템의 특성을 ACID(원자성, 일관성, 격리성, 지속성)라는 약어로 정의했다.[1] 트랜잭션 처리 시스템은 데이터베이스의 일관성을 유지하기 위해 여러 방법을 사용하지만, 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)을 지원하는 것은 동일하다.; 원자성(Atomicity)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.
; 일관성(Consistency)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.
; 격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.[5]
; 지속성(Durability)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다. 모든 트랜잭션 처리 시스템은 ACID 속성(원자성, 일관성, 격리성, 지속성)이라 불리는 기능을 지원한다.
3. 1. 1. 원자성(Atomicity)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 트랜잭션의 상태 변경은 원자적이다. 즉, 모든 변경이 적용되거나 전혀 적용되지 않는다. 이러한 변경에는 데이터베이스 변경, 메시지 및 변환기 작업이 포함된다.3. 1. 2. 일관성(Consistency)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 일관성에서 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변환해야 한다. 즉, 트랜잭션은 상태의 정확한 변환이며, 그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않는다. 따라서 트랜잭션 처리 전후에 데이터베이스의 무결성 제약 조건이 항상 만족되어야 한다.3. 1. 3. 격리성(Isolation)
여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되는 것처럼 보여야 한다. 이는 동시성 제어를 통해 구현되며, 트랜잭션 간의 간섭을 방지한다. 트랜잭션이 동시에 실행되더라도, 각 트랜잭션 T에 대해 다른 트랜잭션들은 T 이전 또는 T 이후에 실행된 것처럼 보이지만, 동시에 실행된 것처럼 보이지는 않는다.[5]3. 1. 4. 지속성(Durability)
짐 그레이는 1970년대 말에 신뢰할 수 있는 트랜잭션 시스템의 속성을 ACID(원자성, 일관성, 격리성, 지속성)라는 이름으로 정의했다.[5] 트랜잭션이 성공적으로 완료(커밋)되면, 데이터베이스에 대한 변경 사항은 시스템 장애에도 유지되고 변경 내용이 보존된다. 모든 트랜잭션 처리 시스템은 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년대에 개발되었다.[2][3] 주로 이러한 소프트웨어는 특정 데이터베이스 시스템(DBMS)와 조합된 것이 많았다. 1980년대에는 이와 비슷한 기본 기능을 제공하는 C/S 시스템이 성공을 거두었다. 하지만, 최근 분산 C/S 시스템의 유지보수가 점점 힘들어지고 있다.[2][3] (특히 인터넷을 통해)) 온라인 서비스가 성장함에 따라 트랜잭션이 증가하고 있어서 한개의 데이터베이스를 선택하는 경우는 사라지고 있다.[2][3] 이전의 C/S 시스템에서는 한대의 서버에서 트랜잭션을 주로 처리하였지만, 대부분의 온라인 시스템에서는 여러 개의 프로그램이 조합되어 작동하는 구성으로 되어 있다. 현재는 여러 개의 프로그램이 조합된 트랜잭션 처리 시스템이 많이 운영되고 있으며, 메인프레임을 포함하는 대형 시스템에까지 적용이 가능하다.[2][3]
업계 표준으로는 X/Open 분산 트랜잭션 처리(DTP)가 중요하다.[2][3] Java Transaction API (JTA)도 참고할 만하다. 그러나 IBM의 CICS 같은 비표준 트랜잭션 시스템도 많이 사용된다. 요즘은 CICS도 개방형 업계 표준을 수용하고 있다.[2][3]
극한 트랜잭션 처리(XTP)라는 용어는 특히 처리량 요구 사항(초당 트랜잭션)과 같이 특이하게 어려운 요구 사항을 가진 트랜잭션 처리 시스템을 설명하는 데 사용되었다.[2][3] 이러한 시스템은 분산 또는 클러스터 스타일 아키텍처를 통해 구현될 수 있다.
5. 한국의 트랜잭션 처리 시스템
6. 관련 기술
참조
[1]
웹사이트
Transaction Processing – Concepts and Techniques (Powerpoint)
http://research.micr[...]
2012-11-12
[2]
뉴스
Going eXtreme for Health Care
https://www.smalsres[...]
2017-03-18
[3]
서적
Extreme Transaction Processing
Lightning Source
2011
[4]
문서
[5]
웹인용
Transaction Processing - Concepts and Techniques (Powerpoint)
http://research.micr[...]
2012-11-12
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
30년 성숙된 DB시장에서 혁신을 꿈꾸는 '선재소프트' – 바이라인네트워크
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com