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로 패키지를 설치한 뒤Catalog와Principal을 불러와 카탈로그를 구성하는 방식임.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
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요