2010-11-18 7 views
15

Distributed transaction에 대한 위키 백과 문서는별로 도움이되지 않습니다."분산 트랜잭션"이란 무엇입니까?

분산 트랜잭션이 무엇인지에 대한 자세한 설명을 제공 할 수 있습니까?

또한 응용 프로그램이나 데이터베이스가 둘 이상의 네트워크 컴퓨터에서 데이터를 업데이트하는 트랜잭션을 수행해야하는 이유에 대한 예를들 수 있습니까? 고전적인 은행 예를 이해합니다. Dynamo, Bigtable, HBase 또는 Cassandra와 같은 웹 규모 데이터베이스에서 분산 트랜잭션에 대해 더 신경을 썼습니다.

+0

귀하는 "정상적인"거래의 개념을 이해하고 있습니까? –

+1

'@Matt Ball :'예세르! 이 질문은 * distributed * transactions에 관한 것입니다. 견적은 – Zombie

답변

10

분산 트랜잭션은 여러 실제 시스템에 걸쳐 있지만 표준 트랜잭션은 그렇지 않습니다. 시스템 간의 동기화는 전통적으로 표준 트랜잭션에는 존재하지 않는 필요성이되었습니다. 귀하의 위키 백과 참조에서

...

... 분산 트랜잭션 (transaction)가 은 여러 참여하는 데이터베이스 중 (또는 속성 ACID를 제공) 동기화해야하는 데이터베이스 트랜잭션으로 볼 수있다 은 서로 다른 물리적 위치에 분산되어 있습니다 ...

+0

+1입니다. 나에게 ACID는 그 자체로 꽤 정의이다. – Dunaril

4

분산 트랜잭션은 여러 comp uters. 컴퓨터 A의 프로그램에서 일부 메서드로 트랜잭션을 시작한다고 가정하면 컴퓨터 A의 메서드에서 데이터를 일부 변경 한 다음 메서드가 컴퓨터 B의 웹 서비스를 호출합니다. 컴퓨터 B의 웹 서비스 메서드가 실패하고 트랜잭션을 롤백합니다. 트랜잭션이 분산되어 있기 때문에 컴퓨터 A에서 변경 한 내용도 롤백해야합니다. Windows의 분산 트랜잭션 코디네이터와 .net 프레임 워크의 결합은이 기능을 용이하게합니다.

19

일반적으로 거래는 하나의 데이터베이스 서버에서 발생합니다

BEGIN TRANSACTION 
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1 
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2 
COMMIT 

어려움이 서버가 를 전달해야한다는 사실에서 온다 :

BEGIN TRANSACTION 
SELECT something FROM myTable 
UPDATE something IN myTable 
COMMIT 

분산 트랜잭션 여러 서버를 포함 원자 단위과 같은 트랜잭션 속성이 두 서버 모두에서 충족되는지 확인하십시오. 트랜잭션이 성공하면 두 서버에서 값을 업데이트해야합니다. 트랜잭션이 실패하면 두 서버에서 트랜잭션을 롤백해야합니다. 한 서버에서는 값이 업데이트되지만 다른 서버에서는 값이 업데이트되지 않아야합니다.

1

분산 트랜잭션은 분산 데이터베이스 (즉, 데이터가 여러 물리적으로 분리 된 시스템에 저장되는 트랜잭션)입니다. 모든 기계가 일치하여 모든 트랜잭션이 성공하거나 전혀 발생하지 않는다는 것을 확인하기 위해 (특히 통신에서) 복잡성이 상당히 복잡하기 때문에 주목할 가치가 있습니다.

0

내가 How would you tune Distributed (XA) transaction for performance?

데이터 좋은 분산 트랜잭션에 대한이 게시물에 분산 트랜잭션 세부 사항을 묘사하는 tryed 한 것은 일관성에 대한 매우 높은 요구 사항이 데이터입니다. 보통 이것은 부실한 데이터를 가질 수없는 돈이나 다른 것입니다.일반적으로 정확성/일관성에 대한 필요성이 없다는 두 가지 범주의 라이브 데이터와 데이터를 정의합니다.

이제 Dynamo, Bigtable, HBase 또는 Cassandra에 관한 질문의 두 번째 부분입니다.

NOSQL 데이터베이스와 분산 트랜잭션 사이에 병렬을 그릴 수 없습니다. 이 데이터베이스 클래스의 존재는 분산 트랜잭션을 피하는 수단으로 정당화됩니다. 분산 트랜잭션은 일관성을 중심으로 이루어집니다. 이는 가용성과 파티셔닝을 중심으로 한 NOSQL 스토리지의 경우 상당히 유행입니다.

이러한 데이터베이스에서 사용되는 일반적인 트랜잭션 모델은 최종 일관성입니다.

+0

@ 모그다드가 더 나아 졌나요? –

관련 문제