피드로 돌아가기
Rollup vs calculated columns in Dataverse: the async trap we fell for
Dev.toDev.to
Database

Dataverse Rollup의 Async 지연 해결을 위한 실시간 집계 아키텍처 설계

Rollup vs calculated columns in Dataverse: the async trap we fell for

SapotaCorp2026년 5월 24일5intermediate

Context

Dataverse Rollup Column의 기본 비동기 스케줄링(1~12시간)으로 인한 데이터 불일치 발생. 비즈니스 사용자가 기대하는 실시간 Aggregate 값과 플랫폼의 캐시 기반 제공 방식 간의 간극으로 인한 데이터 정합성 이슈 분석.

Technical Solution

  • Dataverse의 Read-time 계산 방식인 Calculated Column을 활용하여 동일 행 또는 상위 행의 단순 연산 처리
  • 중소규모 데이터셋에 대해 Child 레코드 변경 시 Parent의 합계 필드를 즉시 갱신하는 Post-operation Plugin 도입
  • 대규모 데이터셋의 성능 저하 방지를 위해 Consumer 단에서 FetchXML Aggregate Operator를 통한 Read-time 집계 구현
  • CalculateRollupField SDK Request를 연동한 명시적 Refresh 버튼을 통해 사용자 주도의 온디맨드 갱신 구조 설계
  • Child 레코드 삭제 시 Rollup 자동 갱신 누락 문제를 해결하기 위한 Delete Event 전용 Plugin 추가 구성
  • 사용자 기대치 관리를 위해 필드 설명란에 갱신 주기 및 Refresh 방법 안내 Tooltip 강제 적용

- 집계 데이터의 실시간성 필요 여부에 따라 Calculated vs Rollup 선택 - Child-Parent 관계의 Fan-out 규모가 큰 경우 Plugin 기반 갱신보다 Query 기반 집계 검토 - 비동기 집계 필드 도입 시 반드시 사용자에게 갱신 주기 공지 및 수동 갱신 수단 제공 - 분기별 Rollup Column 감사(Audit)를 통해 미사용 필드 삭제 및 스케줄 최적화 수행

원문 읽기