피드로 돌아가기
Dev.toDatabase
원문 읽기
SQL 텍스트를 Catalog 기반의 의미론적 Query Tree로 변환하는 2단계 파싱 아키텍처
1.2 Parser and Analyzer: How SQL Gets Its Meaning
AI 요약
Context
클라이언트가 전송한 단순 텍스트 형태의 SQL 문장을 데이터베이스가 실행 가능한 구조로 해석해야 하는 필요성 대두. 단순 구문 분석만으로는 테이블 존재 여부나 데이터 타입의 정합성을 검증할 수 없는 한계 존재.
Technical Solution
- Flex 기반 Lexer와 Bison 기반 Grammar를 활용해 SQL 문자열을 문법 구조 중심의 Raw Parse Tree로 변환
- Catalog 시스템을 통한 메타데이터 조회를 통해 식별자의 실제 대상과 OID를 매핑하는 Semantic Analysis 수행
- 데이터 타입 체크 및 Function Overload 해결을 통해 텍스트에 실제 의미를 부여하는 과정 설계
- 분석 완료 후 Rewriter, Planner, Executor가 공통으로 사용하는 표준 입력 포맷인 Query Tree 생성
- 유저 데이터와 메타데이터를 모두 일반 테이블로 처리하는 Unified Metadata Management 구조 채택
실천 포인트
- 복잡한 DSL 설계 시 문법 검증(Syntactic)과 의미 검증(Semantic) 단계를 분리하여 유지보수성 확보 - 시스템 설정이나 스키마 정보를 Catalog 테이블로 관리하여 메타데이터 접근 로직을 단일화 - 후속 처리 단계(Optimizer, Executor)의 결합도를 낮추기 위해 표준화된 중간 표현식(Intermediate Representation) 정의