Lançimi i DBMS DuckDB 1.2.0

Lëshohet versioni i DBMS DuckDB 1.2.0, i fokusuar në ekzekutimin e kërkesave analitike dhe konceptualisht i ngjashëm me SQLite. DuckDB bashkon veçoritë si kompaktësia, lidhja në formën e një biblioteke të integruar, ruajtja e databazës në një skedar të vetëm dhe ndërfaqja CLI, me mundësitë dhe optimizimet për ekzekutimin e kërkesave analitike që mbulojnë një pjesë të konsiderueshme të të dhënave të ruajtura, për shembull, duke kryer agregimin e të gjithë përmbajtjes së tabelave ose bashkimin e disa tabelave të mëdha. Kodi i projektit është shkruar në gjuhën C++ dhe shpërndahet nën licencën MIT.

DuckDB ofron një dialekt të zgjeruar të gjuhës SQL, i cili përfshin mundësi shtesë për përpunimin e kërkesave shumë komplekse dhe afatgjata. Është e mundur të përdoren tipe të komplikuara (array, struktura, bashkime), si dhe të ekzekutohen nënkërkesa të rastësishme dhe të ngulitura. Mbështetet ekzekutimi paralel i kërkesave të shumta, ekzekutimi i kërkesave drejtpërdrejt nga skedarët në formatet CSV dhe Parquet. Mbështetja e importit nga DBMS PostgreSQL është gjithashtu e disponueshme.

Projekti përdor një shell nga SQLite, parser nga PostgreSQL, komponentin Date Math nga MonetDB, implementimin e tij të funksioneve dritare (baze në algoritmin e Segment Tree Aggregation), një përpunues regex-i të bazuar në bibliotekën RE2, optimizatorë të veçantë pyetjesh, mekanizmin MVCC për menaxhimin e konkurencës (Kontrolli i Konkurrencës me Versione të Shumta), si dhe një motor të vectorizuar për ekzekutimin e pyetjeve të bazuar në algoritmin Hyper-Pipelining Query Execution, që lejon përpunimin e grupeve të mëdha të vlerave në një operacion të vetëm.

Në këtë version të ri:

  • Është realizuar mbështetje për metodat e reja të kompresimit, të cilat nuk janë të aktivizuara si parazgjedhje për të ruajtur kompatibilitetin e skedarëve të DB me versionet e mëparshme të DuckDB. Për të përdorur formatin e përmirësuar të skedarëve DB, është ofruar mundësia për të lidhur DB me numrin e versionit — kur hapni skedarin duke përdorur parametrin "STORAGE_VERSION", tani mund të përcaktoni versionin minimal të mbështetur të DB ("ATTACH 'file.db' (STORAGE_VERSION 'v1.2.0');"). Për të konvertuar formatin e ri në atë të vjetër, mund të përdorni komandën SQL COPY, për shembull: ATTACH 'file1.db'; ATTACH 'converted_file.db' (STORAGE_VERSION 'v1.0.0'); COPY FROM DATABASE file1 TO converted_file;
  • Shtohet mbështetje për komandën SQL "ALTER TABLE … ADD PRIMARY KEY" për të shtuar një çelës primar në një tabelë ekzistuese.
  • Eliminohet kufizimi që nuk lejonte rishqyrtimin e identifikuesve për të cilët ka një indeks gjurmimi unik, nëse këta identifikues ishin fshirë në transaksionin aktual. Për shembull, kodi SQL më poshtë tani nuk sjell një gabim: CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, ‘John Doe’); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, ‘Jane Doe’);
  • Shtohet mbështetje për ngarkimin e skedarëve CSV në kodimet Latin-1 dhe UTF-16 (më parë mbështetej vetëm kodimi UTF-8). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • Shtohet mbështetje për përdorimin e ndarësve shumë-bajt në skedarët CSV (deri në 4 byte), që lejon specifikimin e emoji si ndarës kolumnash. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
  • Nga e dhënë si standart, modaliteti i rreptë i analizës së skedarëve CSV («strict_mode = true») është aktiv, duke kontrolluar përputhshmërinë me specifikimin RFC 4180. Në modalitetin e rreptë lejohen vetëm një simbol për ndarjen e rreshtave, që do të shkaktojë një gabim kur përpiqeni të analizoni skedarë, ku ndarja e rreshtave përdor jo vetëm simbolin e rikthimit të rreshtit, por edhe simbolin e rikthimit të kartecit («\r\n»).
  • Në parserin CSV është përdorur një algoritëm i ri për përcaktimin e rreshtit të ri, duke mbështetur ndarjen e operacioneve. Përdorimi i algoritmit të ri ka përshpejtuar analizimin e CSV-të rreth 15%.
  • Është hequr kufizimi mbi madhësinë e rreshtit në skedarët CSV (më parë rreshti nuk duhej të kalonte 8 MB).
  • Kur eksportohet të dhënat në formatin Parquet është realizuar mbështetje për hash-e (fjalorë) dhe indekse të bazuara në filtrin Bloom. Është realizuar një metodë kompresimi DELTA_BINARY_PACKED, që lejon të reduktohet ndjeshëm madhësia e skedarëve Parquet.
  • Në ndërfaqen e linjës së komandave është shtuar një modalitet i sigurt, i aktivizuar me opsionin «-safe» ose komandën «.safe_mode». Në këtë modalitet, lejohet vetëm qasja në skedarin origjinal të DB, dhe një përpjekje për të hapur skedarë të tjerë do të rezultojë në një gabim.
  • Në ndërfaqen e linjës së komandave, është përmirësuar plotësimi automatik i hyrjes. Kodi për plotësimin automatik është kthyer në përdorimin e PEG (Gramatika e Shprehjeve të Parse-imit).
  • Kur ekzekutoni komandat në ndërfaqen e linjës së komandave, është realizuar një paraqitje e qartë e numrave të mëdhenj, për shembull, kur shfaqet numri 100000000, do të shtohet gjithashtu «(100 milionë)».
  • Në SQL është shtuar mbështetje për një sintaksë ku emrat e shkurtuar të tabelave dhe shprehjeve mund të tregohen para vlerave në të cilat ato i referohen (në vend që të përdorin sintaksën «shprehje AS emër»): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • Në komandën «SELECT» është realizuar mbështetje për operacionin «RENAME» për rinaming-un e fushave që paraqiten kur thuhet shprehja «*»: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • Në ekipin "SELECT" lejohet përdorimi i operacioneve "LIKE" dhe "SIMILAR TO" gjatë daljes përmes "*" : SELECT * LIKE 'val%' FROM key_val;
  • Cilësia e gjenerimit të numrave pseudo-rasor është përmirësuar.
  • Optimizuesi i kërkesave është modernizuar. Performanca gjatë testit TPC-H SF100 është rritur me 13%.
  • Një API e re e ngjashme me C është propozuar për zhvillimin e shtesave, e cila mund të përdoret, për shembull, për krijimin e funksioneve të reja agreguese ose tabulare.
  • Mbështetje është shtuar për sistemet me bibliotekën standarde C Musl.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster