DuckDB 0.6.0 Gipatik, SQLite Option alang sa Analytical Pangutana

Ang pagpagawas sa DuckDB 0.6.0 DBMS anaa, nga naghiusa sa mga kabtangan sa SQLite sama sa pagkakomplikado, ang abilidad sa pagkonektar sa porma sa usa ka naka-embed nga librarya, pagtipig sa database sa usa ka file ug usa ka kombenyente nga CLI interface, nga adunay mga himan ug pag-optimize alang sa pagpatuman. analytical nga mga pangutana nga naglangkob sa usa ka mahinungdanon nga bahin sa gitipigan nga data, alang sa panig-ingnan nga aggregate sa tibuok sulod sa mga lamesa o merge sa pipila ka dagkong mga lamesa. Ang code sa proyekto giapod-apod ubos sa lisensya sa MIT. Ang pag-uswag anaa pa sa yugto sa pagporma sa mga eksperimento nga pagpagawas, tungod kay ang format sa pagtipig wala pa mapalig-on ug nagbag-o gikan sa bersyon ngadto sa bersyon.

Naghatag ang DuckDB og usa ka advanced nga diyalekto sa SQL nga naglakip sa dugang nga mga kapabilidad sa pagdumala sa labi ka komplikado ug makagugol sa oras nga mga pangutana. Gisuportahan ang paggamit sa mga komplikado nga tipo (mga array, istruktura, unyon) ug ang abilidad sa pagpatuman sa arbitraryo ug nested correlated nga mga subquery. Gisuportahan niini ang pagpadagan sa daghang mga pangutana nga dungan, pagpadagan sa mga pangutana direkta gikan sa mga file sa CSV ug Parquet. Posible ang pag-import gikan sa PostgreSQL DBMS.

Dugang pa sa shell code gikan sa SQLite, ang proyekto naggamit sa usa ka parser gikan sa PostgreSQL sa usa ka bulag nga librarya, ang Date Math component gikan sa MonetDB, ang kaugalingon nga pagpatuman sa mga function sa bintana (base sa Segment Tree Aggregation algorithm), usa ka regular nga expression processor base sa ang RE2 library, ang kaugalingon nga query optimizer, ug usa ka mekanismo sa pagkontrol sa MVCC nga dungan nga pagpatuman sa mga buluhaton (Multi-Version Concurrency Control), ingon man usa ka vectorized query execution engine nga gibase sa Hyper-Pipelining Query Execution algorithm, nga nagtugot sa dagkong mga set sa mga kantidad. aron maproseso dayon sa usa ka operasyon.

