2009-12-12 2 views
4

과거에는 모든 db 요구가 sqlite에 의해 해결되었습니다. 이제는 잠재적으로 커질 수있는 DB를 설계하여 "분산 트랜잭션"을 조사했습니다. 어떻게 프로그래밍합니까? 분산 트랜잭션이 무엇인지 설명하지만 프로그램을 작성하는 방법을 설명하지 않은 몇 가지 결과를 발견했습니다."분산 트랜잭션"을 어떻게 프로그래밍합니까?

나는 코드에서 내가 더 큰 트랜잭션으로 일괄 처리하려는 몇 가지 트랜잭션을 알고 있습니다. .NET을 사용합니다. PK가 한 데이터베이스에 있고 이름과 설정 같은 사용자 정보가 다른 데이터베이스에있는 사용자를 만드는 것과 같은 일을 어떻게 할 수 있습니까? 이것은 별도의 질문이 될 수 있지만 두 가지 기능이있는 경우. 하나는 미디어 설명을 업데이트하고 다른 하나는 동일한 서버에 있거나 별도의 콘텐츠를 업데이트합니다. 어떻게 이러한 트랜잭션을 중첩하고 끝에 만 커밋합니까?

답변

4

개념 소개는 Wikipedia을 참조하십시오.

.NET에서 사용하려면 System.Transactions 네임 스페이스, 특히 TransactionScope 클래스를 확인하십시오. 이렇게하면 DTC을 사용할 수 있습니다. System.Data.SQLite 프로젝트를 보면 DTC와 SQLite의 통합 방법을 알 수 있습니다.

+0

sqlite를 사용하여 분산 트랜잭션 테스트를 지금 작성할 수 있습니까? 그렇다면 나는 그것을 잘 할 것입니다. –

+0

필자가 아는 한,'System.Data.SQLite'는 자동 DTC 입대를 지원합니다. 그래, 네. – jason

3

설명한 방법으로 성능 문제가 발생할 수 있습니다. 각 요청에는 여러 데이터베이스와 관련된 트랜잭션이 필요합니다. 그것은 값이 비싸다. 예를 들어 동일한 트랜잭션에서 웹 서비스 호출과 DB 요청이 필요한 경우 분산 트랜잭션이 좋은 해결책이 될 수 있습니다. 당신이 미래에 부하가 성능을 향상시키기 위해 확장 성이 필요한 경우

, 당신은 클러스터링을 고려할 수 있습니다. 단일 유스 케이스의 일부를 다른 서버로 분산시키는 대신 간단한 (분산되지 않은) 트랜잭션을 실행하게됩니다. 그리고 다른 요청이 다른 서버에 의해 처리되기 때문에 확장 성의 이점을 얻을 수 있습니다.

클러스터링의 주요 목적과 다양한 상황에서의 적용 가능성에 대한 의견이 다릅니다. 도메인에 의존하고 신중한 분석이 필요하다고 생각합니다. 클러스터링에 관한 일부 링크 : 닐 맥 칼리 스터에 의해 Database Clustering, Overview of SQL Server 2000 Database Clustering using MSCS (오래된), 위키 백과에서 Clustering (computing)Clustering Algorithms - 일반 지식.

나는 마틴 파울러 Errant Architectures에서 살펴 봐야 당신을 추천합니다 (주로 분산 컴퓨팅에 대해 이야기뿐만 아니라 거래에 적용되는) 것, MSDN에서 Distributed Transactions Overview,이 두 의견 :

Is Distribution really that bad?(About) Martin Fowler's First Law of Distribution.

+0

귀하의 질문에 답변하지는 않지만 유용하고 심각한 실수를하지 않기를 바랍니다. –

+0

익명의 유권자 덕분에 초기 답변에 잘못된 링크가 포함되어 있음을 발견했습니다. 이제 더 많은 정보를 편집하고 추가했습니다. –

+0

경고 : 서로 다른 관점에서 일반 정보를 제공하기 위해 여러 링크를 제공했습니다. 클러스터링을 사용하기로 결정했다면, 상황에 가장 적합한 방법에 대한 자세한 정보를 찾을 수있을 것입니다. –

관련 문제