Publikimi i DBMS DuckDB 1.2.0

Ë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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster