2014-11-01 2 views
2

저는 CQRS 및 이벤트 소싱에 대해 더 자세히 배우려고했습니다.이벤트 소싱 및 이벤트/누계 버전

예를 통해 보면, 블로그, 나는 다음이

public class Event 
{ 
    public Guid AggregateId {get; set;} 
    public string Data {get; set;} //some serialized data 
    public int Version {get; set;} 
} 

과 같은 수 있습니다 예를 들어 이벤트 구조를 많이 참조는 내가 이해하지 못하는 것은 무엇을

public class Aggregate 
{ 
    public Guid AggregateId {get; set;} 
    public string Name {get; set;} 
    public int Version {get; set;} 
} 

입니다 집계 이 버전의 정수는 용이고 큰 그림 이해에 대한 나의 부족은 왜 내가 대답을 찾지 못하는지입니다.

단순히 우리가 어떤 이벤트를 오름차순으로 계산 했습니까? 실제로 이벤트 버전입니까? 스키마 또는 다른 것을 변경 한 경우 처럼요?

집계와 마찬가지로, 다른 집계를 볼 때 버전 1에서, 그리고 버전 2에서 하나를 볼 때 정확히 나에게 의미가있는 것은 무엇입니까?

답변

4

이벤트의 버전은 실제로 소비 코드에 대한보다 쉬운 액세스를 위해 이벤트 페이로드에 포함 된 메타 데이터입니다. 일반적으로 집계 축을 따라 분할 된 특정 스트림 내의 이벤트 위치입니다.

일부 프레임 워크/라이브러리는 집계가있는 버전 번호 (집계를 읽을 때 마지막으로 가져온 위치)를 읽고 (새로운 이벤트 추가) 버전 번호를 넘겨야합니다. 집계 기본 클래스의 본문에서 찾을 수 있습니다. 따라서 본질적으로 낙관적 인 동시성의 이유가 있습니다.

계약 또는 스키마 버전 관리는 페이로드 자체가 아닌 유형 (예 : XML 스키마 네임 스페이스)에 뿌려진 유형 또는 일부 속성의 이름으로 변환되는 경우가 많습니다.

분명히 메타 데이터로 표시된 모든 것을 포함 할 수 있으며 그 반대도 마찬가지입니다.

관련 문제