DuckDB komanda 21. oktobrī publicēja versiju 2.0.0 ar nosaukumu “Cinnamon Teal” (kanēļa krīklis). Tas ir pirmais ilgtermiņa atbalsta (LTS) laidiens šīs iegultās analītiskās datubāzes astoņu gadu vēsturē. Garantētais atbalsts ilgs vismaz līdz 2027. gada oktobrim. Iepriekš DuckDB versiju cikls bija ātrāks: katrs laidiens saņēma labojumus tikai līdz nākamā iznākšanai. LTS modelis ļauj ražošanas lietotājiem palikt uz vienas versijas gadu, saņemot drošības ielāpus bez piespiedu jaunināšanas. Laidiens ir arī lielākais pēc apjoma: gandrīz 20 000 komitu kopš versijas 1.5.
DuckDB darbojas tieši lietojumprogrammas procesā bez atsevišķa servera, līdzīgi kā SQLite. Atšķirībā no SQLite, DuckDB ir veidota analītiskajiem vaicājumiem ar kolonnu krātuvi, vektorizētu izpildi un paralēlu apstrādi. Kopš 2018. gada komanda konsekventi atkārtoja, ka serveris nav vajadzīgs. Versijā 2.0 šī nostāja ir mainījusies: blakus iegultajam režīmam tagad pieejama pilnvērtīga klienta-servera arhitektūra ar jaunu tīkla protokolu.
Quack protokols atver DuckDB tīklam
Jaunais Quack protokols darbojas pār HTTP. Klients vienmēr iniciē pieprasījumu, serveris atbild. Ilgstoši TCP savienojumi nav nepieciešami, kas vienkāršo ugunsmūra konfigurāciju. DuckDB servera režīmā pieņem vaicājumus no citām mašīnām tīklā, bet izmanto to pašu SQL dzinēju, kas darbojas lokāli. Atsevišķs servera kodols ar savu optimizatoru netiek uzturēts.
Kopā ar protokolu nāk jauns SQL priekšraksts CONNECT. Tas pārslēdz sesiju uz attālinātu datubāzi ar vienu komandu. CONNECT strādā ar citām DuckDB instancēm un ar PostgreSQL un MySQL serveriem. Attālinātajiem vaicājumiem darbojas pushdown optimizators: dzinējs nosūta filtrus un agregācijas tieši mērķa serverim, nevis lejupielādē visus datus lokāli. Praktiski viens DuckDB klients var apvienot lokālu Parquet failu ar ražošanas PostgreSQL tabulu vienā SELECT vaicājumā, nevelkot miljoniem rindu pa tīklu. Analītiķim, kas strādā ar DuckDB kā lokālu rīku, šī iespēja ļauj pievienot ražošanas tabulas bez ETL cauruļvada starpnieka.
VARIANT tips bezshēmas datiem
Versija 2.0 ievieš VARIANT kā pilntiesīgu tipu datubāzes sistēmā. Tips ir paredzēts datiem, kuru struktūra nav zināma iepriekš vai mainās no ieraksta uz ierakstu. Dzinējs nolasa VARIANT kolonnas tieši no krātuves bez pilnas deserializācijas. Dokumentācijā šo pieeju sauc par shredded execution: ja vaicājums izmanto divus laukus no simts, pārējos deviņdesmit astoņus dzinējs nemaz nelasa. Iepriekš līdzīga rezultāta sasniegšanai vajadzēja glabāt datus JSON kolonnā un parsēt to katru reizi no jauna.
Pieejama variant_* funkciju saime dažādām transformācijām. Konvertēšanas sintakse ir parasta SQL: '{"key": 42}'::JSON::VARIANT. Tips metadatos saglabā oriģinālo datu tipu, tāpēc konvertēšana atpakaļ neprasa atkārtotu parsēšanu. Praksē VARIANT ir noderīgs situācijās, kad viena tabula uzglabā notikumus no dažādiem avotiem ar atšķirīgu lauku kopu.
SQL trigeri un jaunais parsētājs
DuckDB tagad atbalsta BEFORE un AFTER trigerus tabulām. Trigeris automātiski izpilda norādītu darbību, reaģējot uz INSERT, UPDATE vai DELETE operāciju. SQLite trigerus piedāvā jau gadiem, bet DuckDB līdz šim aprobežojās ar CHECK ierobežojumiem. Trigeru pievienošana padara DuckDB derīgāku kā galveno datubāzi mazākos projektos, kur vajag automātisku validāciju vai audita ierakstus.
SQL parsētājs ir pārrakstīts no nulles ar PEG gramatikas pieeju. Iepriekšējais parsētājs bija pārnests no PostgreSQL. Jaunais ir paplašināms caur DuckDB extension sistēmu: trešo pušu izstrādātāji var pievienot pielāgotu SQL sintaksi bez kodola modifikācijām.
Komandrinda atpazīst AI aģentus
DuckDB komandrindas interfeiss tagad nosaka, vai to lieto AI kodēšanas aģents, piemēram, Claude Code. Ja tā ir, izvade pārslēdzas uz kompaktu Markdown formātu: tabulas aizņem mazāk vietas, kļūdas atgriežas JSON formātā. Gara izvade tiek apgriezta ar skaidru paziņojumu par izlaisto rindu skaitu. DuckDB komandas publicētajā rakstā par aģentu režīmu norādīts, ka TPC-H testos aģenta nolasāmais datu apjoms samazinājās par 59 %. Ja aģentu režīms nav vēlams, to var izslēgt ar karogu -no-agent.
DuckDB 2.0.0 ir lielākais funkciju laidiens līdz šim. Tas tapis no gandrīz 20 000 komitiem kopš versijas 1.5. — DuckDB oficiālais paziņojums, 2026. gada 21. oktobris
Ātrāka I/O ar konkrētiem skaitļiem
Parquet un CSV lasīšanai tagad darbojas asinhronā ievade/izvade. Iepriekšējās versijās I/O bija sinhronā: kamēr dzinējs gaidīja faila bloku no S3, vaicājuma apstrāde stāvēja. Tagad failu nolasīšana notiek paralēli vaicājuma apstrādei. Ieguvums ir jūtams darbā ar objektu krātuvēm, kur tīkla latentums iepriekš bremzēja visu vaicājumu. DuckDB priekšskatījuma testēšanā rekursīvs CTE vaicājums pār vienu miljonu šķautnēm izpildījās 0,12 sekundēs. Versijā 1.5.4 tas pats vaicājums prasīja 4,90 sekundes.
Nesaderīgās izmaiņas
Versija 2.0 lieto jaunu krātuves formātu. Failus, ko saglabā 2.0, nevar atvērt ar vecākām DuckDB versijām. Pretējā virzienā saderība ir saglabāta: 2.0 nolasa vecākus failus bez problēmām. Citas izmaiņas: veselu skaitļu dalīšana ar nulli tagad izraisa kļūdu (iepriekš atgrieza NULL), kompilācijai nepieciešams C++17 standarts, ICU bibliotēka ir izņemta no kodola. Lambda sintakse turpina pāreju uz jauno formātu, vecā pagaidām strādā.
Go, R un Java klienti var aizkavēties dažas dienas pēc galvenā laidiena. Migrācijas rokasgrāmatā komanda iesaka testēt jauninājumu ēnu sistēmā pirms pārejas uz ražošanu. Pirmais ielāps plānots novembrī. Kopienas atbalsts versijai 1.4 beigsies 2026. gada 17. novembrī.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.