DuckDB 0.6.0 har publicerats, en variant av SQLite för analytiska frÄgor

UtgÄvan av databasen DuckDB 0.6.0 Àr tillgÀnglig, vilket kombinerar funktioner frÄn SQLite, sÄsom kompakt storlek, möjlighet att ansluta i form av ett inbÀddat bibliotek, lagring av databasen i en fil och ett anvÀndarvÀnligt CLI-grÀnssnitt, med verktyg och optimeringar för att utföra analytiska frÄgor som tÀcker en stor del av de lagrade uppgifterna, till exempel som utför aggregat av hela innehÄllet i tabeller eller slÄr samman flera stora tabeller. Projektkoden distribueras under MIT-licensen. Utvecklingen Àr fortfarande i ett experimentellt stadium, dÄ formatet för lagring fortfarande inte Àr stabilt och Àndras frÄn version till version.

DuckDB erbjuder en utökad SQL-dialekt, som inkluderar ytterligare funktioner för att hantera mycket komplexa och tidskrÀvande frÄgor. AnvÀndning av komplexa typer (array, strukturer, unioner) och möjligheten att utföra godtyckliga och inbÀddade korrelerade undermappar stöds. Samtidig körning av flera frÄgor stöds, liksom att köra frÄgor direkt frÄn filer i formatet CSV och Parquet. Det finns möjlighet att importera frÄn databaserna PostgreSQL.

Förutom skalprogrammet frÄn SQLite anvÀnds en parser frÄn PostgreSQL som har flyttats till ett eget bibliotek, komponenten Date Math frÄn MonetDB, en egen implementering av fönsterfunktioner (baserat pÄ algoritmen Segment Tree Aggregation), en regeluttrycksbehandlare baserad pÄ biblioteket RE2, egna frÄgeoptimerare, MVCC-mekanismen för hantering av samtidig uppgiftsutförande (Multi-Version Concurrency Control), samt en vektoriserad frÄgaexecutionsmotor baserad pÄ algoritmen Hyper-Pipelining Query Execution, som möjliggör bearbetning av stora datamÀngder i en enda operation.

Bland förÀndringarna i den nya versionen:

  • Arbetet med att förbĂ€ttra lagringsformatet har fortsatt. En optimistisk disk-skrivningslĂ€ge har implementerats, dĂ€r stora datamĂ€ngder laddas in i en transaktion och komprimeras och strömmas till databasen utan att vĂ€nta pĂ„ att transaktionen med kommandot COMMIT ska avslutas. Vid kommandot COMMIT Ă€r uppgifterna redan skrivna pĂ„ disken, och vid utförande av ROLLBACK kasseras de. Tidigare sparades data först helt i minnet och skrevs dĂ€refter till disken vid commit.
  • Stöd för parallell datainlĂ€sning till separata tabeller har lagts till, vilket avsevĂ€rt ökar hastigheten pĂ„ inlĂ€sningen pĂ„ flerprocessorsystem. I den tidigare versionen tog det 91 sekunder att ladda en databas med 150 miljoner rader pĂ„ en 10-kĂ€rnig CPU, medan denna operation i den nya versionen genomförs pĂ„ 17 sekunder. Det finns tvĂ„ lĂ€gen för parallell inlĂ€sning — med bevarande av ordningen pĂ„ poster och utan bevarande av ordningen.
  • För datascompression anvĂ€nds algoritmen FSST (Fast Static Symbol Table), som möjliggör att data i strĂ€ngar packas med en gemensam ordbok av typmatchningar. AnvĂ€ndningen av den nya algoritmen har minskat storleken pĂ„ testdatabasen frĂ„n 761 MB till 251 MB.
  • För kompression av flyttal (DOUBLE och FLOAT) föreslĂ„s algoritmerna Chimp och Patas. JĂ€mfört med den tidigare anvĂ€nda algoritmen Gorillas erbjuder Chimp en högre kompressionsgrad och snabbare uppackning. Algoritmen Patas har en lĂ€gre kompressionsgrad Ă€n Chimp men Ă€r betydligt snabbare vid uppackning, nĂ€stan pĂ„ nivĂ„ med att lĂ€sa ocompressad data.
  • En experimentell möjlighet att ladda data frĂ„n CSV-filer i flera parallella strömmar har lagts till (SET experimental_parallel_csv=true), vilket avsevĂ€rt minskar tiden för att ladda stora CSV-filer. Till exempel, nĂ€r alternativet Ă€r aktiverat har tiden för att ladda en CSV-fil som Ă€r 720 MB minskat frĂ„n 3,5 till 0,6 sekunder.
  • Funktionen för parallell exekvering av skapande och hantering av index har implementerats. Till exempel har exekveringstiden för operationen CREATE INDEX för en kolumn med 16 miljoner poster minskat frĂ„n 5,92 till 1,38 sekunder.
  • Parallellisering av aggregeringsoperationer i frĂ„gor som innehĂ„ller uttrycket "COUNT(DISTINCT col)" har sĂ€kerstĂ€llts.
  • Stödet för UNION-typen har lagts till i SQL, vilket tillĂ„ter bindning av flera typer till ett enda element (till exempel "UNION(num INT, error VARCHAR))").
  • I SQL har möjligheten att bilda frĂ„gor som börjar med ordet "FROM" istĂ€llet för "SELECT" tillhandahĂ„llits. I detta fall förstĂ„s det att frĂ„gan börjar med "SELECT *".
  • I SQL har stöd för uttrycket "COLUMNS" lagts till, vilket möjliggör att utföra operationer över flera kolumner utan att duplicera uttrycket. Till exempel, "SELECT MIN(COLUMNS(*)) from obs;" kommer att utföra MIN-funktionen för varje kolumn i tabellen obs, och "SELECT COLUMNS(‘val[0-9]+’) from obs;" för kolumner med namn bestĂ„ende av "val" och siffror.
  • Stöd för operationer pĂ„ listor har lagts till, till exempel "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • Optimering av minnesanvĂ€ndning har genomförts. Som standard anvĂ€nds jemalloc-biblioteket för minneshantering pĂ„ Linux-plattformen. Prestandan för hash-sammanslagningsoperationer har förbĂ€ttrats avsevĂ€rt vid begrĂ€nsad minnesstorlek.
  • I kommandoraden har lĂ€get för utdata «.mode duckbox» lagts till, vilket tar bort medelkolumner med hĂ€nsyn till terminalfönstrets bredd (lĂ€mpligt för en snabb och visuell bedömning av resultat av förfrĂ„gningar med ett stort antal kolumner, sĂ„som «SELECT * FROM tbl», som i normalt lĂ€ge sprider sig över flera rader). Med parametern «.maxrows X» kan man ocksĂ„ begrĂ€nsa antalet utdata-rader.
  • I CLI har autocompletion av inmatning med hĂ€nsyn till kontext sĂ€kerstĂ€llts (kompletterar inmatningen av nyckelord, tabellnamn, funktioner, kolumnnamn och filnamn).
  • I CLI har visning av en progressindikator för frĂ„geutförande aktiverats som standard.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster