DuckDB 1.2.0 izlaišana

Publicēts DuckDB 1.2.0 izlaišana, kas orientēta uz analītisko vaicājumu izpildi un konceptuāli līdzīga SQLite. DuckDB apvieno tādas SQLite īpašības kā kompakts izmērs, iebūvējamās bibliotēkas formā pieejamība, datu bāzes glabāšana vienā failā un CLI interfeiss ar iespējām un optimizācijām analītisko vaicājumu izpildei, kas aptver ievērojamu daļu saglabāto datu, piemēram, veicot visu tabulu satura agregāciju vai vairāku lielu tabulu apvienošanu. Projekta kods rakstīts C++ valodā un izplatīts saskaņā ar MIT licenci.

DuckDB nodrošina paplašināto SQL valodas dialektu, iekļaujot papildu iespējas ļoti sarežģītu un ilgu vaicājumu apstrādei. Ir iespējama sarežģītu tipu izmantošana (masīvi, struktūras, apvienojumi), kā arī pašvaldīto un iegulto korelatīvo apakšvaicājumu izpilde. Atbalstīts vienlaikus vairāku vaicājumu izpildes process, vaicājumu izpilde tieši no CSV un Parquet failiem. Pieejama atbalsts importam no PostgreSQL datu bāzēm.

Projektā tiek izmantota SQLite apvalks, PostgreSQL parseris, MonetDB komponentes Date Math, savs logu funkciju realizējums (balstoties uz Segment Tree Aggregation algoritmu), regulāro izteiksmju apstrādātājs, kas balstīts uz RE2 bibliotēku, savs vaicājumu optimizētājs, MVCC sistēmas vienlaicīgas izpildes kontrole (Multi-Version Concurrency Control), kā arī vektorizēts vaicājumu izpildes dzinējs, kas balstīts uz Hyper-Pipelining Query Execution algoritmu, ļaujot vienā operācijā apstrādāt lielas vērtību kopas.

Jaunajā versijā:

  • Ir ieviests atbalsts jauniem saspiešanas metodēm, kas pēc noklusējuma nav iekļautas saderības nodrošināšanai ar iepriekšējām DuckDB versijām. Lai izmantotu uzlaboto datu bāzes faila formātu, piedāvāta iespēja piesaistīt datu bāzi versijas numuram — atverot failu, izmantojot parametru "STORAGE_VERSION", tagad var noteikt minimāli atbalstīto datu bāzes versiju ("ATTACH 'file.db' (STORAGE_VERSION 'v1.2.0');"). Jaunā formāta pārveidošanai vecajā formātā var izmantot SQL komandu COPY, piemēram: ATTACH 'file1.db'; ATTACH 'converted_file.db' (STORAGE_VERSION 'v1.0.0'); COPY FROM DATABASE file1 TO converted_file;
  • Pievienots atbalsts SQL komandai "ALTER TABLE … ADD PRIMARY KEY" jaunā primārā atslēga pievienošanai esošajai tabulai.
  • Nozīmīgi atjauninājumi, kas noņem ierobežojumu, kas neļāva atkārtoti pievienot identifikatorus, jauniem, kuriem ir unikālas izsekošanas indeksu dati, ja šie identifikatori tika dzēsti pašreizējā transakcijā. Piemēram, zemāk redzamais SQL kods vairs neradīs kļūdu: 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’);
  • Tika pievienota atbalsts CSV failu ielādēšanai kodējumos Latin-1 un UTF-16 (iepriekš atbalstīts tika tikai UTF-8 kodējums). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • Tika pievienota atbalsts vairāku baitus separatoru izmantošanai CSV failos (līdz 4 baitiem), ļaujot izmantot emoji kā kolonu separatoru. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
  • Noklusējuma iestatīts stingrs režīms CSV failu parsēšanai („strict_mode = true”), kas pārbauda atbilstību RFC 4180 specifikācijas formatēšanai. Stingra režīmā ir atļauts izmantot tikai vienu simbolu rindiņu atdalīšanai, kas radīs kļūdu, ja failu parsēšanā tiks izmantots ne tikai jaunas rindas simbols, bet arī atgriešanās ratiņa simbols („\r\n”).
  • CSV parsētājā tiek izmantots jauns jaunu rindiņu noteikšanas algoritms, kas atbalsta operāciju paralēlizāciju. Izmantojot šo jauno algoritmu, CSV parsēšana ir paātrinājusies aptuveni par 15%.
  • Noņemts ierobežojums CSV failu rindiņas izmēram (iepriekš rindiņai nedrīkstēja pārsniegt 8 MB).
  • Eksportējot datus Parquet formātā, ir ieviests atbalsts hašiem (vārdnīcām) un Bloom filtra balstītiem indeksiem. Ir ieviests DELTA_BINARY_PACKED saspiešanas metode, kas ievērojami samazina Parquet failu izmēru.
  • Komandu līnijas interfeisā ir pievienots drošais režīms, ko aktivizē ar „-safe” opciju vai komandu „.safe_mode”. Šajā režīmā ir atļauts piekļūt tikai sākotnēji norādītajam datu bāzes failam, bet mēģinājums atvērt citus failus izraisīs kļūdas ziņojumu.
  • Komandu līnijas interfeisā uzlabota automātiskā pabeigšana. Automātiskās pabeigšanas kods ir pārvērsts uz PEG (Parsing Expression Grammar) izmantošanu.
  • Izpildot komandas komandu līnijas interfeisā, tiek realizēta liela skaitļu vizualizācija, piemēram, attēlojot skaitli 100000000, tiks pievienots „(100 miljoni)”.
  • SQL ir pievienota atbalsta sintakse, kurā īsās tabulu un izteiksmju nosaukumus var norādīt pirms to vērtībām (vietā, lai izmantotu sintaksi «izteiksme AS nosaukums»): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • SELECT komandā ir ieviesta atbalsta operācija «RENAME» lauku pārsaukšanai, kas tiek izvadīti, izmantojot izteiksmi «*»: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • SELECT komandā ir atļauts izmantot operācijas «LIKE» un «SIMILAR TO», kad rezultāti tiek izgūti ar «*»: SELECT * LIKE ‘val%’ FROM key_val;
  • Paaugstināta pseidoizlases skaitļu ģenerēšanas kvalitāte.
  • Ir modernizēts vaicājumu optimizators. Veiktspēja TPC-H SF100 testā ir palielinājusies par 13%.
  • Piedāvāts jauns C-līdzīgs API paplašinājumu izstrādei, ko var izmantot, piemēram, jaunu agregātu vai tabulu funkciju izveidei.
  • Ir pievienots atbalsts sistēmām ar standarta C bibliotēku Musl.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster