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
