Megjelent a DuckDB 1.2.0, amely az analitikai lekérdezések végrehajtására összpontosít, és alapvetően az SQLite-hoz hasonlít. A DuckDB ötvözi az SQLite olyan tulajdonságait, mint a kompakt méret, az integrált könyvtár formájában történő csatlakozás, az adatbázisok egy fájlban történő tárolása és a CLI felület, valamint a nagy mennyiségű tárolt adat végrehajtására vonatkozó lehetőségeket és optimalizálásokat, például az összes táblázat tartalmának aggregálását vagy több nagy táblázat egyesítését. A projekt kódja C++ nyelven készült, és MIT licenc alatt terjesztik.
A DuckDB kiterjesztett SQL-dialektust biztosít, beleértve a nagyon bonyolult és hosszú ideig tartó lekérdezések kezelésére vonatkozó további lehetőségeket. Lehetséges bonyolult típusok (tömbök, struktúrák, uniók) használata, valamint tetszőleges és beágyazott korrelált alminták végrehajtása. Támogatott a több lekérdezés egyidejű végrehajtása, lekérdezések közvetlen végrehajtása CSV és Parquet formátumú fájlokból. Továbbá, támogatja a PostgreSQL adatbázisból való importálást.
A projekt SQLite alapú héjat, PostgreSQL-ből származó elemzőt, MonetDB-ből származó Date Math komponenst, saját megvalósítású ablakos függvényeket (Segment Tree Aggregation algoritmus alapján), RE2 könyvtáron alapuló reguláris kifejezések feldolgozóját, saját lekérdezés-optimalizálót, MVCC (több verziós párhuzamos végrehajtás) rendszert, valamint a Hyper-Pipelining Query Execution algoritmust alapul vevő vektorozott lekérdezés végrehajtó motorját használja, amely lehetővé teszi, hogy egyetlen művelet során nagy értékhalmazokat egyszerre dolgozzon fel.
Az új verzióban:
- Új tömörítési módszerek támogatása valósult meg, amelyeket alapértelmezés szerint nem tartalmaznak a DuckDB korábbi verzióival való kompatibilitás érdekében. Az új adatbázis-fájlformátum használatához lehetőség van az adatbázis verziószámhoz való kötésére – a fájl megnyitásakor a ‘STORAGE_VERSION’ paraméter segítségével most megadható a minimálisan támogatott adatbázisverzió (‘ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);’). Az új formátum régi formátumra való konvertálásához használhatja a COPY SQL-parancsot, például: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
- Hozzáadva az SQL-parancs támogatása: ‘ALTER TABLE … ADD PRIMARY KEY’, amely lehetővé teszi elsődleges kulcs hozzáadását egy meglévő táblához.
- Eltávolítva a korlátozás, amely megakadályozta az azonosítók újbóli hozzáadását, amikor egyedi nyomkövető index van jelen, feltéve, hogy ezek az azonosítók a jelenlegi tranzakcióban törlésre kerültek. Például az alábbi SQL-kód most nem okoz hibát: 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’);
- Hozzáadva a CSV-fájlok betöltésének támogatása Latin-1 és UTF-16 karakterkódolásban (korábban csak UTF-8 kódolást támogattak). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
- Hozzáadva a több byte-os elválasztók (maximum 4 byte) használatának támogatása CSV-fájlokban, ami lehetővé teszi az emoji-k használatát elválasztóként. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
- Alapértelmezetten engedélyezve van a szigorú CSV fájlparsing mód («strict_mode = true»), amely ellenőrzi az RFC 4180 szabvány formátumának megvalósítását. A szigorú módban csak egyetlen karakter használható a sorok elválasztására, ami hibát eredményez, ha a fájlok sorainak elválasztásához nemcsak a sortörés, hanem a visszaút karakter («\r\n») is használható.
- A CSV elemző új algoritmust használ az új sorok meghatározásához, amely támogatja a műveletek párhuzamosítását. Az új algoritmus használata körülbelül 15%-kal gyorsította fel a CSV parsingot.
- Eltávolították a sorok méretének korlátozását a CSV fájlokban (korábban a sorok nem haladhatták meg a 8 MB-ot).
- A Parquet formátumú adatok exportálásakor megvalósították a hash-ek (szótárak) és a Bloom szűrőn alapuló indexek támogatását. Megvalósították a DELTA_BINARY_PACKED tömörítési módszert, amely jelentősen csökkenti a Parquet fájlok méretét.
- A parancssori felülethez biztonsági módot adtak hozzá, amely aktiválható az «-safe» opcióval vagy a «.safe_mode» parancs használatával. Ebben a módban csak az eredetileg megadott adatbázis fájlhoz van hozzáférés, és más fájlok megnyitásának megkísérlése hibát eredményez.
- A parancssori felületen javították a bemeneti automatikus kiegészítést. Az automatikus kiegészítés kódja a PEG (Parsing Expression Grammar) használatára lett átírva.
- A parancssori felületen végrehajtott parancsoknál a nagy számok jól látható megjelenítése megvalósult, például amikor a 100000000 számot jelenítik meg, hozzá fogják fűzni a «(100 millió)» kifejezést.
- Az SQL-ben támogatást kaptak azok a szintaxisok, amelyek lehetővé teszik, hogy a rövidített táblázatneveket és kifejezéseket a hozzájuk rendelt értékek előtt adjuk meg (a «kifejezés AS név» szintaxis helyett): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
- A «SELECT» parancsban megvalósították a «RENAME» műveletet a * kifejezéssel megjelenített mezők átnevezésére: SELECT * RENAME (col1 AS new_col1) FROM integers;
- A «SELECT» parancsban megengedett a «LIKE» és «SIMILAR TO» műveletek használata a * jelzésével való kiíráskor: SELECT * LIKE ‘val%’ FROM key_val;
- Javították a pszeudo-véletlen számok generálásának minőségét.
- Modernizálták a lekérdezés-optimálót. A TPC-H SF100 teszten elért teljesítmény 13%-kal nőtt.
- Javasripthoz hasonló API-t javasoltak ki bővítmények fejlesztéséhez, például új aggregáló vagy táblázatos funkciók létrehozására.
- Támogatás került az Musl szabványos C könyvtárral rendelkező rendszerekhez.
Forrás: opennet.ru
