사람이 저널에 이벤트 자체를 저장하지만 상태/데이터는 저장하지 않는다는 것을 의미합니까? 상태를 만들기 위해 이벤트를 재생할 수 있습니다. 상태를 저장하지 않아서 저널의 데이터가 어떻게 보이는지 설명 할 수 있습니까? 하나는 함수 자체를 저장합니까?누군가가 스토어 이벤트 자체를 말하고 상태/데이터를 말하지 않는다는 것이 무슨 의미입니까?
답변
이는 모든 상태가 아닌 상태에서 변경된 내용 만 유지한다는 것을 의미합니다. 나는 너와 예제를 줄 것이다.
Products
과 같은 항목을 저장하는 InventoryAggregate
이 있다고 가정 해 보겠습니다. 내부적으로,이 Aggregate
은 모든 항목의 목록을 저장하지만 항목 X를 추가하라는 명령 (AddItemXCommand
)이 x 항목이 추가 된 이벤트 (ItemXWasAddedEvent
)를 생성합니다. 비슷한 명령이 다음 번에 도착하면 Aggregate Repository
은 (이전에 생성 된 모든 이벤트를 Journal에서) Event Store
에서로드하고 상태를 만들기 위해 하나씩 하나씩 적용합니다 (이 특정 예에서는 추가 된 모든 항목의 목록을 작성).
따라서 명령이 도착하여 실행 된 후 state
이 변경되고 (항목이 목록에 추가되지만 항목 목록을 유지하지 않으면) 항목을 유지하지 않고 생성 된 이벤트 만 유지합니다 (항목이 추가됨). 해당 이벤트를 지속하면 Aggregate
및 그 내부의 state
을 삭제할 수 있습니다.
최적화로 내부 상태를 유지할 수 있으므로 명령이 도착하면 모든 이벤트를 적용 + 적용하지 않고 상태가 캐시 된 후에 생성 된 이벤트 만로드 할 수 있습니다. 특정 순간의이 상태는 Snapshot
으로 알려져 있습니다.
안녕하세요! 이것은 좋은 설명이지만 구체적인 예를들 수 있습니다. 저널에서 데이터가 어떻게 보이는지 혼란 스럽습니다. 인벤토리에 제품을 추가한다고 가정하면 데이터가 저널에 어떻게 표시 될지 알려주실 수 있습니까? – user1870400
{eventType : "ProductWaAdded", productId : "1234", productName : "무선 키보드", 가격 : 456} –
이 예제는 JSON입니다. 실제 표현은 지속성 메커니즘에 따라 다릅니다. 알았어. –
뛰어난 비디오를 비롯하여 이벤트 소싱을 할 때 Google 검색에서 제공되는 많은 리소스가 있습니다. 이 http://docs.geteventstore.com/introduction/4.0.0/event-sourcing-basics/을 읽고 https://www.youtube.com/watch?v=JHGkaShoyNs을 보시기 바랍니다. 이 링크는 링크이므로 답변으로는 적합하지 않지만 다음 링크를 통해 많은 도움을 얻을 수 있습니다. –