핵심 요약
데이터베이스 엔진 내부에서 직접 실행되는 네이티브 함수를 개발하는 것은 복잡한 의존성 관리와 엄격한 규칙 때문에 자동화가 매우 어려웠습니다. 이 논문은 LLM이 데이터베이스의 내부 구조와 등록 규칙을 이해하고 코드를 생성하도록 하여, 개발자가 수십 시간씩 걸리던 함수 구현 작업을 획기적으로 단축할 수 있음을 보여줍니다.
왜 중요한가
데이터베이스 엔진 내부에서 직접 실행되는 네이티브 함수를 개발하는 것은 복잡한 의존성 관리와 엄격한 규칙 때문에 자동화가 매우 어려웠습니다. 이 논문은 LLM이 데이터베이스의 내부 구조와 등록 규칙을 이해하고 코드를 생성하도록 하여, 개발자가 수십 시간씩 걸리던 함수 구현 작업을 획기적으로 단축할 수 있음을 보여줍니다.
핵심 기여
DBCooker 시스템 제안
데이터베이스 네이티브 함수의 복잡한 구성 요소를 분석하고, 내부 참조 관계를 추적하며, 적응형 오케스트레이션을 통해 코드를 자동 생성하는 최초의 LLM 기반 시스템이다.
함수 특성 분석 모듈 개발
공식 문서와 시스템 카탈로그에서 선언 정보를 추출하고, 정적 분석을 통해 함수 단위 간의 의존성 및 재사용 가능한 참조 단위를 식별한다.
3단계 점진적 코드 검증 체계
단일 파일의 Syntax 체크, 다중 파일 통합 및 빌드 규칙 준수를 확인하는 Compliance 체크, 그리고 LLM 생성 SQL을 통한 Semantic 검증을 수행한다.
적응형 도구 오케스트레이션
함수의 복잡도에 따라 LLM이 적절한 도구를 선택하고 실행 순서를 동적으로 결정하며, 과거의 성공적인 작업 경로를 메모리에 저장하여 재활용한다.
핵심 아이디어 이해하기
데이터베이스 엔진의 함수는 단순히 로직만 구현하는 것이 아니라, 엔진의 시스템 카탈로그(pg_proc 등)에 등록되어야 하며 내부의 수많은 매크로와 유틸리티 함수를 정확히 참조해야 작동한다. 기존의 일반적인 코드 생성 모델은 이러한 '데이터베이스 내부 맥락'을 알지 못해 컴파일조차 되지 않는 코드를 생성하는 한계가 있었다.
DBCooker는 이 문제를 해결하기 위해 함수 구현을 '빈칸 채우기(Fill-in-the-blank)' 문제로 재정의한다. 먼저 데이터베이스의 전체 코드 그래프를 분석하여 해당 함수가 참조해야 할 필수 요소들을 미리 파악하고, 이를 바탕으로 코드의 뼈대(Skeleton)를 먼저 만든다. 이후 LLM은 이 뼈대 안의 핵심 로직 부분만 집중해서 채워 넣음으로써 생성의 불확실성을 최소화한다.
이 과정에서 LLM은 단순히 코드를 짜는 것에 그치지 않고, 생성된 코드가 데이터베이스의 엄격한 빌드 규칙을 통과하는지 스스로 검증하고 실패 시 이전 단계로 돌아가 전략을 수정하는 '적응형 오케스트레이션'을 수행한다. 결과적으로 N²에 가까운 복잡한 의존성 탐색 문제를 선형적인 단계별 해결 과정으로 변환하여 생성 정확도를 높인다.
방법론
DBCooker는 크게 세 가지 모듈로 구성된다. 첫째, Function Characterization 모듈은 데이터베이스의 시스템 카탈로그와 문서를 파싱하여 함수의 입출력 타입과 이름을 정의하는 fdec를 추출한다. 이후 정적 의존성 그래프를 생성하여 [함수 이름 → 등록 지점 탐색 → 연관된 코드 블록 추출] 과정을 거쳐 구현에 필요한 내부 참조 단위들을 식별한다.
둘째, Function Synthesis Operations는 추출된 정보를 바탕으로 실제 코드를 생성한다. Pseudo-code 기반의 코딩 플랜을 먼저 생성하고, 이를 점수로 평가하여 최적의 계획을 선택한다. 이후 Fill-in-the-Blank 모델을 사용하여 [템플릿 선택 → 핵심 로직 주입 → 확률적 최적화] 연산을 수행해 최종 코드를 완성한다. 만약 템플릿 기반 생성이 실패하면 확률 P(n) = αⁿ에 따라 점진적으로 처음부터 다시 생성하는 모드로 전환한다.
셋째, Adaptive Tool Orchestration은 모든 과정을 도구(Tool)로 추상화하여 관리한다. LLM 기반 컨트롤러가 현재 상태와 과거의 성공 궤적(Trajectory) 메모리를 참조하여 [다음 실행 도구 결정 → 결과 수신 → 상태 업데이트] 루프를 반복하며 최종 결과물을 도출한다.
주요 결과
SQLite, PostgreSQL, DuckDB 등 3대 주요 데이터베이스를 대상으로 실험한 결과, DBCooker는 기존 SOTA 모델(Claude Code 등) 대비 평균 34.55% 높은 정확도를 기록했다. 특히 PostgreSQL의 복잡한 함수 생성에서 타 모델들이 81.76%의 선언 관련 오류를 범할 때, DBCooker는 내부 참조 분석을 통해 이를 획기적으로 줄였다.
난이도별 분석에서 'HARD' 등급의 복잡한 함수에 대해 타 모델들은 20% 미만의 성능을 보였으나, DBCooker는 68.97%의 높은 성공률을 유지했다. 또한 최신 SQLite(v3.50)에 존재하지 않는 4가지 카테고리의 새로운 함수들을 성공적으로 구현하여 데이터베이스 확장 도구로서의 실용성을 입증했다.
기술 상세
DBCooker의 핵심 차별점은 데이터베이스 도메인 지식을 정적 분석과 결합한 아키텍처에 있다. 일반적인 RAG 기반 코드 생성과 달리, 시스템 카탈로그(pg_proc.dat 등)를 직접 쿼리하여 정확한 함수 시그니처를 확보한다. 또한 'Pairwise Unit Pruning' 기법을 통해 유사한 함수 그룹 내에서 공통된 코드 패턴을 추출하고 이를 LLM의 생성 가이드로 활용한다. 검증 단계에서는 ANTLR 파서를 이용한 구문 분석과 실제 데이터베이스 빌드 시스템을 연동한 런타임 테스트를 병행하여 생성된 코드의 실행 가능성을 보장한다.
한계점
논문은 대규모 코드베이스 파편화로 인해 LLM의 컨텍스트 윈도우를 초과하는 경우 핵심 단위를 식별하는 데 비용이 발생할 수 있음을 언급한다. 또한 데이터베이스 버전 변경에 따른 매크로나 시스템 정의의 변화에 대응하기 위해 지속적인 궤적 메모리 업데이트가 필요하다는 점을 한계로 꼽는다.
실무 활용
데이터베이스 엔진 개발자나 시스템 엔지니어가 새로운 SQL 함수를 추가하거나 레거시 시스템을 마이그레이션할 때 즉시 활용 가능하다.
- Oracle에서 PostgreSQL로 마이그레이션 시 호환되지 않는 고유 함수 자동 구현
- 특정 비즈니스 로직을 처리하기 위한 데이터베이스 네이티브 확장 모듈 개발
- 데이터베이스 엔진의 신규 버전 릴리스 시 대량의 내장 함수 테스트 케이스 생성 및 검증
코드 공개 여부: 공개
코드 저장소 보기키워드
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.