CQRS의 읽기 편이 우리가 작성한 대형 문서 관리 응용 프로그램 (비디오/pdf 파일/etc)에서 어떻게 작동하는지 이해하려고합니다.큰 데이터 세트에 대한 사용 권한으로 읽을 때 CQRS
사용자가 수정 권한이있는 모든 문서의 목록 표시 (즉, 사용자가 편집 할 수있는 모든 문서 표시). 특정 사용자가 편집 할 수있는 10,000,000 개의 문서가있을 수 있습니다.
일반적으로 나는 하나의 "테이블"(플랫 구조)이 대부분의 화면에서 충분하고 권한으로 테이블 당 역할을 가질 수 있다고 읽었습니다.
특정 사용자에 대해 편집 할 수있는 문서를 신속하게 가져올 수 있도록 읽음 모델을 어떻게 디자인합니까?
현재 내 문서를 들고있는 테이블을 볼 수 있으며, 다른 사용자는 사용자와 문서 간의 "편집"역할을 연결하는 다른 테이블을 보유하고 있습니다. 그래서이 스크린의 데이터를 얻기 위해 조인을하고 있습니다. 또한
등이이 경우에 올바른 방법인가를보고, 삭제하는 역할이 될 수 있을까?
JD는
Dennis에게 답장을 보내 주셔서 감사합니다. 비정규 화 된 데이터로 SQL 기반 라우트를 간다면, 우리는 100,000 개의 문서를 말하고 단일 사용자는 가능한 300,000 개의 가능한 레코드를 가지며, 사용자가 편집/삭제 /보기 할 수 있습니다. 지금 우리에게 10 명의 사용자가 있다면 3 백만 달러가 있습니다 ... 제가 요점을 놓치지 않는 한, 이것은 성능 및 유지 보수 (업데이트) 측면에서 악몽이 될 것입니다. 그래서 내가 별도의 테이블을 사용하여 데이터를 결합하는 것에 대해 생각하고있었습니다. –
필자는 귀하의 데이터와 귀하가 선택한 RDBMS에 대해 충분히 알지 못합니다. 하지만 이것을 고려해보십시오 : 100,000 개 이상의 항목에서 이중 조인을 수행하는 대신 300,000 개의 항목으로 하나의 비정규 화 테이블을 쿼리하는 것이 더 빠를 수 있습니다. 성능 측면에서 볼 때, 특히 작은 테이블을 여러 개 조인하는 것보다 큰 테이블을 쿼리하는 것이 더 빠릅니다. 특히 적절한 인덱스가있는 경우 더욱 그렇습니다. 그리고 업데이트에 관해서는, CQRS에서도 어쨌든 비동기 이벤트 핸들러에 의해 처리 될 것입니다. –
데니스에게 도움을 주셔서 감사합니다. 나는 네가 말한 것을 모두 가져 갔다. –