LowCode (Mendix) Advanced/Constrain Your Data Using Advanced XPath

Optimization

Caryou 2024. 10. 18. 14:54

학습 목표

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

  • Xpath 쿼리 최적화
  • Xpath 최적화를 위한 전략 개발
  • OQL을 Xpath의 대안으로 사용

XPath 쿼리를 최적화하는 다양한 방법

아래 두 쿼리문은 같은 동작을 합니다. 또한 이렇게 하면 응용 프로그램이 더 효율적이고 빨라집니다.

[Sales.Customer_Account/Administration.Account/id = $currentUser]

[Sales.Customer_Account = $currentUser]

 

 

Mendix가 생성하는 기본 쿼리는 관련 엔터티에 대한 하위 쿼리의 모든 데이터를 검색하지만 "equals" 및 "not equals"와 같은 비교 연산자는 검색하지 않습니다. 따라서 가능하면 microflow를 위해 not() 함수의 사용을 피하는 것이 좋습니다.

 

아래에서 이에 대한 예를 볼 수 있습니다. 마이크로플로우의 첫 번째 검색은 not() 함수를 사용합니다. 두 번째 마이크로플로우는 두 개의 검색과 목록 작업을 사용하여 정확히 동일한 결과를 달성합니다. 두 개의 검색과 목록 작업은 일반적으로 not() 함수보다 빠르게 수행됩니다.

[ 그림 1 ]

 

and  or의 사용도 마찬가지입니다. 이는 list operation 활동을 사용하여 마이크로플로우로 대체할 수 있습니다. or 연산을 Union으로 바꿀 수 있습니다.  Intersect로 바꿀 수 있습니다.

 

시간이 오래 걸리는 XPath 쿼리에 대해 사용할 수 있는 또 다른 방법은 인덱스를 적용하는 것입니다. 이렇게 하면 Mendix가 데이터베이스를 더 빠르게 검색할 수 있지만 데이터베이스 변경 속도가 느려집니다. 인덱스가 적용되는 데이터가 변경되는 빈도보다 검색되는 빈도가 더 높은지 확인합니다. 또한 올바른 속성에 인덱스를 설정하는 것이 중요하며, 이 속성은 선택을 수행하는 속성입니다.

 

마지막으로, 긴 XPath 표현식을 도메인 모델에서 추가 직접 연결로 대체하여 Mendix가 5-10개의 엔터티를 넘을 필요가 없고 하나의 연결만 사용할 수 있도록 하는 것이 좋습니다. 이것은 당신이 이 연결을 유지해야 한다는 것을 의미합니다. 또한 도메인 모델이 더 복잡해집니다. 따라서 성능 분석을 통해 교체하는 XPath가 앱의 일상적인 성능에 상당한 영향을 미치는 것으로 나타난 경우에만 이 방법을 사용하는 것이 좋습니다.

 

모든 최적화에서 가장 중요한 것은 성능 문제가 발생할 때 최적화해야 한다는 것입니다. 응용 프로그램을 만들 때는 항상 성능과 유지 관리 사이에서 미세한 균형을 유지해야 합니다. 성능이 좋은 logic 를 만드는 것은 항상 좋은 생각이지만 복잡성을 희생해서는 안 됩니다.

 

인덱스를 올바르게 적용하기

인덱스를 적용하는 것은 선제적으로 수행할 수 있는 작업이지만 일반적으로 권장되지 않습니다. 인덱스는 데이터 삽입 비용을 더 많이 들이기 때문입니다.

 

따라서 인덱스 추가를 시작하기 전에 응용 프로그램이 어떻게 사용되는지 아는 것이 중요합니다. 검색 가능한 고객 이름의 경우와 같이 속성에 인덱스가 필요한 경우가 있습니다. 다른 경우에는 인덱스를 사용해야 하는지 여부를 결정하기 어렵습니다(예: 주소의 우편 번호 필드). 따라서 속성에 인덱스를 적용하기 전에 응용 프로그램의 성능을 분석하는 것이 가장 좋습니다.

 

큰 XPath 표현식 찾기

Ctl-Shift-F

 

 

출처 : Mendix Academy - Constrain Your Data Using Advanced XPath