트랜잭션 처리

Transaction processing

트랜잭션 처리는 컴퓨터 과학에서[1] 트랜잭션이라고 불리는 개별적이고 분리할 수 없는 작업으로 구분되는 정보 처리입니다.각 트랜잭션은 완전한 단위로 성공 또는 실패해야 합니다.일부만 완료할 수는 없습니다.

예를 들어, 당신이 온라인 서점에서 책을 구입할 때, 당신은 (신용의 형태로) 돈을 책과 교환한다.만약 당신의 신용이 좋다면, 일련의 관련 업무는 당신이 책을 받을 수 있고 서점이 당신의 돈을 받을 수 있도록 보장합니다.다만, 교환중에 일련의 조작이 1개라도 실패하면, 교환 전체가 실패합니다.당신은 책을 받지 못하고 서점은 당신의 돈을 받지 못한다.거래소를 균형 있게 예측 가능하게 만드는 기술을 트랜잭션 처리라고 합니다.트랜잭션은 트랜잭션 단위 내의 모든 작업이 성공적으로 완료되지 않는 한 데이터 지향 리소스가 영구적으로 업데이트되지 않도록 보장합니다.일련의 관련 작업을 완전히 성공하거나 완전히 실패한 장치에 결합함으로써 오류 복구를 단순화하고 애플리케이션의 안정성을 높일 수 있습니다.

트랜잭션 처리 시스템은 업무 수행에 필요한 일상적인 트랜잭션을 수행하는 트랜잭션 지향 애플리케이션을 호스팅하는 컴퓨터 하드웨어와 소프트웨어로 구성됩니다.예를 들어, 판매 주문 입력, 항공사 예약, 급여, 직원 기록, 제조 및 배송을 관리하는 시스템이 포함됩니다.

오늘날 트랜잭션 처리는 반드시 전부는 아니지만 대부분 대화형이기 때문에 이 용어는 종종 온라인 트랜잭션 처리와 동의어로 취급됩니다.

묘사

트랜잭션 처리는 시스템의 상호의존적인 작업이 모두 정상적으로 완료되거나 모두 취소되도록 함으로써 시스템의 무결성(일반적으로 데이터베이스 또는 일부 최신 파일 시스템)을 알려진 일관된 상태로 유지하도록 설계되었습니다.

예를 들어, 고객의 저축 계좌에서 고객의 당좌예금 계좌로 700달러를 이동하는 일반적인 은행 거래를 생각해 보십시오.이 거래에는 컴퓨터 용어로 저축계좌를 700달러 차감하는 것과 당좌예금계좌를 700달러 차감하는 것 두 가지가 포함됩니다.한 가지 작업은 성공하고 다른 작업은 실패하면 결국 은행의 장부는 균형을 이루지 못할 것이다.따라서 은행 데이터베이스 전체에 불일치가 발생하지 않도록 두 업무 모두 성공 또는 실패를 보장할 수 있는 방법이 있어야 합니다.

트랜잭션 처리는 분할할 수 없는 단일 트랜잭션에서 여러 개의 개별 작업을 연결하며 트랜잭션의 모든 작업이 오류 없이 완료되는지 또는 그렇지 않은지 확인합니다.일부 조작이 완료되었지만 다른 조작이 시도되었을 때 오류가 발생하면 트랜잭션 처리 시스템은 트랜잭션의 모든 조작(성공한 조작 포함)을 "롤백"하여 트랜잭션의 모든 흔적을 지우고 t 처리 전 상태로 시스템을 복원합니다.그는 거래를 시작했다.트랜잭션의 모든 조작이 정상적으로 완료되면 트랜잭션은 시스템에 의해 커밋되고 데이터베이스에 대한 모든 변경은 영구화됩니다.이 작업을 수행한 후에는 트랜잭션을 롤백할 수 없습니다.

트랜잭션 처리는 트랜잭션이 부분적으로 완료된 상태로 남아 있을 수 있는 하드웨어 및 소프트웨어 오류를 방지합니다.트랜잭션 도중 컴퓨터 시스템이 크래시되면 트랜잭션 처리 시스템은 커밋되지 않은 트랜잭션의 모든 조작이 취소됨을 보증한다.

