VĂ€lja on antud DuckDB 1.2.0, mis on suunatud analĂŒĂŒtiliste pĂ€ringute tĂ€itmisele ja mille kontseptsioon sarnaneb SQLite'iga. DuckDB ĂŒhendab sellised SQLite omadused nagu kompaktne suurus, integreeritav raamatukoguna, andmebaasi salvestamine ĂŒhte faili ja CLI-liides, koos analĂŒĂŒtiliste pĂ€ringute tĂ€itmisvĂ”imaluste ja optimeerimisega, mis katab mĂ€rkimisvÀÀrse osa salvestatud andmetest, nĂ€iteks kiiret andmete agregatsiooni vĂ”i suuremate tabelite ĂŒhendamist. Projekti kood on kirjutatud C++ keeles ja jagatakse MIT litsentsi alusel.
DuckDB pakub ulatuslikku SQL keele dialekti, mis sisaldab tĂ€iendavaid vĂ”imalusi keerukate ja pikaajaliste pĂ€ringute töötlemiseks. Toetatakse keeruliste tĂŒĂŒpide (massiv, struktuurid, liidendid) kasutamist ja vĂ”imalust tĂ€ita omavahel seotud alampĂ€ringuid. Samuti on toetatud mitme pĂ€ringu samanaegne tĂ€itmine, pĂ€ringute otsefailidest, nagu CSV ja Parquet. On olemas ka toimetamine PostgreSQL andmebaasidest.
Projekt kasutab SQLite'i kestat, PostgreSQL'i parset, MonetDB Date Math komponenti, oma aknafunktsioonide rakendust (Segment Tree Aggregation alusel), regulaaravalduste töötlejat RE2 raamatukogu pĂ”hjal, oma pĂ€ringu optimeerijat, MVCC mehhanismi (Multi-Version Concurrency Control) ja vektori mootori pĂ€ringutĂ€itmiseks, mis pĂ”hineb hĂŒpertorustuse pĂ€ringute tĂ€itmise algoritmil, vĂ”imaldades ĂŒhes tegevuses korraga kĂ€sitleda suuri vÀÀrtuste kogumeid.
Uues versioonis:
- Uute tihendusmeetodite tugi, mis ei ole vaikimisi aktiveeritud, et sĂ€ilitada andmebaasifailide ĂŒhilduvus DuckDB varasemate versioonidega, on realiseeritud. Uue andmebaasifaili formaadi kasutamiseks on pakutud vĂ”imalust siduda andmebaas versiooninumbriga â faili avamisel parameetri âSTORAGE_VERSIONâ abil on nĂŒĂŒd vĂ”imalik mÀÀrata minimaalne toetatav andmebaasiversioon (âATTACH âfile.dbâ (STORAGE_VERSION âv1.2.0â);â). Uue formaadi vana vastu 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 SQL-kĂ€sk âALTER TABLE ⊠ADD PRIMARY KEYâ, et lisada olemasolevale tabelile peamine vĂ”ti.
- Eemaldatud on piirang, mis ei lubanud uuesti lisada identifikaatoreid, millel oli unikaalsuse jĂ€lgimise indeks, kui need andmeid olid hetkel tehingust kustutatud. NĂ€iteks allolev SQL-kood ei tekita enam viga: 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â);
- CSV-failide toetamine Latin-1 ja UTF-16 kodeeringutes (varem toetas vaid UTF-8 kodeeringut) on lisatud. FROM read_csv(âcities-latin-1.csvâ, encoding = âlatin-1â);
- CSV-failides on lisatud toetus mitme baitide eraldajatele (kuni 4 baiti), mis vĂ”imaldab kasutada emoji'd veergude eraldajana. ađŠb hellođŠworld FROM read_csv(âexample.dsvâ, sep = âđŠâ);
- CSV-failide parsimiseks on vaikimisi lubatud range reĆŸiim ('strict_mode = true'), mis kontrollib, kas vorming vastab RFC 4180 spetsifikatsioonile. Range reĆŸiimis on lubatud kasutada vaid ĂŒht sĂŒmbolit ridade eraldamiseks, mis pĂ”hjustab vea, kui ridade eraldamiseks kasutatakse mitte ainult reavahetus sĂŒmbolit, vaid ka tagasiĂŒhenduse sĂŒmbolit (â\r\nâ).
- CSV-parsijasse on rakendatud uus uue rea mÀÀramise algoritm, mis toetab operatsioonide paralleesimist. Uue algoritmi kasutamine on kiirendanud CSV parsimist umbes 15%.
- CSV-failide ridade suuruse piirang on eemaldatud (varem ei tohtinud rida ĂŒletada 8 MB).
- Parquet-formaadis andmete eksportimisel on rakendatud toetus hÀshtemarkide (sÔnastike) ja Bloom-filtril pÔhinevate indeksite jaoks. Rakendatud on DELTA_BINARY_PACKED tihendusmeetod, mis vÔimaldab oluliselt vÀhendada Parquet-failide suurust.
- KĂ€skude rea liidesesse on lisatud turvareĆŸiim, mille aktiveerimiseks kasutatakse valikut â-safeâ vĂ”i kĂ€sku â.safe_modeâ. Selles reĆŸiimis on lubatud juurdepÀÀs ainult algselt mÀÀratud andmebaasi failile, ja katse avada teisi faile toob kaasa vea.
- KÀskude rea liidese automaatne tÀiendamine on paranenud. Automaatse tÀiendamise kood on muudetud PEG (Parsing Expression Grammar) kasutamiseks.
- KÀskude rea liideses on suurte numbrite visualiseerimine, nÀiteks numbrit 100000000 kuvatakse tÀiendava mÀrkusega '(100 miljonit)'.
- SQL-is on lisatud toetus sĂŒntaksile, kus lĂŒhendatud tabelite ja vĂ€ljendite nimed saab mÀÀrata enne vÀÀrtusi, millele nad viitavad (asemel, et kasutada sĂŒntaksit âvĂ€ljend AS nimetusâ): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
- Selekti kĂ€su toetamine on realiseeritud âRENAMEâ operatsiooni jaoks, et ĂŒmber nimetada veerge, mis kuvatakse vĂ€ljendi â*â nĂ€itamisel: SELECT * RENAME (col1 AS new_col1) FROM integers;
- Selekti kĂ€sus on lubatud kasutada operatsioone âLIKEâ ja âSIMILAR TOâ vĂ€ljundi kaudu â*â: SELECT * LIKE âval%â FROM key_val;
- Pseudojuhuslike arvude genereerimise kvaliteet on tÔusnud.
- KĂŒsimuste optimeerijat on moderniseeritud. TPC-H SF100 testi lĂ€bimise tulemuslikkus on tĂ”usnud 13%.
- Pakutakse uut C-laadset API-d tÀienduste loomiseks, mida saab kasutada nÀiteks uute agregaat- vÔi tabelifunktsioonide loomiseks.
- Lisatud tugi sĂŒsteemidele, kus on standardne C-biblioteek Musl.
Allikas: opennet.ru
