programmatūra · 5 min · 15.07.2026

dbt lint pārbauda SQL līdz 1500x ātrāk par SQLFluff — jauns linteris Fusion dzinējā

dbt Labs izlaida dbt lint — SQL linteri, kas uz 1000 līdz 10 000 modeļu lieliem projektiem strādā 40 līdz 250 reizes ātrāk par SQLFluff ar visiem kodoliem un 280 līdz 1500 reizes ātrāk par vienpavediena SQLFluff. Skaitļus dbt izmēra pret SQLFluff 4.2.1 uz Snowflake dialekta, palaižot to uz MacBook Pro ar 12 kodolu Apple M4 Pro un 24 GB atmiņas.

Tas ir svarīgi tāpēc, ka SQL linteris ir viena no tām lietām, ko datu inženieris palaiž katrā commit un katrā CI cauruļvadā. Ja pārbaude 5000 modeļu projektā aizņem minūtes, cilvēki to izslēdz. dbt liek linteri iekšā Fusion dzinējā un mēģina panākt, lai pārbaude notiktu tik ātri, ka to var atstāt ieslēgtu.

Kas tas ir un ar ko tas saderīgs

dbt lint nolasa esošo .sqlfluff konfigurācijas failu, izmanto tos pašus noteikumu kodus, ko SQLFluff (piemēram, CP01 lielo burtu politikai vai RF03 kolonnu atsaucēm), un ievēro -- noqa apspiešanas komentārus. Tas nozīmē, ka komanda, kas jau gadiem tur savu SQLFluff konfigurāciju, var to atstāt vietā un vienkārši palaist citu binārfailu.

Apspiešanas sintakse arī pārnesta pilnībā: -- noqa apklusina visu rindā, -- noqa: CP01, RF03 — tikai konkrētus noteikumus, -- noqa-file — visu failā, bet .sqlfluffignore ar .gitignore stila sintaksi izlaiž veselas mapes. Karogi ir tie, ko var gaidīt no šāda rīka: --fix automātiski labo, ko var, --rules un --exclude-rules ieslēdz vai izslēdz noteikumus, bet --changed pārbauda tikai tos failus, kas mainīti git darba kokā.

Viena vieta prasa uzmanību. dbt uzsver, ka dbt lint nav tas pats, kas dbt sqlfluff lint vecajā CLI — jaunā komanda ir daļa no Fusion, nevis apvalks ap SQLFluff. Šobrīd tā ir beta un atbalsta Snowflake, BigQuery, DuckDB, Redshift, Databricks un SparkSQL dialektus.

Kāpēc tas ir tik ātrs

Ātrumu dod tas, ka dbt lint sēž Fusion dzinējā. Fusion ir pilnīgs dbt izpildes dzinēja pārrakstījums Rust valodā. Kā raksta pati dbt, starp dbt Core un Fusion nav kopīgas nevienas koda rindas, ja neskaita adapteru makro.

Fusion parsē 30 reizes ātrāk un kompilē 2 reizes ātrāk par dbt Core, un tas saprot SQL, nevis tikai to aizvieto kā tekstu.

Šo SQL izpratni dod Apache DataFusion — Rust valodā rakstīts vaicājumu dzinējs, ko Fusion izmanto zem pārsega. Tāpēc Fusion pamana tipu neatbilstības, trūkstošas kolonnas un nederīgas funkcijas, pirms vaicājums nonāk noliktavā. Linteris to pašu parsēšanas darbu var izmantot atkārtoti, tāpēc pārbaude notiek uz jau saprastas SQL struktūras, nevis uz jaunas teksta analīzes katram noteikumam.

No kurienes radās Fusion

Fusion nav uzrakstīts no nulles dbt iekšienē. 2025. gada janvārī dbt Labs nopirka SDF Labs — startapu, kas taisīja SQL kompilatoru un konkurēja ar dbt. SDF komanda atnesa kompilatoru pieredzi: to tehniskais direktors Wolfram Schulte 20 gadus strādāja Microsoft Research un tur cita starpā būvēja Z3 teorēmu pierādītāju.

Pēc pirkuma gāja ātri. dbt Labs izlaida Fusion publiskajā beta versijā 2025. gada 28. maijā, četrarpus mēnešus pēc darījuma. dbt lint ir viens no rīkiem, kas uz šī dzinēja tagad parādās — vieta, kur kompilatora tehnoloģija dod tiešu labumu ikdienas darbā, nevis tikai skaistus etalonu skaitļus.

Ko uz to atbild SQLFluff

SQLFluff, pret ko dbt mēra, arī kustas Rust virzienā. SQLFluff 4.0 ir pirmais laidiens ar izvēles Rust rutīnām — instalācija ar sqlfluff[rs] tās ievelk klāt. Tātad Python valodā rakstītais linteris nemēģina noturēties tikai uz Python; tas pārceļ karstākos gabalus uz Rust, lai samazinātu plaisu.

Praktiskā izvēle datu komandai nav vienkārša. SQLFluff ir atvērtā koda, palaižams jebkur un neatkarīgs no dzinēja. dbt lint ir sasiets ar Fusion un tā licenci, tāpēc ātrums nāk kopā ar piesaisti dbt ekosistēmai. Komandai, kas jau pāriet uz Fusion, iebūvētais linteris ir dabisks papildinājums; komandai, kas grib turēt rīkus atsevišķus, SQLFluff paliek vienīgā versija, kas nav piesaistīta konkrētam dzinējam.

Ko tas maina ikdienā

Galvenā atšķirība ir tā, vai linteri var atstāt ieslēgtu visur. Ja pārbaude 10 000 modeļu projektā aizņem sekundes, to var palaist uz katra saglabāta faila redaktorā, uz katra commit ar --changed un CI solī bez tā, ka izstrādātāji sāk sūdzēties par gaidīšanu. Vai SQL stils projektā tiešām tiek ievērots, izšķir ātrums, ar kādu pārbaude notiek.

dbt saka, ka turpmāk sekos jaunākajai SQLFluff noteikumu specifikācijai, tātad noteikumu kopa nedivergēs. Beta statuss nozīmē, ka daļa uzvedības vēl var mainīties, bet konfigurācijas un noteikumu kodu saderība jau tagad ļauj to izmēģināt uz esoša projekta bez pārrakstīšanas.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie