2011-04-22 4 views
0

EventStore 및 CommonDomain을 사용할 때 집계의 스냅 샷을 취하는 것이 좋습니다 (사용자 그룹과 같은 사용자에게 물어볼 좋은 곳이 있습니까?). 모든 사람이 대답 혜택을 누릴 수 있기 때문에J Oliver EventStore V2.0 CommonDomain Snapshot

감사합니다 앤디

답변

2

스택 오버플로가 질문에 대한 최고의 장소입니다.

스냅 샷은 일반적으로 "대역 외"로 처리되어야합니다. 즉, 처리의 주류에서 벗어난 것입니다. 즉, 일련의 이벤트가 커밋 될 때 스냅 샷을 찍지 않으려는 경우입니다. 대신, 다른 스레드 나 프로세스가 스냅 샷을 비동기 적으로 가져 오게 할 수 있습니다. 어셈블리 (도메인, 메시지 등)가 기본 처리 스레드의 어셈블리와 동일한 지 확인하는 것에 대해 걱정할 필요가 없기 때문에 완전히 별도의 프로세스 대신 다른 스레드를 사용하는 것이 좋습니다.

스냅 샷을 찍는 방법에 대한 코드는 최종 사용자에게 맡깁니다. 다음주에는 스냅 샷을 찍기위한 정확한 단계에 대한 추가 지침을 제공 할 가능성이 높습니다.

또 하나의 고려 사항은 스냅 샷이 필요하다는 것입니다. 1000 개의 이벤트를 넘는 스트림은 몇 개 있습니까? 그렇다면 스냅 샷의 복잡성이 거의 필요 없습니다.

+0

스냅 샷을 기본 처리 외부로 가져와 필요하지 않을 때 복잡성을 포함하지 않는 것이 분명합니다 (훌륭한 문서에 명시된 바와 같이). 하지만 API 전체에 대한 문제가 있습니다 : GetStreamsToSnapshot 메서드가 있지만 어떻게 구성된 IPersistStreams에 액세스 할 수 있습니까? 또한 반환 된 값 IEnumerable 에서 집계 형식을 가져올 수 있습니다. 해당 스냅 샷을 얻기 위해 EventStoreRepository를 사용하여 집계를로드하는 방법은 무엇입니까? 당신은 어디에서 당신의 블로그 인 guidience를 제공 ​​할 것입니까? – andy

+0

스냅 샷을 저장하는 API는 내일 처리 할 작은 작업이 필요합니다. 스냅 샷을로드하려면 OptimisticEventStore에는 별도의 메소드가 있습니다. 발견 된 경우 스냅 샷을 리턴하는 GetSnapshot. 거기에서 GetFrom()을 호출하고 스냅 샷을 전달하기 만하면됩니다. 스냅 샷은 매번로드 할 필요가 없도록 메모리에 보관할 수 있습니다. 실제로 초저 대기 시간 시스템에서는 대부분의 모든 것을 메모리에 저장하여 이벤트 저장소에만 쓸 수 있습니다. –

+0

가장 최근 커밋은 IStoreEvents 인터페이스에서 GetStreamsToSnapshot을 노출하며 기본 구현 인 OptimisticEventStore : https://github.com/joliver/EventStore/commit/2ac284ad99f1408e5665dfcf654e575c19932794 –

관련 문제