ĂshtĂ« publikuar versioni 1.2.0 i SGBD-sĂ« DuckDB, e orientuar pĂ«r ekzekutimin e pyetjeve analitike dhe konceptualisht e ngjashme me SQLite. DuckDB kombinon veçoritĂ« e SQLite, si kompaktĂ«sia, lidhja nĂ« formĂ«n e njĂ« biblioteke tĂ« integrueshme, ruajtja e DB-sĂ« nĂ« njĂ« skedar tĂ« vetĂ«m dhe ndĂ«rfaqja CLI, me mundĂ«si dhe optimizime pĂ«r ekzekutimin e pyetjeve analitike qĂ« pĂ«rfshijnĂ« njĂ« pjesĂ« tĂ« konsiderueshme tĂ« tĂ« dhĂ«nave tĂ« ruajtura, pĂ«r shembull agregimin e gjithĂ« pĂ«rmbajtjes sĂ« tabelave ose bashkimin e disa tabelave tĂ« mĂ«dha. Kodi i projektit Ă«shtĂ« shkruar nĂ« C++ dhe shpĂ«rndahet nĂ«n licencĂ«n MIT.
DuckDB ofron njĂ« dialekt tĂ« zgjeruar tĂ« SQL, qĂ« pĂ«rfshin mundĂ«si shtesĂ« pĂ«r pĂ«rpunimin e pyetjeve shumĂ« komplekse dhe me kohĂ« tĂ« gjatĂ« ekzekutimi. MbĂ«shtoret pĂ«rdorimi i tipeve komplekse (vargje, struktura, bashkime), si edhe ekzekutimi i nĂ«npyetjeve arbitrare dhe tĂ« ndĂ«rlidhura tĂ« futura brenda njĂ«ra-tjetrĂ«s. MbĂ«shtoret ekzekutimi i njĂ«kohshĂ«m i disa pyetjeve, ekzekutimi i pyetjeve drejtpĂ«rdrejt nga skedarĂ« nĂ« formatet CSV dhe Parquet. ĂshtĂ« gjithashtu e disponueshme mbĂ«shtetja pĂ«r import nga SGBD PostgreSQL.
Projekti përdor një mbështjellës nga SQLite, parserin nga PostgreSQL, komponentin Date Math nga MonetDB, realizimin e tij të funksioneve dritare (të bazuar në algoritmin Segment Tree Aggregation), një procesor për shprehje të rregullta të bazuar në bibliotekën RE2, optimizuesin e tij të kërkesave, mekanizmin MVCC për menaxhimin e ekzekutimit të përbashkët të detyrave (Multi-Version Concurrency Control), si dhe një motor të vectorizuar për ekzekutimin e kërkesave të bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon përpunimin në një operacion të grupeve të mëdha të vlerave njëherësh.
NĂ« versionin e ri:
- ĂshtĂ« zbatuar mbĂ«shtetja pĂ«r metoda tĂ« reja kompresimi, tĂ« cilat nuk aktivizohen si parazgjedhje pĂ«r tĂ« ruajtur pĂ«rputhshmĂ«rinĂ« e skedarĂ«ve tĂ« DB-sĂ« me versionet e mĂ«parshme tĂ« DuckDB. PĂ«r tĂ« pĂ«rdorur formatin e pĂ«rmirĂ«suar tĂ« skedarĂ«ve tĂ« DB-sĂ«, Ă«shtĂ« ofruar mundĂ«sia e lidhjes sĂ« DB-sĂ« me njĂ« numĂ«r versioni â gjatĂ« hapjes sĂ« skedarit me parametrin «STORAGE_VERSION» tani mund tĂ« caktohet versioni minimal i mbĂ«shtetur i DB-sĂ« («ATTACH âfile.dbâ (STORAGE_VERSION âv1.2.0â);»). PĂ«r ta kthyer formatin e ri nĂ« tĂ« vjetrin, mund tĂ« pĂ«rdoret komanda SQL COPY, pĂ«r shembull: ATTACH âfile1.dbâ; ATTACH âconverted_file.dbâ (STORAGE_VERSION âv1.0.0â); COPY FROM DATABASE file1 TO converted_file;
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r komandĂ«n SQL «ALTER TABLE ⊠ADD PRIMARY KEY» pĂ«r tĂ« shtuar njĂ« çelĂ«s primar nĂ« njĂ« tabelĂ« ekzistuese.
- ĂshtĂ« hequr kufizimi qĂ« nuk lejonte rishimin e identifikuesve pĂ«r tĂ« cilĂ«t ekziston njĂ« indeks pĂ«r ndjekjen e unikalitetit, nĂ«se kĂ«ta identifikues ishin fshirĂ« nĂ« transaksionin aktual. PĂ«r shembull, kodi SQL i mĂ«poshtĂ«m tani nuk shkakton mĂ« 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â);
- ĂshtĂ« shtuar mbĂ«shtetja 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â);
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r pĂ«rdorimin e ndarĂ«sve shumebajtĂ«sh (deri nĂ« 4 bajte) nĂ« skedarĂ«t CSV, gjĂ« qĂ« lejon pĂ«rdorimin e emoji-ve si ndarĂ«s kolonash. ađŠb hellođŠworld FROM read_csv(âexample.dsvâ, sep = âđŠâ);
- Si parazgjedhje është aktivizuar modaliteti i rreptë i analizimit të skedarëve CSV («strict_mode = true»), i cili kontrollon përputhshmërinë e formatimit me specifikimin RFC 4180. Në modalitetin e rreptë lejohet përdorimi i vetëm një simboli për ndarjen e rreshtave, çka do të shkaktojë gabim gjatë përpjekjes për të analizuar skedarë ku për ndarjen e rreshtave përdoret jo vetëm simboli i kalimit në rresht të ri, por edhe simboli i kthimit të karrocës («\r\n»).
- Në parser-in CSV është përdorur një algoritëm i ri për zbulimin e rreshtit të ri, i cili mbështet paralelizimin e operacioneve. Përdorimi i algoritmit të ri e ka përshpejtuar analizimin e CSV me rreth 15%.
- ĂshtĂ« hequr kufizimi pĂ«r madhĂ«sinĂ« e rreshtit nĂ« skedarĂ«t CSV (mĂ« parĂ« rreshti nuk duhej tĂ« kalonte 8 MB).
- GjatĂ« eksportimit tĂ« tĂ« dhĂ«nave nĂ« formatin Parquet Ă«shtĂ« shtuar mbĂ«shtetja pĂ«r hash-e (fjalorĂ«) dhe indekse tĂ« bazuara nĂ« filtrin Bloom. ĂshtĂ« zbatuar metoda e kompresimit DELTA_BINARY_PACKED, e cila mundĂ«son ulje tĂ« ndjeshme tĂ« madhĂ«sisĂ« sĂ« skedarĂ«ve Parquet.
- Në ndërfaqen e linjës së komandës është shtuar një modalitet i sigurt, i cili aktivizohet me opsionin «-safe» ose komandën «.safe_mode». Në këtë modalitet lejohet qasja vetëm te skedari i DB i specifikuar fillimisht, ndërsa përpjekja për të hapur skedarë të tjerë do të çojë në shfaqjen e një gabimi.
- Në ndërfaqen e linjës së komandës është përmirësuar plotësimi automatik i hyrjes. Kodi për plotësimin automatik është kaluar në përdorimin e PEG (Parsing Expression Grammar).
- Gjatë ekzekutimit të komandave në ndërfaqen e linjës së komandës është zbatuar paraqitja e qartë e numrave të mëdhenj; për shembull, gjatë shfaqjes së numrit 100000000, do të shtohet gjithashtu «(100 milionë)».
- Në SQL është shtuar mbështetja për sintaksën në të cilën emërtimet e shkurtra të tabelave dhe shprehjeve mund të përcaktohen përpara vlerave të cilave u referohen (në vend të përdorimit të sintaksës «shprehja AS emërtimi»): 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ë shtuar mbështetja për operacionin «RENAME» për riemërtimin e fushave të shfaqura kur përdoret shprehja «*»: SELECT * RENAME (col1 AS new_col1) FROM integers;
- NĂ« komandĂ«n «SELECT» tani lejohet pĂ«rdorimi i operacioneve «LIKE» dhe «SIMILAR TO» gjatĂ« shfaqjes pĂ«rmes «*» : SELECT * LIKE âval%â FROM key_val;
- ĂshtĂ« pĂ«rmirĂ«suar cilĂ«sia e gjenerimit tĂ« numrave pseudorastĂ«sorĂ«.
- Optimizuesi i kërkesave është modernizuar. Performanca në testin TPC-H SF100 është rritur me 13%.
- ĂshtĂ« prezantuar njĂ« API i ri i ngjashĂ«m me C pĂ«r zhvillimin e shtojcave, i cili mund tĂ« pĂ«rdoret, pĂ«r shembull, pĂ«r krijimin e funksioneve tĂ« reja agreguese ose tabelare.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r sistemet me bibliotekĂ«n standarde C Musl.
Burimi: opennet.ru
