16. jūlijā iznāca dbt Core 1.12.0 — stabils laidiens, kurā ir iebūvēts jaunā, Rustā pārrakstītā dzinēja parsētājs. Datu inženieris tagad var palaist vienu komandu, dbt parse --use-v2-parser, un uzzināt, vai viņa projekts strādās uz dbt Core 2.0, pirms notiek pati pāreja. Tas ir tilts uz lielāko pārmaiņu dbt vēsturē: visa rīka pamatu pārrakstīšanu no Python uz Rust.
dbt (data build tool) transformē datus noliktavā ar SQL un YAML modeļiem. Līdz šim tā kodols bija rakstīts Python valodā. Versija 2.0, kuras ceturtais alfa laidiens (v2.0.0-alpha.4) iznāca 6. jūlijā, ir pilnīga pārrakstīšana Rustā. dbt Labs to apraksta kā katras esošās uzvedības atkārtojumu jaunā valodā — tā, lai vecie projekti strādātu tāpat, tikai ātrāk.
Viens dzinējs divu vietā
Galvenā izmaiņa nav redzama lietotāja komandrindā. Līdz šim dbt Labs uzturēja divus atsevišķus produktus: atvērtā koda Python Core un komerciālo Fusion dzinēju. Versijā 2.0 tie sanāk kopā — viens Rustā rakstīts dzinējs baro gan Core, gan Fusion distribūciju. Pašā projekta ceļakartē to formulē kā «viena virtuļa, nevis divu» pieeju: nav vairs atsevišķa valodas slāņa un atsevišķa dzinēja slāņa.
Tā ir beat-for-beat pārrakstīšana no dbt Core Rustā, saderīga ar katru esošo uzvedību. Viss kods ir licencēts ar Apache 2.0.
Licence te ir svarīga detaļa. dbt Core 2.0 paliek Apache 2.0 — pilnīgi atvērts kods. Fusion binārais fails, kas agrāk nāca ar ierobežojošāku ELv2 licenci, tagad ir brīvāk izplatāms, un to var lietot arī trešās puses. Priekšskatījuma laikā projektam pienesumu deva ap 300 kopienas dalībnieku, un dbt Labs saka, ka šis modelis turpināsies.
Kāpēc Rust
Pirmais un konkrētākais ieguvums ir parsēšanas ātrums. dbt Labs raksta par jūtamiem parsēšanas laika uzlabojumiem, īpaši uz lielākajiem projektiem, kur tūkstošiem modeļu Python versijā parsēšanu velk garumā. Skaitliskus etalonus vēl neviens publiskajos dokumentos nav ielicis, tāpēc te jāgaida GA versija.
Otrais ieguvums ir stingrāka valodas specifikācija. Vecajā Python versijā nekas neapturēja lietotāju, kurš YAML failā ierakstīja desciptin īstā description vietā — dbt to klusi ignorēja. Jaunajā specifikācijā šāda pārrakstīšanās kļūst neiespējama; parsētājs to noķer uzreiz.
Trešais ieguvums skar instalāciju. Rustā rakstītais dbt nāk kā viens binārais fails, tāpēc atkrīt cīņa ar Python virtuālajām vidēm un atkarību konfliktiem. Kas gadiem ilgi ir mocījis komandas, kuras uztur vairākus dbt projektus uz vienas mašīnas.
Parquet artefakti un jauni adapteri
Versija 2.0 maina arī to, kā dbt glabā savus metadatus. Lielo JSON failu vietā (manifest, catalog) nāk Parquet artefakti, kurus var tieši vaicāt caur DuckDB. Uz šiem artefaktiem balstās arī pārtaisītā lokālās dokumentācijas pieredze, kas tagad mērogojas uz jebkura izmēra projektu, nevis lūst uz lieliem manifestiem.
Adapteru — savienotāju ar konkrētām datu noliktavām — izstrāde arī mainās. Jaunie adapteri balstās uz ADBC un Apache Arrow ekosistēmu, kas datu inženierim, kurš raksta savu adapteri kādai eksotiskai noliktavai, dod skaidrāku ceļu nekā vecais Python interfeiss.
Kā pāriet
dbt Labs iesaka konservatīvu ceļu. Pirmais solis nav uzreiz uzstādīt 2.0, bet gan pāriet uz 1.12 — tieši to laidienu, kas iznāca 16. jūlijā. Tajā ir Fusion parsētājs, ar ko var pārbaudīt saderību. Palaid dbt parse --use-v2-parser; ja projekts parsējas bez kļūdām, pāreja būs droša. Sarežģītākiem gadījumiem ir dbt-autofix pakotne un atsevišķa aģenta prasme versiju jaunināšanai.
1.12.0 ir arī pats par sevi liels laidiens ar lūstošām izmaiņām: noklusētie karogu iestatījumi tagad ir ieslēgti, MAXIMUM_SEED_SIZE_MIB kļuvis konfigurējams, un packages.yml un dependencies.yml tagad atbalsta privātas git pakotnes. Release candidate versijas tam nāca visu jūliju sākot ar 7. jūliju.
Kam pāreja steidzama nav, tam nekas nespiež. Python bāzētais dbt Core 1 kods paliek pieejams PyPI un GitHub, un 1.12 zaru dbt Labs turpinās ielāpot. Versija 2.0 pagaidām ir alfa stadijā — 6. jūlijā izlaistā alpha.4 pievienoja plašāku Fusion atbalstu DuckDB katalogiem un Redshift konteksta apstrādi. GA datums vēl nav nosaukts.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.