물리적 표현 선택이 Datalog 성능을 좌우한다
초록
본 논문은 Datalog 엔진에서 관계를 저장·검색하는 물리적 표현을 다양하게 구성하고, 워크로드의 7가지 특성에 따라 최적의 구현을 자동 선택하는 방법을 제시한다. PlayLog 엔진을 구축해 13가지 구현 조합을 실험하고, 결정 트리 기반 선택기가 기존 엔진보다 뛰어난 성능을 보임을 입증한다.
상세 분석
Datalog은 선언적 언어이지만, 실제 실행 단계에서는 삽입, 탐색, 포함 검사 등 다양한 연산이 혼합된다. 이러한 연산들의 비중은 관계의 크기, 중복도, 아리티, 키 폭, 초기화·쿼리 비율, 규칙 간 재사용(인터위빙), 재귀성 등 일곱 가지 워크로드 특성에 따라 크게 달라진다. 기존 엔진은 보통 하나의 물리적 구현(예: 커버드 B‑Tree)만을 사용해 구현 비용을 줄였지만, 이는 특정 상황에서 메모리 과다 사용이나 랜덤 접근 비용 증가 등 심각한 성능 저하를 초래한다.
논문은 이를 해결하기 위해 두 차원의 설계 공간을 정의한다. 첫 번째는 접근 유형(커버드 인덱스, 비클러스터드 키 기반 인덱스, 비클러스터드 포인터 기반 인덱스, 전체 스캔)이며, 두 번째는 자료구조(정렬 배열, B+‑Tree, Radix Tree, 해시 테이블)이다. 이 조합으로 13가지 구현을 만들고, 각각이 삽입·탐색·범위 스캔·대량 로드 등에 대해 어떤 장단점을 갖는지 이론적으로 분석한다.
핵심 실험은 합성 워크로드와 네 개의 실제 Datalog 애플리케이션을 대상으로 수행되었다. 각 워크로드에 대해 위의 일곱 특성을 측정하고, 성능 프로파일링을 통해 어떤 구현이 가장 효율적인지 파악했다. 결과는 관계가 작고 삽입이 적은 경우 정렬 배열이 메모리 효율이 높으며, 넓은 키와 높은 삽입 비율을 가진 재귀 관계에서는 비클러스터드 포인터 인덱스가 최적임을 보여준다.
이러한 인사이트를 바탕으로 논문은 결정 트리 기반 자동 선택 메커니즘을 설계한다. 워크로드 특성을 입력으로 받아 적절한 접근 유형·자료구조 조합을 출력하며, 실제 적용 시 기존 엔진 대비 평균 1.8배, 최악의 경우 3배 이상 성능 향상을 달성한다. 또한 선택 과정은 몇 밀리초 내에 완료돼 실행 계획 단계에 큰 오버헤드를 추가하지 않는다.
제한점으로는 현재 단일 노드 메모리 환경에만 초점을 맞추었으며, 분산 환경에서의 인덱스 복제·파티셔닝 비용은 다루지 않는다. 향후 연구에서는 이러한 분산 최적화와 동적 재구성을 탐색할 계획이다.
댓글 및 학술 토론
Loading comments...
의견 남기기