2013-01-31 2 views
7

나는 전체 CQRS/ES 아이디어에 대해 머리를 쓰려고 노력하고 있으며 현재 응용 프로그램에서 구현 방법에 대한 개념 증명 및 기술 사양서 작성을 심사숙고하고 있습니다.CQRS/ES : 대량 작업/가져 오기

CQRS/ES에 매핑하는 방법과 관련하여 문제가되는 작업은 파일 가져 오기를 통해 복잡한 기사 데이터를 대량으로 업데이트하는 것입니다. 데이터 파일의 단일 행을 기사 그룹, 기사, 머리글, 단위 및 속성, 구매자 어소트먼트를 공급자 어소트먼트에 연결하고 어소트먼트의 일부 또는 전체를 내보내는 파일의 대량로드.

기사 가져 오기 BC (Excel 파일이나 기타 그리드 파일을 읽는 모델)를 모델링하는 가장 좋은 방법은 가져온 데이터의 한 줄을 가져 오는 것일 수 있습니다 (DDDCQRS Google 그룹이었을 수도 있음). 집계 및 전체 가져 오기를 집계 루트로 사용합니다. 이렇게하면 파일을 구문 분석 한 후 가져 오기 집계를 만들고 각 줄에 가져 오기에 해당 줄을 추가하면됩니다. 이는 BC의 이벤트 저장소에 이벤트를 저장하고 BC가 구독하는 이벤트를 게시합니다. 이게 말이 돼?

현재 시스템에서 가져 오기는 하나의 장기 실행 트랜잭션으로 실행됩니다. 장기 실행은 가져온 데이터의 양과 제공된 사용자의 기존 데이터 양 (데이터를 이전에 가져온 파일 및 현재 데이터와 비교하기 때문에)에 따라 5 ~ 40 분으로 읽어야합니다. 작업이 중간에 실패하면 현재 전체 작업이 롤백됩니다. CQRS/ES에서 어떻게 작동합니까?

답변

2

CQRS/ES가있는 작은 토드. 아주 순진 방법은 다음과 같습니다

  • 이 단위 오름차순 식별 체계를 고안

    • 작업 당신의 단위를 찾아,
    • 은 (빠른 & 실패 가능성이 적습니다) 작업이 단위로 원래의 입력 변환
    • 각 작업 단위를 트랜잭션으로 처리하고 각 트랜잭션의 일부로 마지막으로 처리 된 작업 단위 (UOW) ID를 갱신하거나 (병렬로 처리하려는 경우 복수)
    • 실패시 마지막 프로에서 다시 시작하다 자동 또는 ops가 녹색 등을 맞춘 후에 작업 단위를 중단합니다.

    하위 모델 인 eventcoced 또는 statebased 모델이 있는지 여부.

  • +1

    이 답변에 동의합니다. 모델을 디자인하는 방법에 관계없이 가져 오기를 수행하는 방법은 명령이 무엇인지 파악하고 가져 오기 파일의 데이터에 대해 만든 다음 처리기를 통해 명령을 실행하는 것입니다. 행 당 하나의 명령이든 많든 하나의 명령이든 모델 및 트랜잭션 명령에 따라 다르며 그 반대가 아닙니다. 가져 오기를 위해 모델을 작성하지 말고 모델 주위에 가져 오기를 작성하십시오. – Dan

    관련 문제