본문으로 건너뛰기

LangGraph로 legacy 테이블을 안전한 차원 모델로 재설계

deterministic Python과 제한된 ReAct agent로 legacy 테이블을 star schema와 호환 view로 전환하는 LangGraph pipeline이다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 pipeline은 legacy warehouse 테이블의 transformation logic을 역설계해 dims와 facts로 구성된 star schema를 만들고, 기존 소비자가 계속 사용할 backward-compatible view와 migration DDL을 생성한다. ingest부터 validation, 세 겹의 review, human approval, FK 의존성 기반 task decomposition, sandbox 코딩, 결과 검사까지의 control flow는 LangGraph와 deterministic Python으로 고정된다. LLM은 data modeling과 개별 coding처럼 reasoning이 필요한 단계에만 사용하며, Pydantic contract와 extra="forbid"가 출력 구조를 강제하고 별도 reviewer model이 설계 판단을 맡는다. 다만 legacy 결과와의 독립적인 row-count·metric reconciliation gate, 인프라 오류와 모델 오류의 retry budget 분리는 아직 남은 과제다.

실용적 조언

  • 미리 정할 수 있는 순서와 의존성은 Python node, edge, topological sort로 고정하고 LLM에는 실제 판단이 필요한 작업만 넘긴다. 에이전트 출력은 Pydantic model과 extra="forbid"로 파싱하며, 구조가 맞지 않으면 별도의 LLM 검증 없이 validation failure로 종료한다. 이 구분은 누락된 단계와 prompt/schema drift를 재현 가능한 오류로 바꾸는 데 유용하다.
  • 에이전트의 교정 경로는 호출마다 실제 입력으로 사용되는 live channel 하나로만 유지한다. modeling agent에는 correction transcript를 누적하고 coding agent에는 single-shot correction을 소비·삭제하는 식으로 역할별 정책을 명시한다. 로그나 observability side channel에 기록한 교정은 실행 입력으로 자동 전달되지 않으므로 별도 경로로 만들지 않는 편이 안전하다.
  • 데이터 변경 agent는 SELECT 범위와 쓰기 권한을 분리하고, CREATE·INSERT·MERGE·DROP은 thread별 sandbox schema에서만 허용한다. production 변경은 DDL 파일로 반환하고 ERD approval 단계와 clarification·blocker 단계에서 pipeline을 중단한다. 여기에 legacy 테이블과 row count·metric을 비교하는 독립 reconcile gate를 추가하면 현재 self-check와 human review에 남은 검증 부담을 줄일 수 있다.

섹션별 상세

01
작성자는 wide하고 비정규화된 legacy warehouse 테이블을 Kimball 방식의 dims와 facts로 재구성하면서 downstream consumer의 변경을 막는 문제를 다뤘다. 입력 테이블의 transformation logic을 역설계하고 column mapping, FK, join 전략을 포함한 target star schema를 만든 뒤, 기존 출력 형태를 그대로 재현하는 backward-compatible view와 incremental MERGE notebook·DDL을 생성한다. 전체 실행은 LangGraph가 맡지만, 사전에 정해진 순서와 의존성은 Python graph node와 edge로 고정해 에이전트가 단계를 건너뛰지 못하게 했다.
02
작성자의 핵심 설계는 workflow와 agent를 분리하는 것이다. ingest, task decomposition, topological sorting, schema validation, retry budget, 결과 검사는 deterministic Python으로 처리하고, 실제 설계 추론과 단일 코딩 작업만 두 개의 소형 ReAct sub-agent에 맡겼다. 따라서 거대한 orchestrator prompt가 control flow를 지시하는 대신 typed code가 통과·실패를 결정하며, 각 실패 지점은 원인을 담은 terminal node로 끝난다.
03
가장 구체적인 검증 구조는 세 겹의 review다. Layer 1은 Python set operation으로 컬럼 존재 여부, join reachability, view completeness, unmapped 컬럼 노출 여부를 검사하고, Layer 1.5의 bounded agent는 구조화된 필드뿐 아니라 transformation notes와 join string에 숨어 있는 허위 컬럼명까지 live catalog에서 다시 조회한다. Layer 2의 별도 모델은 grain, fact·dimension 분류, FK 방향, 중간 결과 저장 필요성을 판단하며 앞선 층의 사실을 ground truth로 받아들이고, 같은 issue signature가 두 번 연속 나오면 재시도를 중단한다.
04
재시도 안정성에서는 에이전트에게 교정이 실제로 전달되는 단일 live channel이 중요하다는 경험이 공유됐다. modeling agent는 validator, reviewer, human의 교정을 transcript에 다음 human turn으로 누적하고, coding agent는 매 호출마다 소비되고 비워지는 single-shot channel을 사용한다. observability용 side channel에 쓴 교정은 에이전트에게 도달하지 않아 “agent ignored the feedback” 버그의 주요 원인이 됐으며, coding retry가 최신 교정만 보는 점과 독립적인 row-count·metric reconcile gate가 아직 없는 점은 남은 한계다.

용어 해설

스타 스키마(Star Schema)
중앙의 fact 테이블과 이를 둘러싼 dimension 테이블로 데이터를 구성하는 모델이다. 원문의 pipeline은 legacy 테이블을 차원·사실 테이블로 나누고 surrogate key와 conformed dimension을 적용한 뒤, 기존 소비자를 위해 호환 view를 유지한다.
Kimball 모델링(Kimball Modeling)
데이터의 업무 grain을 먼저 정하고 fact와 dimension을 설계하는 데이터 웨어하우스 모델링 방식이다. 원문에서는 각 컬럼을 감사 컬럼, 파생 컬럼, degenerate dimension, measure, FK lookup, attribute 순서로 분류해 설계 판단을 제한한다.
Pydantic 계약(Pydantic Contract)
모델의 출력 JSON을 Pydantic 타입으로 파싱해 허용된 필드와 구조를 강제하는 방식이다. extra="forbid"를 사용하므로 누락·추가 필드와 prompt/schema drift가 LLM의 재확인 없이 즉시 validation failure로 드러난다.
Human-in-the-Loop
자동화 pipeline의 특정 판단 지점에 사람이 승인하거나 개입하는 구조다. 원문의 시스템은 ERD가 렌더링된 approval 단계와 clarification 또는 blocker 발생 시 실행을 멈추며, production 변경은 사람이 실행할 DDL 파일로만 전달한다.

코드 예제

text
ingest (extract table name, verify it exists)
  → model (ReAct agent: proposes dimensional model as typed JSON)
  → validate (pure Python: parse + schema + semantic checks — no LLM)
  → review (3 layers, below)
  → approval (human-in-the-loop, with ERD rendered from the plan)
  → decompose (deterministic: plan → ordered coding tasks, topo-sorted by FK deps)
  → code (ReAct agent per task, sandboxed)
  → code_check (deterministic verification of every result)
  → summary (what was built + DDL the human must execute)

legacy 테이블을 입력받아 차원 모델 설계, 검증, 사람 승인, 작업 분해, sandbox 코드 생성과 결과 확인까지 처리하는 LangGraph 실행 순서다.

언급된 도구

LangGraph추천

deterministic graph node와 agent 실행 단계를 연결하는 pipeline 프레임워크

Pydantic추천

agent 출력과 pipeline state의 typed JSON contract를 검증하는 라이브러리

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 21.수집 2026. 08. 21.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.