Lakip sa mga pagbag-o sa bag-ong pagpagawas:

  • Nagpadayon ang pagtrabaho aron mapaayo ang format sa pagtipig. Gipatuman ang usa ka malaumon nga mode sa pagsulat sa disk, diin kung nag-load sa usa ka dako nga set sa data sa usa ka transaksyon, ang datos gi-compress ug gisulat sa usa ka file gikan sa database sa streaming mode, nga wala maghulat nga makumpirma ang transaksyon sa COMMIT nga mando. . Sa diha nga ang usa ka COMMIT nga sugo nadawat, ang data gisulat na ngadto sa disk, ug sa diha nga ang usa ka ROLLBACK gipatuman, kini gilabay. Kaniadto, ang datos sa sinugdan hingpit nga natipig sa memorya, ug kung nahimo, kini gitipig sa disk.
  • Gidugang nga suporta alang sa parallel loading sa data ngadto sa lain-laing mga lamesa, nga nagtugot kaninyo sa kamahinungdanon sa pagdugang loading speed sa multi-core sistema. Pananglitan, sa miaging pagpagawas, ang pag-load sa usa ka database nga adunay 150 milyon nga mga laray sa usa ka 10-core nga CPU gikuha 91 segundos, apan sa bag-ong bersyon kini nga operasyon nahuman sa 17 segundos. Adunay duha ka parallel loading mode - uban ang pagpreserbar sa han-ay sa mga rekord ug walay pagpreserbar sa kahusay.
  • Alang sa data compression, gigamit ang FSST (Fast Static Symbol Table) algorithm, nga nagtugot kanimo sa pag-pack sa datos sulod sa mga string gamit ang usa ka komon nga diksyonaryo sa tipikal nga mga posporo. Ang paggamit sa bag-ong algorithm nagpaposible sa pagpakunhod sa gidak-on sa database sa pagsulay gikan sa 761MB ngadto sa 251MB.
  • Ang mga algorithm sa Chimp ug Patas gisugyot sa pag-compress sa mga floating point nga numero (DOUBLE ug FLOAT). Kon itandi sa miaging Gorillas algorithm, ang Chimp naghatag og mas taas nga lebel sa compression ug mas paspas nga decompression. Ang algorithm sa Patas kay sa likod sa Chimp sa compression ratio, apan mas paspas sa decompression speed, nga halos walay kalainan sa pagbasa sa wala ma-compress nga data.
  • Gidugang ang abilidad sa eksperimento sa pagkarga sa datos gikan sa mga CSV file ngadto sa daghang parallel streams (SET experimental_parallel_csv=true), nga makapamenos pag-ayo sa oras nga gikinahanglan aron makarga ang dagkong mga file sa CSV. Pananglitan, sa dihang kini nga opsyon gi-enable, ang oras sa pag-download alang sa 720 MB nga CSV nga file gikunhoran gikan sa 3.5 ngadto sa 0.6 ka segundo.
  • Ang posibilidad sa parallel execution sa index creation ug management operations gipatuman. Pananglitan, ang CREATE INDEX nga operasyon sa usa ka kolum nga adunay 16 ka milyon nga mga rekord gikunhoran gikan sa 5.92 ngadto sa 1.38 ka segundo.
  • Gi-enable ang parallelization sa aggregation operations sa mga pangutana nga adunay ekspresyon nga "COUNT(DISTINCT col)".
  • Ang SQL adunay dugang nga suporta alang sa tipo sa UNION, nga nagtugot sa daghang mga tipo nga igapos sa usa ka elemento (pananglitan, "UNION(num INT, error VARCHAR))").
  • Ang SQL naghatag og abilidad sa pagporma og mga pangutana nga nagsugod sa pulong nga "FROM" imbes nga "PILI". Sa kini nga kaso, gituohan nga ang pangutana nagsugod sa "PILI *".
  • Ang SQL adunay dugang nga suporta alang sa COLUMNS nga ekspresyon, nga nagtugot kanimo sa paghimo sa usa ka operasyon sa daghang mga kolum nga wala’y pagdoble sa ekspresyon. Pananglitan, "PILI MIN(COLUMNS(*)) gikan sa obs;" magpahinabo sa MIN function nga ipatuman alang sa matag kolum sa obs table, ug "PILI NGA COLUMNS('val[0-9]+') gikan sa obs;" alang sa mga kolum nga adunay ngalan nga gilangkoban sa "val" ug mga numero.
  • Gidugang nga suporta alang sa mga operasyon sa mga lista, pananglitan, "PILI [x + 1 para sa x sa [1, 2, 3]] AS l;".
  • Ang pagkonsumo sa memorya na-optimize. Sa kasagaran, ang plataporma sa Linux naggamit sa jemalloc library alang sa pagdumala sa memorya. Mahinungdanon nga gipaayo ang paghimo sa mga operasyon sa paghiusa sa hash kung limitado ang memorya.
  • Gidugang ang ".mode duckbox" output mode sa interface sa command line, nga nagsalikway sa tunga nga mga kolum nga gikonsiderar ang gilapdon sa terminal window (angay alang sa dali nga pagtan-aw sa mga resulta sa mga pangutana nga adunay daghang mga kolum, sama sa "PILI * GIKAN sa tbl", nga sa normal nga paagi mikaylap sa daghang mga linya). Gamit ang parameter nga ".maxrows X", mahimo nimong limitahan ang gidaghanon sa mga laray nga gipakita.
  • Ang CLI naghatag ug autocompletion sa input nga gikonsiderar ang konteksto (input sa mga keyword, mga ngalan sa lamesa, mga gimbuhaton, mga ngalan sa kolum ug mga ngalan sa file nahuman na).
  • Ang CLI adunay indikasyon sa pag-uswag sa pangutana nga gipalihok pinaagi sa default.

Source: opennet.ru

Idugang sa usa ka comment