일반적으로 트랜잭션은 동시에 발행됩니다.서로 겹칠 경우(즉, 데이터베이스의 동일한 부분을 터치해야 함) 충돌이 발생할 수 있습니다.예를 들어, 위의 예에서 언급한 고객의 저축 계좌에 150달러가 있는데 100달러를 다른 사람에게 송금하는 동시에 당좌예금 계좌로 100달러를 이체하려고 하면 둘 중 하나만 성공할 수 있습니다.그러나 트랜잭션을 순차적으로 처리하도록 강요하는 것은 비효율적입니다.따라서 트랜잭션 처리의 동시 실장은 최종 결과가 충돌이 없는 결과를 반영하도록 프로그램되어 있으며, 이는 트랜잭션을 임의의 순서로 순차적으로 실행하는 경우와 동일하게 달성될 수 있다(시리얼라이저빌리티라고 불린다).이 예에서는 어떤 거래가 먼저 이루어졌든 간에 다른 사람에게 이체하거나 당좌예금 계좌로의 이체는 성공하고 다른 사람은 실패하는 것을 의미합니다.

방법론

모든 거래 처리 시스템의 기본 원칙은 동일합니다.단, 거래처리시스템에 따라 용어가 다를 수 있으며, 다음에 사용하는 용어가 반드시 보편적인 것은 아닙니다.

롤백

트랜잭션 처리 시스템은 변경 시 데이터베이스의 중간 상태를 기록한 후 이러한 레코드를 사용하여 트랜잭션을 커밋할 수 없는 경우 데이터베이스를 알려진 상태로 복원함으로써 데이터베이스의 무결성을 보장합니다.예를 들어 트랜잭션에 의해 수정되기 전의 데이터베이스 정보 복사본은 트랜잭션이 수정되기 전에 시스템에 의해 확보됩니다(이것을 이전 이미지라고도 합니다).커밋하기 전에 트랜잭션의 일부가 실패할 경우 이러한 복사본은 트랜잭션이 시작되기 전의 상태로 데이터베이스를 복원하는 데 사용됩니다.

롤포워드

데이터베이스 관리 시스템에 대한 모든 변경 사항을 별도의 저널에 기록할 수도 있습니다.(이미지 이름을 따서 부르기도 합니다).이는 실패한 트랜잭션의 롤백에는 필요하지 않지만 데이터베이스 장애 시 데이터베이스 관리 시스템을 업데이트하는 데 유용하므로 일부 트랜잭션 처리 시스템에서 제공합니다.데이터베이스 관리 시스템이 완전히 실패할 경우 최신 백업에서 복원해야 합니다.백업에는 백업이 수행된 이후 수행된 트랜잭션은 반영되지 않습니다.그러나 데이터베이스 관리 시스템이 복원되면 데이터베이스 관리 시스템을 최신 상태로 만들기 위해 데이터베이스에 애프터 이미지의 저널을 적용할 수 있습니다(롤포워드).장애 발생 시 진행 중인 트랜잭션을 롤백할 수 있습니다.그 결과, 일관성 있고 알려진 상태의 데이터베이스가 생성되어 장애 발생 순간까지 커밋된 모든 트랜잭션의 결과가 포함됩니다.

교착 상태

경우에 따라서는 처리 과정에서 두 트랜잭션이 동시에 데이터베이스의 동일한 부분에 액세스하려고 할 수 있으며, 이러한 트랜잭션은 처리를 방해할 수 있습니다.예를 들어 트랜잭션 A는 데이터베이스의 부분 X에 액세스하고 트랜잭션 B는 데이터베이스의 부분 Y에 액세스해도 된다.그 시점에서 트랜잭션A가 데이터베이스의 Y 부분에 접속을 시도하고 트랜잭션B가 X 부분에 접속을 시도하면 교착 상태가 발생하여 어느 트랜잭션도 진행할 수 없습니다.트랜잭션 처리 시스템은 이러한 교착 상태가 발생할 때 이를 감지하도록 설계되었습니다.일반적으로 두 트랜잭션 모두 취소되고 롤백된 후 자동으로 다른 순서로 다시 시작되므로 교착 상태가 다시 발생하지 않습니다.또는 교착 상태의 트랜잭션 중 하나만 취소되고 롤백되며 짧은 지연 후 자동으로 재시작될 수 있습니다.

3개 이상의 트랜잭션 간에 교착 상태가 발생할 수도 있습니다.트랜잭션의 수가 많을수록 검출이 어려워지기 때문에 트랜잭션 처리 시스템이 검출할 수 있는 데드록에는 실질적인 한계가 있음을 알 수 있습니다.

보상거래

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

산성 기준

Jim Gray는 1970년대 후반에 ACID라는 약자로 신뢰할 수 있는 트랜잭션 시스템의 속성을 정의했습니다.원자성, 일관성, 격리성 및 [1]내구성이 그것입니다.

원자성

트랜잭션의 상태 변경은 모두 발생하거나 전혀 발생하지 않습니다.이러한 변경에는 데이터베이스 변경, 메시지 및 변환기에 대한 작업이 포함됩니다.

