12.1.4 결정론적 SQL 오라클이 해결해야 할 주요 과제: 비결정적 출력과 실행 환경의 통제
데이터베이스 엔진(RDBMS) 자체를 최종 채점자로 기용하는 ’실행 결과 비교 오라클(Execution Result Comparison Oracle)’의 철학은 대수학적, 이론적으로 완벽에 가깝다. 하지만 이 우아한 이론을 실제 엔터프라이즈 MLOps 및 CI/CD 파이프라인 상에 물리적 코드로 구현하려고 시도하는 첫날, 엔지니어들은 예상치 못한 거대한 기술적 진흙탕에 빠지게 된다.
바로 관계형 데이터베이스(RDBMS) 시스템과 SQL이라는 언어가 근본적으로 내포하고 있는 미묘한 **‘비결정적(Non-deterministic) 작동 특성’**들 때문이다. 이 특성들을 오라클 아키텍처 내부에서 폭력적으로 강제 통제(Enforce Control)하고 정규화(Normalize)하지 않는다면, 이 값비싼 오라클은 순식간에 통계적 신뢰성을 잃고 무너져버린다.
1. 정렬(Ordering) 규칙 부재로 인한 반환 텐서의 비결정성
가장 높은 빈도로 오라클의 채점 파이프라인을 붕괴시키는 원흉은 바로 ORDER BY의 묵시적 비결정성이다.
관계형 대수학(Relational Algebra)의 기본 표준에 따르면, ORDER BY 절이 명시적으로 존재하지 않는 모든 SELECT 쿼리는 반환되는 레코드(Row)들의 물리적 순서를 절대 보장하지 않는다.
- 정답 쿼리 실행 결과:
[Row A, Row B, Row C]순서로 하드디스크 블록에서 인출 - AI 쿼리 실행 결과 (다른 JOIN 방식 사용):
[Row B, Row C, Row A]순서로 인출
이 두 결과 텐서(Tensor)는 교집합을 가지는 완벽한 수학적 집합(Set) 관점에서는 100% 동일(True)하지만, 이 두 JSON 배열(Array)을 단순히 인덱스로 == 비교하는 무식한 파이썬 스크립트 오라클을 짜놓았다면 이는 가차 없이 ’오답(False)’으로 채점되는 재앙이 벌어진다. 따라서 오라클 비교 엔진은 반드시 들어온 결과 텐서들을 메모리상에서 다차원 정렬(Multi-dimensional Sort)하여 억지로 순서를 깎아 맞추는 강력한 정규화(Normalization) 전처리 파이프라인을 내장해야만 한다.
2. 부동소수점과 자료형 캐스팅(Type Casting)의 동치성 불일치
숫자와 날짜 타입의 미세한 출력 불일치 역시 오라클을 괴롭히는 거대한 과제다.
데이터베이스 환경 설정과 파싱 과정에 따라, 정답 쿼리는 소수점을 방어하여 정수형 50을 반환했는데, AI가 작성한 쿼리(CAST나 나눗셈 포함)는 50.000이나 5.0E1이라는 부동소수점(Float) 텐서를 반환할 수 있다. 날짜의 경우도 2026-12-25와 2026-12-25 00:00:00으로 제각각 반환된다.
따라서 오라클의 비교 알고리즘(Comparator)은 어리석은 문자열 하드 매칭(Hard Matching) 프레임워크를 버리고, 반환된 객체의 메타데이터(Schema)를 참조하여 이 수치들이 수학적으로 완전히 **동치(Semantic Equivalence)**인지를 판별해 내는 관대한 ‘허용 오차(Tolerance)’ 및 타입 캐스팅 비교 로직을 탑재해야 한다.
3. 격리된 샌드박스의 무결성과 상태 오염(State Corruption) 방어
엔지니어링적으로 가장 막대한 컴퓨팅 파워가 소모되는 과제는 바로 실행 환경(State)의 완벽한 물리적 통제다.
채점장으로 쓰이는 평가 데이터베이스는, 하루에 수십만 건의 예측 쿼리가 폭격기처럼 쏟아져도 0.001초 단위로 **항상 똑같은 데이터 초기 상태(Initial State)**를 보장하는 ’극강의 결정론적 샌드박스(Deterministic Sandbox)’여야만 한다.
만약 악의적인 사용자나 심한 환각에 빠진 LLM 구조체가 생성해 낸 무자비한 DROP TABLE Users; 나 UPDATE Sales SET Amount=0; 같은 파괴적인 DML/DDL 쿼리가 오라클 런타임에 유입되어 그대로 실행(Commit)되어 버린다면 어떻게 될까? 그 채점장(DB)의 상태는 즉시 오염(State Corruption)되며, 그 이후로 줄을 서서 런타임에 진입하는 수백만 개의 나머지 쿼리 채점 결과들은 전부 다 쓰레기(Garbage) 오답으로 전락하게 된다.
결론적으로, 진정으로 신뢰할 수 있는 엔터프라이즈급 SQL 오라클 시스템을 구축해 낸다는 것은 단순히 파이썬으로 DB에 연결 접속(Connection)하는 수준의 스크립트 장난이 아니다. 그것은 고도로 격리된 분산 트랜잭션 롤백(Rollback) 메커니즘, 매 쿼리마다 초기화되는 초경량 읽기 전용 인메모리 복제본(Read-Only In-memory Replicas), 인젝션 방어, 그리고 결과 텐서의 정교한 대수학적 정규화 로직 전체를 엮어 직조해 내는 묵직하고 거대한 인프라 소프트웨어 엔지니어링 그 자체이다.