오토페치
AutoFetch컴퓨팅의 AutoFetch는 객체 관계 매핑 쿼리를 자동으로 조정하는 메커니즘입니다.
텍사스 대학의 Ali Ibrahim과 William Cook은 "AutoFetch"의 아이디어를 개발했는데, 여기에는 Hibernate를 위한 구현이 포함되었고, 이후 Ebean에서 구현이 이어졌다.
혜택들
애플리케이션 코드의 모듈화 개선
AutoFetch는 프로그램 상태(일반적으로 콜스택)를 사용하여 쿼리를 분류합니다.이는 AutoFetch가 호출된 방법에 따라 동일한 쿼리를 조정할 수 있음을 의미합니다.
예를 들어 다음과 같은 Data Access API가 있습니다.findCustomer(int customerId)는, 메서드의 발신자에 의해서 다른 방법으로 조정할 수 있습니다.
개발자의 개발 및 유지보수 부담 경감
AutoFetch는 프로파일링 정보를 자동으로 수집하기 때문에 개발자는 수동으로 이 정보를 수집하고 코드에 성능 최적화를 적용할 필요가 없습니다.
AutoFetch는 오브젝트그래프 사용량을 감시할 수 있기 때문에 용도가 변경되었을 경우 쿼리의 튜닝이 적절하게 변경될 수 있습니다.이를 통해 개발자의 코드 유지 보수 문제가 줄어들고 시간이 지남에 따라 사용량이 변경됨에 따라 최적의 성능을 유지할 수 있습니다.
구조
AutoFetch는 쿼리가 실행될 때 개체 그래프 사용량을 수집합니다.이후 실행 시 쿼리를 자동으로 조정하는 데 사용되는 '프로파일' 정보를 수집합니다.ORM 쿼리는 각 쿼리의 올바른 프리페치 디렉티브를 결정하고 자동으로 추가함으로써 조정됩니다.
이렇게 하면 "지저분한 로드"를 줄여 애플리케이션의 성능이 향상됩니다.부분 객체를 지원하는 ORM의 경우 AutoFetch는 모든 속성이 아닌 응용 프로그램에서 사용하는 속성만 포함시킴으로써 쿼리를 조정할 수도 있습니다.
장래의 방향
또한 AutoFetch 프로파일링을 사용하여 객체 그래프 사용이 고르지 않은 것으로 알려진 "배열 가져오기"와 같은 최적의 쿼리 전략을 선택할 수도 있습니다(일반적으로 목록의 첫 번째 객체 그래프에 가중치가 부여됨).
이로 인해 현재 ORM 도구에 사용되는 기술보다 훨씬 효율적이고 성능이 뛰어난 객체 그래프 횡단이 발생할 수 있습니다.