Automating Database-Native Function Code Synthesis with LLMs
이 논문은 데이터베이스 커널 내 함수 생성의 복잡성과 오류 위험을 해결하기 위해, 함수 특성 분석, 구조화된 계획 수립, 하이브리드 채우기 모델, 그리고 3 단계 점진적 검증을 통합한 LLM 기반 자동화 시스템 'DBCooker'를 제안하고 SQLite, PostgreSQL, DuckDB 에서 기존 방법보다 평균 34.55% 높은 정확도로 새로운 네이티브 함수를 성공적으로 생성함을 보여줍니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
🍳 DBCooker: 데이터베이스를 위한 '요리 사관학교'
상상해 보세요. **데이터베이스 (PostgreSQL, SQLite 등)**는 거대한 고급 레스토랑입니다. 이 레스토랑에는 이미 '날짜를 계산하는 기능', '숫자를 더하는 기능' 같은 수천 가지의 **레시피 (기능)**가 있습니다. 하지만 비즈니스가 변하거나 새로운 요구가 생기면, 주방장 (개발자) 들은 새로운 레시피를 직접 만들어야 합니다.
문제는 이 레시피가 단순히 "소금 1 큰술"이라고 적는 게 아니라, 수백 개의 다른 레시피를 참조하고, 특정 그릇에 담아야 하며, 식당 규칙 (데이터베이스 내부 규칙) 을 철저히 지켜야 한다는 점입니다.
기존의 인공지능 (LLM) 들은 이 일을 할 때 다음과 같은 실수를 자주 했습니다:
- 환각 (Hallucination): 존재하지 않는 재료를 쓰거나, 없는 레시피를 만들어냅니다.
- 규칙 무시: 식당의 특정 그릇 (파일) 에 넣어야 할 음식을 다른 그릇에 넣습니다.
- 비효율: 모든 재료를 처음부터 다 사오려다 시간을 다 낭비합니다.
이때 등장한 DBCooker는 이 문제를 해결하기 위해 고안된 초고급 자동 요리 시스템입니다.
🛠️ DBCooker 의 3 가지 핵심 비법
DBCooker 는 단순히 "요리해줘"라고 말만 하는 게 아니라, 3 단계의 정교한 과정을 거칩니다.
1. 재료 분석가 (Function Characterization)
비유: "이 요리를 하려면 어떤 재료가 필요한지, 어떤 기존 레시피를 참고해야 하는지 미리 조사하는 역할"
기존 AI 는 "소금"이라고만 말하면 소금 통을 뒤지다가 엉뚱한 소금 (다른 파일의 함수) 을 가져옵니다. 하지만 DBCooker 는 먼저 **레스토랑의 재고 목록 (카탈로그)**과 **레시피 책 (문서)**을 정밀하게 분석합니다.
- 이 요리를 위해 **정확히 어떤 그릇 (파일)**에 담아야 하는지 파악합니다.
- 이미 있는 **유사한 레시피 (참조 함수)**를 찾아내어, 처음부터 다 만들지 않고 일부만 수정해서 쓰도록 합니다. (예: "이미 있는 '소스 만들기' 레시피를 가져와서 '간장'만 바꾸자")
2. 요리 계획 및 채우기 (Synthesis Operations)
비유: "완벽한 레시피 초안을 짜고, 빈칸만 채우는 방식"
기존 AI 는 종이를 켜고 처음부터 끝까지 글을 쓰려다 실수합니다. DBCooker 는 빈칸 채우기 (Fill-in-the-blank) 방식을 사용합니다.
- 가상 레시피 (Pseudo-plan) 작성: "이 요리는 A 단계, B 단계, C 단계로 나뉘고, A 단계에서는 기존 레시피 X 를 참고해야 한다"는 구체적인 청사진을 먼저 그립니다.
- 빈칸 채우기: AI 는 이 청사진의 빈칸 부분만 채웁니다. 이렇게 하면 엉뚱한 재료를 넣거나 규칙을 위반할 확률이 급격히 줄어듭니다.
- 적응형 전략: 만약 빈칸 채우기가 계속 실패하면, "아, 이 방식은 안 되네"라고 판단하고 처음부터 다시 요리하는 모드로 전환합니다.
3. 3 단계 맛보기 (Three-Stage Validation)
비유: "요리사가 맛을 본 후, 셰프가 확인하고, 마지막에 손님에게 주는 과정"
요리가 완성되면 바로 식당에 내지 않고 3 번의 검사를 거칩니다.
- 문법 검사 (Syntax): "소금"을 "설탕"으로 잘못 적었는지 확인합니다.
- 규칙 준수 검사 (Compliance): "이 요리는 2 번 테이블에 가야 하는데 3 번 테이블에 갔나?"처럼 식당 규칙을 지키는지 확인합니다.
- 실제 맛보기 (Semantic): 실제로 요리를 먹어보고 (테스트 실행), "맛이 제대로 나가는가?"를 확인합니다.
이 과정을 거치면서 실수가 발견되면, AI 는 되돌아가서 (Rollback) 다시 고칩니다.
🚀 왜 이것이 중요한가요? (결과)
이 시스템은 SQLite, PostgreSQL, DuckDB 같은 주요 데이터베이스에서 실험을 해보았습니다.
- 기존 AI (Claude Code 등): 100 개의 요리를 시키면 30~40 개 정도만 제대로 만들어냈습니다. 나머지는 재료를 잘못 쓰거나 그릇을 잘못 골라 실패했습니다.
- DBCooker: 100 개 중 약 79 개를 완벽하게 만들어냈습니다. (기존보다 정확도가 34.5% 이상 향상됨)
가장 놀라운 점은, **SQLite 에 아예 없던 새로운 기능 (예: '월요일의 마지막 날'을 알려주는 기능 등)**을 다른 데이터베이스의 기능을 참고해서 완전히 새로 만들어냈다는 것입니다.
💡 요약
이 논문은 **"인공지능이 코드를 짤 때, 단순히 글을 쓰는 것이 아니라 데이터베이스라는 복잡한 주방의 규칙을 이해하고, 기존 레시피를 활용하며, 철저한 검사를 거치게 해야 한다"**는 것을 증명했습니다.
DBCooker 는 마치 숙련된 요리 보조 (메이드) 가 주방장 (AI) 을 도와주어, 실수를 줄이고 더 빠르고 정확한 요리를 만들어내는 시스템이라고 볼 수 있습니다. 이제 개발자들은 복잡한 데이터베이스 기능 구현에 시간을 쏟지 않아도, DBCooker 가 대신 해줄 수 있게 되었습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.