İnsan tarafından okunabilir
Geliştiriciler için sezgisel SQL benzeri yazım sözdizimi ve araçlar için yalın YAML/JSON sorgu ağacı (TugQT) — herkes inceleyebilir, anlayabilir ve düzenleyebilir.
TugQL, taşınabilir ve insan tarafından okunabilir bir sorgu dilidir. Sade, SQL benzeri metin sözdizimini, düz YAML/JSON olarak serileştirilen 1:1 kayıpsız yapılandırılmış sorgu ağacı (TugQT) ile birleştirir. Bir sorguyu kaydedin, elle düzenleyin, versiyon kontrolünde diff alın ve herhangi bir veri kaybı yaşamadan farklı veritabanlarında çalıştırın.
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, bir sorguyu depolayabileceğiniz, inceleyebileceğiniz ve sürümlendirebileceğiniz anlaşılır ve diff alınabilir bir belgeye dönüştürür — her arka uçta taşınabilir.
Geliştiriciler için sezgisel SQL benzeri yazım sözdizimi ve araçlar için yalın YAML/JSON sorgu ağacı (TugQT) — herkes inceleyebilir, anlayabilir ve düzenleyebilir.
Kanonik sadeleştirme işlemi, kaynakla yapısal olarak tamamen aynı sorguları yeniden oluşturur. Hiçbir ifade sessizce atılmaz veya bozulmaz.
Tam JSON Schema doğrulaması (draft 2020-12) ile yayınlanmıştır. Her dildeki herhangi bir araç, sorguyu çalıştırmadan önce yapısını doğrulayabilir.
Kanonik biçimlendirme ve deterministik ağaç serileştirme. Kaydedilen sorgular Git'te temiz diff verir ve standart kod gibi incelenir.
TugQL, farklı veritabanları arasında ortak olan yetenekleri sunar: tek bir sorgu Git, SQLite, PostgreSQL veya Firestore üzerinde değişmeden çalışır.
Bilinçli olarak hedeflenmiş, iyi tanımlanmış taşınabilir bir alt küme. Taşınabilir olmayan yapılar tehlikeli şekilde dönüştürülmek yerine açıkça reddedilir.
TugQL metin sözdizimiyle yazın; TugQT yapılandırılmış sorgu ağacı olarak saklayın veya paylaşın.
Kullanıcılar sorguları açık, derli toplu ve SQL benzeri TugQL metin sözdizimiyle yazar. Arka planda ayrıştırıcı, makine tarafından okunabilen kanonik TugQT (Tug Query Tree) temsilini üretir.
Her düğüm sözdizimi ile ağaç arasında deterministik olarak eşlenir. Hatalı girişler veya şema ihlalleri, kaynak metindeki tam konumu belirten açıklayıcı tanılama mesajları döndürür.
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
Kapsamdaki her sorgu düğümünün tanımlanmış yapılandırılmış bir karşılığı vardır.
| Sorgu düğümü | TugQT karşılığı |
|---|---|
| Kök koleksiyon üzerinde From | from: { name, alias? } |
| Sütun | columns: altındaki öğe — ifade ve isteğe bağlı as: |
| Karşılaştırma | { op, left, right } |
| Grup koşulu (And) | { and: [ … ] } |
| Grup koşulu (Or) | { or: [ … ] } |
| Sıralama ifadesi | orderBy: altındaki öğe — ifade ve isteğe bağlı desc: true |
| Alan başvurusu | { field: <isim> } |
| Sabit değer | { value: <skaler> } |
| Dizi | { values: [ <skaler>, … ] } |
| İşleç | ==, In, >, >=, <, <= |
| Limit / Offset | limit: <int> / offset: <int> |
Bir ifade, field, value veya values alanlarından yalnızca birini belirterek alan başvurusu, sabit veya dizi ayrımını yapar.
Tekil koleksiyonlar veya birleşimler, seçilen sütunlar, filtreler, sıralama ve sayfalama. Kapsam dışındaki her şey reddedilir — asla sessizce yok sayılmaz.
Koleksiyon kaynakları · seçilen sütunlar · karşılaştırma ve And/Or grupları · sıralama · limit / offset · join birleştirmeleri · parametreler. İfadeler: alan, sabit, dizi. İşleçler: ==, !=, In, >, >=, <, <=, And, Or.`
Sınırsız kartezyen çarpımlar · veritabanına özel dialekt sözdizimleri · şema dışı tipsiz veri değiştirme işleçleri. Serileştirme, sorgu anlambilimini kaybetmektense hata verir.
resolve(parse(text)) deterministik sorgu ağaçları üretir; serileştirme kanoniktir, bu sayede kayıtlı sorgular sürümler arasında temiz diff verir.
TugQL, taşınabilir sorgu yüzeyidir. Kendisini alttaki herhangi bir depolama sistemine uyarlayan bir veri soyutlama katmanına (DALgo) bağlanır.
TugQL taşınabilir alt kümeyi ifade ettiği için, bir kez yazılan bir sorgu Git deposu (inGitDB), SQLite, PostgreSQL veya Firestore üzerinde tamamen aynı şekilde çalışır.
Bu dil, yayınlanmış şeması ve Go ile TypeScript uygulamaları bulunan açık bir şartnamedir.
DataTug, geliştiricilerin veritabanı şemalarını keşfetmelerine, sorgular oluşturup çalıştırmalarına ve sonuçları analiz etmelerine yardımcı olur. TugQL ve TugQT ile sorgu sözleşmeleri geliştirmeleri devam etmektedir. DataTug'ın arkasındaki araçları keşfedin.
TugQL, bir sorguyu birinci sınıf ve incelenebilir bir yapıya dönüştürür — insanlar tarafından okunabilir, araçlarla doğrulanabilir ve tüm arka uçlarda taşınabilir.