Postgres를 사용하여 이벤트 소싱 시스템을 구현하려고합니다. 가장 좋은 설명은 예제입니다. 내 이벤트가 결국 사람을 설명해야한다고 가정 해 봅시다. 그리고 난 다음 이벤트가 :이벤트의 일관되지 않은 동작으로 이벤트 소싱
- PersonCreatedEvent (값 = 100, 필드 = "ID", 날짜 = ..)
- AgeUpdated (값 = 10, 필드 = "나이"날짜 = ..)
- LastNameUpdate (값 = "newLastName"필드 = "LASTNAME"날짜 = ...)
- LocationUpdated (값 = (위도, 긴), 필드 = "위치"날짜 = ...)
- 잔액 업데이트 (값 = 1000, 필드 = "잔액", 날짜 = ..)
이벤트 1은 평생 동안 한 번만 발생합니다.
이벤트 2 - 3 여러 번 발생할 수 있습니다.
이벤트 4 - 5 여러 번 여러 번 발생할 수 있습니다. 하루의 끝에서
와 일치하는 테이블로 끝날 것이다, 나는 이벤트 수십억이있을 수 있습니다 동안 그 중 99 %는 기본적으로 4, 5입니다. 이렇게하면 대용량 데이터 저장소가 생겨 Postgres가 잘 작동하는지 확신 할 수 없습니다. (상당한 작업량과 인프라가 증가 할 수 있습니다.)
이것은입니다. 예를 들어, 내 엔티티는 100 개의 필드로 결합 될 수 있습니다. 이는 엔티티 당 적어도 100 개의 이벤트를 의미합니다. 필드 중 일부는 이벤트 4와 5의 특성을 가지고 있습니다.
제 경우에는 이벤트 소싱을 사용하는 것의 부가 가치는 본인의 내적 본질적으로 내 사례에서 제품 요구 사항 인 내역을 얻는 것입니다.
이 경우 가장 좋은 방법은 무엇입니까? 더 자주 속성을 다른 곳에서 처리해야합니까?
업데이트 : 또 다른 예는 장치 집합체를 살펴 보는 것입니다.
- DeviceManufacturerUpdated (값 = "시스코", 필드 = "제조", 날짜 = ..)
- DeviceNameUpdated (값 = "foo는"필드 = "이름", 날짜 = ...)
- DeviceIpUpdated (값 = "1.1.1.1"필드 = "IP"날짜 = ...)
- DeviceLocationUpdated (값 = "새로운 위치"필드 = "위치"날짜 = ...)
- DeviceLastSeenUpdated (value = "some date", field = "last_seen", date = ...)
은 2 이벤트 2 4. 이벤트 4 일 5 차례 heppen 수있는 모든 일 heppen이 수 차례 3. 이벤트 3 heppen 수있는 한 시간을 heppen 수 있습니다.나는 위해 Postgress 이상이 구현하고있는 경우 이벤트 (5)는 주로 이벤트 4, 5가 들어 나는 거대한 테이블 끝날 분마다
을 heppen 수
스냅 샷이 도움이 될 수도 있지만 특정 시점에서 필자는 데이터베이스 크기와 관련하여 어떤 조치를 취해야한다고 가정합니다. (크기는 지속되는 이벤트의 "유형"결과입니다). 어떤 시점에서는 스냅 샷이 남지만 이벤트 삭제 후 내역 기능을 잃게됩니다. 내 테이블이 같은 이벤트 유형의 99 %로 구성되어있을 때 내가 뭔가 잘못하고있는 것처럼 느껴집니다. 그것은 내가 알지 못하는 최적화를위한 공간이있는 것처럼 느껴집니다. : - | 어떻게 생각해? – Tomer