LowCode (Mendix) Advanced/Advanced Domain Model Skills

Improving App Performance with Indexes and Reference Sets

Caryou 2024. 9. 4. 15:07

학습 목표

이 모듈을 마치면 다음을 수행 할 수 있습니다.

  • 참조 세트를 언제 사용할지, 성능 향상을 위해 어떤 유형을 사용할지 결정
  • 인덱스를 사용하여 쿼리 속도 향상

먼저 도메인 모델에서 직원은 여러 팀에 속할 수 있도록 다 대 다 연결로 설정

참고로 연결의 소유권은 연결의 점(●) 끝으로 표시됩니다.

[그림 1]

팀을 편집할 때 스태프를 팀에 할당할 수 있다면 편리할 것이라고 상상할 수 있습니다. 따라서 Team은 연결의 소유자이기도 해야 합니다. 쉬운 트릭은 연결 탐색 가능성을 둘 다로 설정하는 것입니다 – Team 및 Staff 개체는 서로를 참조합니다. 그러면 다음과 같은 도메인 모델이 생성됩니다.

[그림 2]

이와 같이 연결의 소유권을 양쪽으로 설정해준다면 어느 객체에서든 연결 되어있는 객체에 접근이 가능합니다.
주의사항으로는 개체 캐시가 커질 수 있고 데이터베이스에서 데이터를 검색할 때 성능에 영향을 줍니다.

필수적으로 양쪽에서 연결을 관리할 수 있어야 하는지 고민해봐야 합니다.

 

단, 다대다 연결은 관계 간 추가 정보를 기록해야 하는 경우가 많기 때문에 실제로는 거의 사용되지 않습니다.

따라서 다음과 같은 방법으로 이 추가 정보를 기록할 추가 조인 엔터티를 추가합니다.

[그림 3]

 

다음과 같이 바꾸었을 때 개체 캐시가 줄어들고 앱의 성능이 향상됩니다.

[그림 4] 다대다연결 시 개체 캐시
[그림 5] 조인 엔터티 추가 시 개체 캐시
[그림 6]

각 케이스 별 성능 테스트

[그림 7]

조인 엔터티를 사용하는 데이터 집합은 약 3-4배가 빠른 걸 볼 수 있습니다.

 

출처 : Mendix Academy - Advanced Domain Model Skills