Izdaja DBMS DuckDB 1.2.0

Objavljen je izdan DBMS-a DuckDB 1.2.0, usmerenog na izvršavanje analitičkih upita i konceptualno sličnog SQLite-u. DuckDB kombinuje karakteristike SQLite-a, kao što su kompaktna veličina, povezivanje u obliku ugrađene biblioteke, čuvanje baze podataka u jednoj datoteci i CLI interfejs, s mogućnostima i optimizacijama za izvršavanje analitičkih upita koji obuhvataju značajan deo pohranjenih podataka, na primer, izvršavanje agregacije celog sadržaja tabela ili spajanje nekoliko velikih tabela. Kod projekta je napisan na C++ i distribuira se pod MIT licencom.

DuckDB pruža prošireni dijalekt SQL jezika, koji uključuje dodatne mogućnosti za obradu veoma složenih i dugotrajnih upita. Moguće je korišćenje složenih tipova (nizovi, strukture, unije), kao i izvršavanje proizvoljnih i ugnježdenih koreliranih podupita. Podržano je istovremeno izvršavanje više upita, kao i izvršavanje upita direktno iz datoteka u CSV i Parquet formatima. Takođe je dostupna podrška za uvoz iz DBMS-a PostgreSQL.

Projekt koristi omotač iz SQLite-a, parser iz PostgreSQL-a, komponentu Date Math iz MonetDB-a, vlastitu implementaciju prozorskih funkcija (na bazi algoritma Segment Tree Aggregation), obrada regularnih izraza zasnovana na biblioteci RE2, vlastiti optimizator upita, MVCC mehanizam upravljanja istovremenim izvršavanjem zadataka (Multi-Version Concurrency Control), kao i vektorizovani motor za izvršavanje upita zasnovan na algoritmu Hyper-Pipelining Query Execution, koji omogućava istovremeno obradu velikih skupova vrednosti u jednoj operaciji.

V novi različici:

  • Implementirana je podrška za nove metode kompresije, koje nisu uključene po defaultu radi očuvanja kompatibilnosti sa datotekama prethodnih verzija DuckDB-a. Za korišćenje unapređenog formata datoteka baze podataka predložena je mogućnost vezivanja baze podataka za broj verzije — prilikom otvaranja datoteke pomoću parametra "STORAGE_VERSION" sada je moguće odrediti minimalno podržanu verziju baze podataka ("ATTACH 'file.db' (STORAGE_VERSION 'v1.2.0');"). Za konverziju novog formata u stari može se koristiti SQL komanda COPY, na primer: ATTACH 'file1.db'; ATTACH 'converted_file.db' (STORAGE_VERSION 'v1.0.0'); COPY FROM DATABASE file1 TO converted_file;
  • Dodana je podrška za SQL komandu "ALTER TABLE … ADD PRIMARY KEY" za dodavanje primarnog ključa postojećoj tabeli.
  • Omejitev, ki ni omogočala ponovne dodajanja identifikatorjev, za katere je bila prisotna številka sledenja edinstvenosti, je bila odstranjena, če so bili ti identifikatorji odstranjeni v trenutni transakciji. Na primer, spodnji SQL-koda zdaj ne povzroča napake: 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');
  • Dodana je podpora za nalaganje CSV datotek v kodiranjih Latin-1 in UTF-16 (prej je bila podprta le kodiranje UTF-8). FROM read_csv('cities-latin-1.csv', encoding = 'latin-1');
  • Dodana je podpora za uporabo večbajtnih ločil v CSV datotekah (do 4BYTE), kar omogoča navajanje emoji kot ločila stolpcev. a🦆b hello🦆world FROM read_csv('example.dsv', sep = '🦆');
  • Način analize CSV datotek je privzeto vklopljen v strogo stanje ('strict_mode = true'), ki preverja skladnost s specifikacijo RFC 4180. V strogi način je dovoljeno uporabljati le en znak za ločevanje vrstic, kar bo povzročilo napako, če se pri analizi datotek uporablja ne le znak za novo vrstico, temveč tudi znak za povratni pritisni procesor ('\r\n').
  • V parserju CSV je bil uporabljen nov algoritem za določanje nove vrstice, ki podpira paralelno obdelavo operacij. Uporaba novega algoritma je pospešila analizo CSV za približno 15%.
  • Omejitev velikosti vrstice v CSV datotekah je odstranjena (prej dolžina vrstice ni smela presegati 8 MB).
  • Pri izvozu podatkov v formatu Parquet je bila uvedena podpora za haše (slovarje) in indekse na osnovi Bloomovega filtra. Uveden je bil način stiskanja DELTA_BINARY_PACKED, ki znatno zmanjša velikost Parquet datotek.
  • V ukazni vrstici je bila dodana varna način, ki se aktivira z možnostjo '-safe' ali ukazom '.safe_mode'. V tem načinu je dostop dovoljen le do prvotno določenih datotek DB, poskus odpiranja drugih datotek pa bo povzročil napako.
  • V ukazni vrstici je bila izboljšana samodejna dopolnitev vnosa. Koda za samodejno dopolnitev je bila prevedena na uporabo PEG (Gramatika za analizo izrazov).
  • Pri izvajanju ukazov v ukazni vrstici se izvaja vizualna predstavitev velikih števil, na primer, pri prikazu števila 100000000 bo dodatno dodano '(100 milijonov)'.
  • V SQL je bila dodana podpora za sintakso, pri kateri lahko skrajšane oznake tabel in izrazov navedemo pred vrednostmi, na katere se nanašajo (namesto uporabe sintakse „izraz AS ime“): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • V ukazu „SELECT“ je bila uvedena podpora za operacijo „RENAME“ za preimenovanje polj, ki se izpišejo ob navedbi izraza „*“: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • V ukazu „SELECT“ je dovoljeno uporabljati operacije „LIKE“ in „SIMILAR TO“ pri izpisu preko „*“: SELECT * LIKE ‘val%’ FROM key_val;
  • Kakovost generiranja psevdonaključnih števil je bila izboljšana.
  • Optimizator poizvedb je bil moderniziran. Učinkovitost pri testu TPC-H SF100 se je povečala za 13%.
  • Predlagan je nov C-podoben API za razvoj razširitev, ki se lahko uporablja, na primer, za ustvarjanje novih agregatnih ali tabelaričnih funkcij.
  • Dodana je podpora za sisteme s standardno C knjižnico Musl.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster