사람이 읽기 쉬운 형태
사람을 위한 직관적인 SQL 유사 구문과 도구를 위한 순수 YAML/JSON 쿼리 트리(TugQT)를 제공하여 누구나 검사, 이해, 수정할 수 있습니다.
TugQL은 이식 가능하고 사람이 읽기 쉬운 쿼리 언어입니다. 깔끔한 SQL 유사 텍스트 구문과 일반 YAML/JSON으로 직렬화되는 1:1 무손실 구조화 쿼리 트리 표현(TugQT)을 결합했습니다. 쿼리를 저장하고, 직접 수정하고, 버전 관리에서 diff를 확인하며, 여러 백엔드에서 손실 없이 실행할 수 있습니다.
from users as u
select
u.name,
u.age as years
where
u.age >= 18
and (u.status in ('active', 'pending') or u.country == 'US')
order by
u.name,
u.age desc
limit 10
offset 20
TugQL은 쿼리를 저장, 검토, 버전 관리할 수 있는 명확하고 diff 확인이 쉬운 문서로 변환합니다. 모든 백엔드에서 이식 가능합니다.
사람을 위한 직관적인 SQL 유사 구문과 도구를 위한 순수 YAML/JSON 쿼리 트리(TugQT)를 제공하여 누구나 검사, 이해, 수정할 수 있습니다.
표준 정규화 처리를 통해 원본과 구조적으로 동일한 쿼리를 온전히 복원합니다. 조용히 삭제되거나 왜곡되는 부분이 전혀 없습니다.
완전한 JSON Schema(draft 2020-12) 검증을 제공합니다. 어떤 언어의 도구든 실행 전 쿼리 구조의 유효성을 검증할 수 있습니다.
표준 형식과 결정론적 트리 직렬화를 지원합니다. 저장된 쿼리는 Git에서 깔끔한 diff를 보여주며 일반 코드처럼 리뷰할 수 있습니다.
여러 백엔드에서 공통으로 지원하는 기능만 선별하여, 하나의 쿼리가 Git, SQLite, PostgreSQL, Firestore에서 수정 없이 그대로 실행됩니다.
이식 가능한 핵심 서브셋에만 의도적으로 집중했습니다. 비표준 문법은 무리하게 변환하지 않고 명시적으로 거부합니다.
TugQL 텍스트 구문으로 작성하고, 구조화된 TugQT 쿼리 트리로 저장하거나 교환하세요.
작성자는 읽기 쉽고 간결한 SQL 스타일의 TugQL 텍스트 구문으로 쿼리를 작성합니다. 내부적으로 파서는 기계가 읽을 수 있는 표준 표현인 TugQT(Tug Query Tree)를 생성합니다.
모든 노드는 구문과 트리 간에 결정론적으로 매핑됩니다. 잘못된 입력이나 스키마 위반 시 정확한 소스 위치와 함께 명확한 진단 정보를 반환합니다.
from:
name: users
columns:
- field: name
- field: age
as: years
where:
and:
- op: '>='
left:
field: age
right:
value: 18
- or:
- op: In
left:
field: status
right:
values:
- active
- pending
- op: ==
left:
field: country
right:
value: US
orderBy:
- field: name
- field: age
desc: true
limit: 10
offset: 20
지원 범위 내의 각 쿼리 노드는 명확히 정의된 구조화된 표현을 가집니다.
| 쿼리 노드 | TugQT 표현 |
|---|---|
| 루트 컬렉션 대상 From | from: { name, alias? } |
| 컬럼 | columns: 하위 항목 — 식 및 선택적 as: |
| 비교 | { op, left, right } |
| 그룹 조건 (And) | { and: [ … ] } |
| 그룹 조건 (Or) | { or: [ … ] } |
| 정렬 식 | orderBy: 하위 항목 — 식 및 선택적 desc: true |
| 필드 참조 | { field: <name> } |
| 상수 | { value: <scalar> } |
| 배열 | { values: [ <scalar>, … ] } |
| 연산자 | ==, In, >, >=, <, <= |
| Limit / Offset | limit: <int> / offset: <int> |
식은 field, value, values 중 정확히 하나만 설정하여 필드 참조, 상수, 배열을 구분합니다.
단일 컬렉션 또는 조인 트리, 선택 컬럼, 필터 식, 정렬 및 페이징. 범위를 벗어난 구문은 명시적으로 거부되며 조용히 누락되지 않습니다.
컬렉션 소스 · 선택 컬럼 · 비교 및 And/Or 그룹 트리 · 정렬 · limit / offset · 조인 · 파라미터. 식: 필드 참조, 상수, 배열. 연산자: ==, !=, In, >, >=, <, <=, And, Or.
제한 없는 카티션 곱 · 데이터베이스 전용 벤더 구문 · 스키마 범위를 벗어난 비타입 수정 연산자. 쿼리 의미가 손실되기 전에 직렬화가 오류를 발생시킵니다.
resolve(parse(text))는 결정론적 쿼리 트리를 생성합니다. 직렬화가 표준화되어 있어 저장된 쿼리가 버전 간에 명확한 diff를 제공합니다.
TugQL은 이식 가능한 쿼리 인터페이스입니다. 하위 스토리지에 맞게 쿼리를 적응시키는 데이터 추상화 계층(DALgo)과 연결됩니다.
TugQL은 이식 가능한 서브셋만 표현하므로, 한 번 작성된 쿼리는 Git 저장소(inGitDB), SQLite 파일, PostgreSQL 데이터베이스, Firestore 어디서나 일관되게 동작합니다.
이 언어는 공개된 스키마와 Go 및 TypeScript 구현체를 갖춘 오픈 사양입니다.
DataTug는 개발자가 데이터베이스 스키마를 탐색하고, 쿼리를 작성 및 실행하며, 결과를 분석할 수 있도록 돕습니다. TugQL 및 TugQT 기반 쿼리 계약 연동이 지속적으로 진행 중입니다. DataTug의 도구 살펴보기.
TugQL은 쿼리를 사람이 읽을 수 있고, 도구로 검증되며, 모든 백엔드에서 동작하는 일급 아티팩트로 만들어줍니다.