복붙노트

[MONGODB] MongoDB의 거래?

MONGODB

MongoDB의 거래?

.NET에서 MongoDB를하고 규범과 장난.

저를 혼란 것 - 어떤 거래도 없다 (그냥 같은 MongoConnection.Begin / endTransaction을하거나 뭔가를 말할 수 없다).

뭔가가 실패 할 경우 작업 패턴과 롤백 변경 단위를 사용하고 싶습니다.

ITransaction의 내 저장소를 풍부하게하는 방법 깨끗한 방법은 아직 있습니까?

해결법

  1. ==============================

    1.MongoDB의 복잡한 다중 문서 트랜잭션을 지원하지 않습니다. 그 어떤 경우 당신은 절대적으로 아마 당신을위한 좋은 적합하지 않습니다 필요합니다.

    MongoDB의 복잡한 다중 문서 트랜잭션을 지원하지 않습니다. 그 어떤 경우 당신은 절대적으로 아마 당신을위한 좋은 적합하지 않습니다 필요합니다.

    그러나 대부분의 경우, 우리는 복잡한 트랜잭션이 요구하지 않은 것으로 나타났습니다. MongoDB의 모든 작업은 하나의 문서에 원자이며, 우리는 (빠르고) 쉽게 구현할 거래를해야 작업을 많이하기 좋은 업데이트 수정을 지원합니다.

  2. ==============================

    2.사실 그건 그 MongoDB를의 does't 지원 상자의 거래,하지만 당신은 자신에 낙관적 트랜잭션을 구현할 수 있습니다. 그들은 작업 단위를 미세 맞습니다. 당신은 쉽게 C #으로 반복 할 수 있도록 나는 자바 예와 GitHub의에 대한 몇 가지 설명을 썼다.

    사실 그건 그 MongoDB를의 does't 지원 상자의 거래,하지만 당신은 자신에 낙관적 트랜잭션을 구현할 수 있습니다. 그들은 작업 단위를 미세 맞습니다. 당신은 쉽게 C #으로 반복 할 수 있도록 나는 자바 예와 GitHub의에 대한 몇 가지 설명을 썼다.

  3. ==============================

    3.버전 4.0로, MongoDB를 다중 문서 ACID 트랜잭션을 지원합니다. 스냅 숏 격리를 통해 트랜잭션 데이터의 전 세계적으로 일관된 뷰를 제공하고, 데이터 무결성을 유지하기 위해 모 아니면도 실행을 적용합니다. 더 많은 정보 https://www.mongodb.com/transactions 참조

    버전 4.0로, MongoDB를 다중 문서 ACID 트랜잭션을 지원합니다. 스냅 숏 격리를 통해 트랜잭션 데이터의 전 세계적으로 일관된 뷰를 제공하고, 데이터 무결성을 유지하기 위해 모 아니면도 실행을 적용합니다. 더 많은 정보 https://www.mongodb.com/transactions 참조

    4.2에서 MongoDB를도 분산됩니다 트랜잭션을 지원합니다.

    당신은 역사와 추론에 관심이 있다면이 블로그 게시물에서 나는 또한 경우에, 다중 문서 ACID 트랜잭션에 대한 우리의 여행을 설명합니다.

  4. ==============================

    4.MongoDB를 4.0은 다중 문서 거래에 대한 지원을 추가합니다.

    MongoDB를 4.0은 다중 문서 거래에 대한 지원을 추가합니다.

    https://www.mongodb.com/transactions

  5. ==============================

    5.기록에 대한 몇 가지주의 사항.

    기록에 대한 몇 가지주의 사항.

    MongoDB의 트랜잭션을 지원하지 않지만, 그것은 하나의 문서에 자성을 지원합니다 :

    또한, "운영의 분리 순서"에 대한 매뉴얼 항목은 흥미로운 일이 될 수 있습니다. 예컨대 :

  6. ==============================

    6.대신 MongoDB를 TokuMX를 사용할 수 있습니다.

    대신 MongoDB를 TokuMX를 사용할 수 있습니다.

    http://www.tokutek.com/products/tokumx-for-mongodb/

  7. ==============================

    7.참고 -이 지금 변경

    참고 -이 지금 변경

    using (var session = mongoDbContext.MongoDatabase.Client.StartSession())
                {
                    var itemAuthRepo = (Repository<ItemAuthorization, ObjectId>)mongoDbContext.ItemAuthorizations;
                    var calendarRepo = (Repository<CalendarEvent, ObjectId>)mongoDbContext.Calendars;
    
                    if (itemAuthRepo != null && calendarRepo!=null)
                    {
                        session.StartTransaction();
    
                        try
                        {
                            itemAuthRepo.Collection.InsertOne(session, newItemAuthorization);
                            calendarRepo.Collection.InsertOne(session, cal);
                            session.CommitTransaction();
                        }
                        catch (Exception ex)
                        {
                            session.AbortTransaction();
                            throw;
                        }
                    }
                    else
                    {
                        throw new Exception("IRepository was not casted to Repository");
                    }
                }
    
  8. ==============================

    8.예, MongoDB를 데이터베이스 버전에 따라 작동 패턴의 단위를 적용하는 방법은 여러 가지가 있습니다.

    예, MongoDB를 데이터베이스 버전에 따라 작동 패턴의 단위를 적용하는 방법은 여러 가지가 있습니다.

    MongoDB를 4.0까지, 다중 문서 ACID 트랜잭션에 대한 지원이 없었다. 그런 다음 개발자는 (단일 데이터베이스) "2 단계 확약 프로토콜 '과'세 단계 커밋 프로토콜을"사용하고있다 (비 차단 분산 데이터베이스에서) 데이터 일관성을 제공하지만 모 아니면도 실행했다 자신의 트랜잭션 레이어를 만들 데이터 무결성을 유지합니다. 그 방법은 성능을 촬영하고있다 그래서.

    MongoDB를 4.0은 다중 문서 ACID 트랜잭션에 대한 지원을 추가했습니다.

    출처 :

    https://en.wikipedia.org/wiki/Two-phase_commit_protocol

    https://en.wikipedia.org/wiki/Three-phase_commit_protocol

    https://www.mongodb.com/transactions

  9. from https://stackoverflow.com/questions/2655251/mongodb-transactions by cc-by-sa and MIT license