DuckDB andmebaasi versioon 1.2.0

Avaldatud on DuckDB andmebaasi 1.2.0 versioon, mis on suunatud analüütiliste päringute täitmisele ning meenutab sisuliselt SQLite'i. DuckDB ühendab SQLite omadused, nagu kompaktsus, sisseehitatud raamatukoguna ühendamine, andmebaasi salvestamine ühte faili ning CLI-liidese olemasolu, analüütiliste päringute täitmise võimaluste ja optimeeringutega, mis katab olulise osa salvestatud andmetest, sealhulgas kogu tabelite sisu agregatsioon või mitme suure tabeli liitmine. Projekti kood on kirjutatud C++ keeles ja see levitatakse MIT litsentsi all.

DuckDB pakub laiendatud SQL keele dialekti, mis sisaldab täiendavaid võimalusi väga keeruliste ja pikaajaliste päringute seadmiseks. Toetatakse keeruliste tüüpide (massivid, struktuurid, ühendused) kasutamist, samuti võimalust teostada omavahelisi ja sisse-välja korreleeruvaid alam-päringuid. Samuti on lubatud mitme päringu samaaegne täitmine ning päringute käivitamine otse CSV ja Parquet formaadis failidest. Toetatakse ka andmete importimist PostgreSQL andmebaasidest.

Projekt kasutab SQLite'i paketti, PostgreSQL'i parserit, MonetDB Date Math komponenti, enda aknafunktsioonide rakendust (Segment Tree Aggregation algoritmil põhinev), RE2 raamatukogul põhinevat regulaarsete väljendite töötlejat, enda päringute optimeerijat, MVCC-mehhanismi (Multi-Version Concurrency Control) täitmise juhtide haldamiseks, samuti vektoreeritud päringute täitmise mootori Hyper-Pipelining Query Execution algoritmil, mis võimaldab ühes operatsioonis kiiresti töödelda suuri väärtuste komplekte.

Uues versioonis:

  • Rakendatud on toetust uutele tihendusmeetoditele, mis ei ole vaikesätetena sisse lülitatud, et säilitada andmebaasi failide ühilduvus varasemate DuckDB versioonidega. Uue andmebaasi failivormingu kasutamiseks on ette nähtud võimalus siduda andmebaas versiooninumbri külge — faili avamisel parameetriga "STORAGE_VERSION" saab nüüd määrata minimaalset toetatud andmebaasi versiooni ("ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);"). Uue formaadi vanasse vormingusse konverteerimiseks saab kasutada SQL-käsku COPY, näiteks: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • Lisatud on toetus SQL-käsule „ALTER TABLE … ADD PRIMARY KEY”, mis võimaldab olemasoleva tabeli puhul lisada algset võtme.
  • Eemaldatud on piirang, mis ei võimaldanud uuesti lisada identifikaatoreid, millel on unikaalsuse jälgimise indeks, kui need identifikaatorid on käimasolevas tehingus kustutatud. Näiteks allpool toodud SQL-kood ei tohi nüüd enam viga anda: 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’);
  • Lisatud on toetus CSV-failide laadimisele Latin-1 ja UTF-16 kodeeringutes (varasemalt toetati vaid UTF-8 kodeeringut). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • Lisatud on toetus multibaiti eraldajate kasutamiseks CSV-failides (kuni 4 baiti), mis võimaldab määrata emoji veergude eraldajaks. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
  • Vaikesätetena on sisse lülitatud range CSV-failide töötlusrežiim („strict_mode = true”), mis kontrollib vastavust RFC 4180 spetsifikatsiooni vormindamisele. Ranget režiimi lubatakse kasutada vaid ühte sümbolit ridade eraldamiseks, mis põhjustab vea, kui faili töödeldakse, mille ridade eraldamiseks kasutatakse mitte ainult reavahetuse sümbolit, vaid ka karaktersümbolit („\r\n”).
  • CSV-parsijas on kasutusele võetud uus uue rea määramise algoritm, mis toetab operatsioonide paralleelset täitmist. Uue algoritmi kasutamine on kiirendanud CSV töötlemist umbes 15%.
  • CSV-failides on eemaldatud ridade suuruse piirang (varasemalt ei tohtinud rida ületada 8 MB).
  • Andmete eksportimisel Parquet formaati on tuvastatud toetust häältedele (sõnastikele) ja Bloomi filterpõhistele indeksitele. Tuvastatud on DELTA_BINARY_PACKED tihendusmeetod, mis võimaldab oluliselt vähendada Parquet-failide suurust.
  • Käsurea liideses on lisatud turvarežiim, mida saab aktiveerida valiku „-safe” või käsu „.safe_mode” abil. Selles režiimis on lubatud juurdepääs ainult algselt määratud andmebaasi failile ning teiste failide avamise katse toob endaga kaasa vea.
  • Käsurea liideses on täiustatud sisestamise automaatset täiendamist. Autotäiendamise kood on ümber kirjutatud PEG (Parsing Expression Grammar) kasutamiseks.
  • Käsurea käskluste esitamisel on rakendatud suurt hulka numbreid visuaalse esitlemise võimalust, näiteks kui number on 100000000, lisatakse sellele lisaks „(100 miljonit)”.
  • SQL-is on lisatud uus süntaks, mille kohaselt saab lühendatud tabelite ja väljendite nimesid näidata väärtuste ees, millele nad viitavad (selle asemel, et kasutada süntaksit „väljend AS nimi”): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • Käsus „SELECT” on rakendatud „RENAME” operatsiooni toimetamise tugi, et ümber nimetada väljundeid, mis esitatakse, kui kasutatakse väljendit „*”: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • Käsus „SELECT” on lubatud kasutada operatsioone „LIKE” ja „SIMILAR TO” väljundi korral „*” kaudu: SELECT * LIKE ‘val%’ FROM key_val;
  • Pseudojuhuslike arvude genereerimise kvaliteeti on parandatud.
  • Päringute optimeerijat on moderniseeritud. TPC-H SF100 testi läbimise efektiivsus on suurenenud 13%.
  • Pakutud on uus C-sarnane API täiustuste arendamiseks, mida saab näiteks kasutada uute kogumite või tabelifunktsioonide loomisel.
  • Lisatud on toetus standardse C-teegiga Musl süsteemidele.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster