2017-10-14 3 views
0

내 데이터 중 일부를 비교적 큰 파일 (파일 당 몇 GB)에 저장하고 싶습니다. 이벤트 소싱을 사용하고이 파일과 관련된 이벤트를 저장하고 싶습니다. FileCreated : 제목, 설명, 타임 스탬프, 작성자, 개인 키, 암호화 키 등. 잠시 후 일부 파일은 더 이상 필요하지 않으며 많은 공간을 차지합니다. 따라서 공간을 확보하기 위해서는 삭제해야합니다. 그렇게하는 것은 문제가되는데, 왜냐하면 나는 이벤트 저장 장치에 히스토리를 가지게 될 것이기 때문이다. 그러나 파일 시스템에있는 파일은 저장하지 않을 것이다. 무결성을 유지하고 둘 다 삭제하는 방법이 있습니까? 아니면이 문제에 대한 최선의 방법이 있습니까?이벤트 소싱 - 이벤트 관련 파일 삭제

답변

0

나는 대답을 얻지 못했기 때문에, 나는 스스로에게 대답하려고 노력했다.

기록에서 이벤트를 제거 할 수 있습니다. 새 이벤트 저장소를 만들고 제거하려는 동일한 집계 ID에 대한 이벤트를 필터링해야합니다. 끝나면 새 이벤트 저장소로 전환하고 이전 이벤트 저장소를 제거 할 수 있습니다. 아마 당신은 또한 투상을 재생할 필요가있을 것입니다. 따라서 전체 마이그레이션과 매우 유사합니다. 많은 시간이 필요합니다. 현재로서는 1 년에 한 번만 이렇게해야한다면 문제가되지 않습니다. 이벤트 저장소에이 데이터를 저장하는 또 다른 문제는 내가 거기에서 스트리밍하거나 서비스를 제공하기 위해 복제해야한다는 것입니다. 후자의 방법은 항상 좋은 해결책이 아닙니다. 복사하기에 너무 많은 시간이 걸리고 어쨌든 스트리밍해야하는 데이터를 저장해야하므로 그렇지 않으면 메모리가 매우 빨리 소모 될 수 있습니다. 따라서 이벤트 저장소는 스트리밍 첨부 파일을 지원해야합니다.

파일에서 상대적으로 큰 데이터를 유지하고 404와 같은 것을 표시하는 또 다른 해결책은 없거나 파일이 제거 되었기 때문입니다. 나는 이것을 자주 본다. 이 경우 저장소에 이벤트를 유지하는 것이 좋으며 예를 들어 원인을 선택할 수있는 ContentRemoved 이벤트를 추가 할 수 있습니다. 제거 된 파일을 숨기는 다른 옵션은 앱에 나열되지 않으므로 평소와 마찬가지입니다. 이 솔루션에는 단점도 있습니다. 이벤트 저장 영역과 파일을 모두 이동해야하기 때문에이 접근 방식은 마이그레이션이 더 복잡합니다. 실수로 파일을 제거한 경우 파일을 백업하지 않으면 나중에 실행 취소 할 수 없습니다. 며칠 동안 실제 파일 제거 작업을 연기하면 문제를 해결할 수 있으므로 마음이 바뀌면 실행 취소 할 수 있습니다. 휴지통과 파일을 만드는 또 다른 옵션은 휴지통을 비우는 것만으로 삭제됩니다.

저는 두 솔루션 모두 고려해야 할 가치가 있다고 생각합니다. 실제로는 실제 프로젝트에 따라 달라집니다.

관련 문제