일관성.

일관성: 트랜잭션은 상태를 올바르게 변환하는 것입니다.그룹으로 수행된 작업은 상태와 관련된 무결성 제약 조건을 위반하지 않습니다.

격리

트랜잭션이 동시에 실행되더라도 각 트랜잭션 T에는 다른 트랜잭션 T가 T 이전 또는 T 이후에 실행된 것으로 보이지만 둘 다 실행되지는 않습니다.

내구성

트랜잭션이 성공적으로 완료되면(커밋), 데이터베이스에 대한 변경은 실패 후에도 유지되고 변경 내용이 유지됩니다.

혜택들

트랜잭션 처리에는 다음과 같은 이점이 있습니다.

  • 많은 사용자 간에 컴퓨터 리소스를 공유할 수 있습니다.
  • 작업 처리 시간을 컴퓨팅 리소스의 사용량이 적은 시간으로 전환합니다.
  • 시시각각의 조작과 감시를 실시하지 않고 컴퓨팅 자원을 낭비하는 것을 방지합니다.
  • 고가의 컴퓨터 클래스에서 사용되며, 고가의 자원 사용률을 유지함으로써 비용을 상각할 수 있습니다.

단점들

  • 셋업 비용이 비교적 비싸다
  • 표준 형식이 부족합니다.
  • 하드웨어와 소프트웨어의 비호환성

실장

IBM의 Information Management System과 같은 표준 트랜잭션 처리 소프트웨어는 1960년대에 처음 개발되었으며, 종종 특정 데이터베이스 관리 시스템과 밀접하게 결합되었습니다.클라이언트와 서버 컴퓨팅은 1980년대에 유사한 원칙을 구현하여 혼재된 성공을 거두었습니다.그러나 최근 몇 년간 분산 클라이언트-서버 모델은 유지보수가 상당히 어려워졌습니다.다양한 온라인 서비스(특히 )에 대응하여 트랜잭션 수가 증가함에 따라 단일 분산 데이터베이스로는 실질적인 해결책이 되지 못했습니다.또한 대부분의 온라인 시스템은 단일 서버가 트랜잭션 처리를 처리할 수 있는 엄격한 클라이언트 서버 모델이 아닌 함께 작동하는 전체 프로그램 스위트로 구성됩니다.현재 메인프레임을 포함한 대규모 시스템으로 확장 가능한 프로그램 간 수준에서 작동하는 트랜잭션 처리 시스템이 많이 있습니다.

하나는 X/Open Distributed Transaction Processing(DTP; 분산 트랜잭션 처리)입니다(Java Transaction API(JTA; Java 트랜잭션 API)도 참조).그러나 CICS는 개방형 산업 표준을 포함하도록 발전했지만 IBM의 CICS와 같은 독점적 트랜잭션 처리 환경은 여전히 매우 [citation needed]인기가 있습니다.

Extreme Transaction Processing(XTP; 익스트림 트랜잭션 처리)이라는 용어는 특히 throughput 요건(transactions per second)을 가진 트랜잭션 처리 시스템을 설명하기 위해 사용되었습니다.이러한 시스템은 분산형 또는 클러스터형 아키텍처를 통해 구현될 수 있습니다.적어도 [2][3]2011년에는 사용되었습니다.

레퍼런스

  1. ^ a b Gray, Jim; Reuter, Andreas. "Transaction Processing – Concepts and Techniques (Powerpoint)". Retrieved Nov 12, 2012.
  2. ^ Koen Vanderkimpen and Dirk Deridder. "Going eXtreme for Health Care". Devoxx 2011 presentation. Retrieved March 18, 2017.
  3. ^ Kevin Roebuck (2011). Extreme Transaction Processing. Lightning Source. ISBN 978-1-74304-266-3.

추가 정보

  • Gerhard Weikum, Gottfried Vossen, 트랜잭션 정보 시스템: 이론, 알고리즘, 동시 제어회복의 실천, Morgan Kaufmann, 2002, ISBN 1-55860-508-8
  • Jim Gray, Andreas Reuter, 트랜잭션 처리 - 개념과 기술, 1993, Morgan Kaufmann, ISBN 1-55860-190-2
  • 필립 A.Bernstein, Eric Newmarker, 트랜잭션 처리 원리, 1997, Morgan Kaufmann, ISBN 1-55860-415-4
  • 아흐메드 KElmagarmid(편집자), 고급 데이터베이스 애플리케이션 트랜잭션 모델, Morgan-Kaufmann, 1992, ISBN 1-55860-214-3

외부 링크