TL;DR

  • schemagate 데모는 브라우저 탭에서 데이터베이스 연결이나 인공지능 모델 호출 없이 RLS 실행 전에 사용자가 볼 수 있는 테이블만 선택하는 방식임
  • 여섯 개의 가상 스키마에서 분석가의 질의와 payroll 역할 부여에 따라 모델 프롬프트에 포함되는 테이블이 달라지는 흐름임
  • schemagate는 스키마 객체를 선택해 전체 스키마를 모델에 전달하는 토큰을 줄이며, 260개 객체 테스트 스키마에서 97% 절감이 발생함
  • 카탈로그에 존재하지만 현재 신원에 숨겨진 객체는 순위만 낮아지는 것이 아니라 모델 프롬프트에 아예 포함되지 않음
  • Python 패키지와 MCP 서버로 자체 데이터베이스에 연결해 사용할 수 있으며, 스튜디오 실행 시 데이터가 로컬 머신 밖으로 나가지 않음

개요

  • 이 페이지는 여섯 개의 가상 예시 스키마에서 브라우저 탭만으로 실행되는 schemagate 데모임.
  • 데이터베이스에 연결되지 않으며 인공지능 모델도 호출하지 않음.
  • 실제 기능은 pip install schemagate로 설치해 자체 데이터베이스에서 실행하는 방식임.

핵심 동작

  • 사용자는 모델이 SQL을 작성하기 전에 자신이 볼 권한이 있는 테이블만 받게 됨.
  • 분석가로서 “salary by employee”를 질의한 뒤 payroll 역할을 부여하면 선택되는 테이블과 프롬프트 토큰이 달라지는 흐름임.
  • 화면에서 다음 지표를 확인할 수 있음.
  • 선택된 항목
  • 프롬프트 토큰
  • 전체 스키마 대비 절감량
  • 현재 호출자에게 숨겨진 항목

스키마 토큰 절감 효과

  • 질의 일일 횟수와 입력 토큰 100만 개당 가격을 입력하면 스키마 토큰 비용과 절감액을 계산하는 구조임.
  • 데모에는 질의량과 가격이 입력되지 않아 월간 비용과 절감액이 로 표시됨.
  • 절감 효과는 위에서 계산된 토큰 수에 사용자의 질의량과 가격을 곱하는 방식임.
  • 스키마가 클수록 절감량이 커지며, 260개 객체 테스트 스키마에서 97% 절감됨.

예시 인공지능 설명

  • 화면에 표시되는 내용은 모델이 생성한 결과가 아니라, 모델이 생성할 법한 결과를 미리 작성한 예시임.
  • 이 페이지에서는 어떤 모델도 호출되지 않음.
  • 자체 인증 키를 사용하면 cat.describe(...)를 통해 실제 설명을 생성할 수 있음.

호출자에게 숨겨진 객체

  • 해당 객체는 카탈로그에는 존재하지만 현재 신원에 대한 프롬프트에는 절대 전달되지 않음.
  • 단순히 순위가 낮아지는 것이 아니라 완전히 제외되는 방식임.

백업 및 스테이징 복사본의 순위 조정

  • 복사본은 더 짧은 문서 안에 원본과 동일한 이름 단어를 포함할 수 있음.
  • 코사인 유사도(cosine similarity)는 이런 동일한 단어 구성을 정확히 보상함.
  • 따라서 백업 및 스테이징 복사본은 자신이 복제한 객체보다 낮은 순위로 배치됨.
  • 다만 복사본의 이름을 명시적으로 지정하면 이 순위 조정이 적용되지 않음.

Python에서 사용

  • pip install schemagate로 패키지를 설치한 뒤 CatalogPrincipal을 불러와 카탈로그를 구성하는 방식임.
  • Catalog().bootstrap("postgresql://localhost/app")로 PostgreSQL 데이터베이스의 스키마를 초기화함.
  • Principal("okta:jdoe", roles={"finance"})로 호출자와 finance 역할을 지정함.
  • cat.select("revenue by month", principal=...)로 해당 주체의 권한에 맞는 객체를 선택함.

Cursor·Windsurf·MCP 클라이언트에서 사용

  • pip install 'schemagate[mcp]'MCP(Model Context Protocol) 지원을 포함한 패키지를 설치함.
  • SCHEMAGATE_DATABASE_URL=postgresql://localhost/app 환경 변수로 데이터베이스 주소를 지정함.
  • python -m schemagate.mcp_server로 MCP 서버를 실행해 Cursor, Windsurf 및 기타 MCP 클라이언트에서 사용하는 방식임.

자체 데이터베이스에서 스튜디오 실행

  • pip install schemagate로 패키지를 설치함.
  • schemagate studio --url postgresql://localhost/app으로 자체 데이터베이스를 연결한 스튜디오를 실행함.
  • 같은 페이지에서 자체 스키마를 확인할 수 있으며, 데이터가 로컬 머신 밖으로 나가지 않음.
  • 프로젝트 저장소: github.com/ashishsinha1602/schemagate
  • 라이선스: Apache-2.0
  • 개발자: Ashish Sinha