Release av DBMS SQLite 3.42 och DuckDB 0.8.0. CG/SQL med implementering av lagrade procedurer för SQLite

Utgivningen av SQLite 3.42, ett lätt DBMS designat som ett plugin-bibliotek, har publicerats. SQLite-koden distribueras i den offentliga domänen, d.v.s. kan användas utan begränsningar och gratis för alla ändamål. Ekonomiskt stöd till SQLite-utvecklare tillhandahålls av ett speciellt skapat konsortium, som inkluderar företag som Adobe, Oracle, Mozilla, Bentley och Bloomberg.

Huvudändringar:

  • För FTS5-fulltextindex har kommandot secure-delete implementerats, som helt rensar all återstående data efter radering.
  • Funktioner för bearbetning av JSON-data stöder nu JSON5-tillägg.
  • Förbättrad frågeplanerare. Som standard är optimering av antal visningar aktiverad. Bearbetning av oanvända kolumner i delfrågor elimineras. Förbättrad implementering av push-down-optimering.
  • Lade till alternativet "--unsafe-testing" till kommandoradsgränssnittet, som tillåter användning av vissa farliga kommandon, såsom ".testctrl", avsedda att användas i testning. I säkert läge ("-safe") är det tillåtet att använda kommandona ".log on" och ".log off". Lade till stöd för "—"-avgränsaren, för argument efter vilka alternativbearbetning avaktiveras. Lade till parametrar ":inf" och ":nan" förknippade med infinity- och NaN-värdena.
  • Programdefinierade SQL-funktionsnamn tillåts överlappa med nyckelorden CROSS, FULL, INNER, LEFT, NATURAL, OUTER och RIGHT.
  • Funktionerna hos PRAGMA integrity_check har utökats. Lade till kontroll för att specificera NaN-värden i kolumner med NOT NULL-villkoret. Förbättrat informationsinnehåll i felmeddelanden.
  • Sessionstillägget tillåter avlyssning av ändringar från tabeller utan ROWID.
  • Modifieraren "subsec" har lagts till funktioner för att arbeta med tider och datum för att använda bråkdelar av sekunder.
  • Standardrekursionsdjupet för arrayer och JSON-objekt har reducerats från 2000 till 1000.

Dessutom har releasen av DuckDB 0.8.0 DBMS skapats, som utvecklar en version av SQLite, utökad med möjligheter och optimeringar för att utföra analytiska frågor som täcker en betydande del av den lagrade data, till exempel att utföra aggregering av hela innehållet av bord eller sammanslagning av flera stora bord. Tillhandahåller en avancerad dialekt av SQL som inkluderar ytterligare funktioner för att bearbeta mycket komplexa och tidskrävande frågor, och stöder även komplexa typer (matriser, strukturer, fackföreningar), körning av flera frågor samtidigt och körning av frågor direkt från CSV-, JSON- och Parquet-filer . Det är möjligt att importera från PostgreSQL DBMS.

Förutom skalkoden från SQLite använder projektet en parser från PostgreSQL i ett separat bibliotek, Date Math-komponenten från MonetDB, sin egen implementering av fönsterfunktioner (baserat på Segment Tree Aggregation-algoritmen), en reguljär uttrycksprocessor baserad på RE2-biblioteket, dess egen frågeoptimerare och en MVCC-kontrollmekanism för simultan exekvering av uppgifter (Multi-Version Concurrency Control), samt en vektoriserad frågekörningsmotor baserad på Hyper-Pipelining Query Execution-algoritmen, som tillåter stora uppsättningar värden ska behandlas på en gång i en operation. Projektkoden distribueras under MIT-licensen.

I den nya versionen av DuckDB:

  • Lade till nya uttryck "PIVOT" och "UNPIVOT" för att omvandla rader till kolumner och vice versa.
  • Förbättrad parallellisering vid import och export av data. Som standard implementeras flertrådad läsning från CSV-filer och flertrådad skrivning när du använder formaten Parquet, CSV och JSON.
  • Lade till operatorn "**" för att rekursivt iterera genom kataloger vid bestämning av filsökvägar (till exempel FRÅN "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Tillagt stöd för sammanslagningsoperationer (JOIN) för data i form av en tidsserie (delar av parametervärden vid specificerade tidsintervall), där kriteriet för sammanslagning av poster inte är en exakt, utan en ungefärlig sammanträffande av värden i ett fält med tid (du kan till exempel slå samman poster, tid som inte skiljer sig med mer än 1 minut).
  • Implementerade lat laddning av databasmetadata, vilket gjorde det möjligt att snabba upp lanseringen av DBMS tiotals gånger.
  • Lagt till stöd för att ansluta anpassade funktioner i Python.
  • Lade till stöd för ADBC ​​(Arrow Database Connectivity) API för överföring av data med Apache Arrow.
  • En bindning har implementerats för integration med Swift-kod.
  • Ändrade beteendet för divisionsoperatorn ("/") för att utföra flyttalsberäkningar istället för heltalsoperationer som standard. En ny operator "//" föreslås för heltalsdelning. Det gamla beteendet kan returneras genom att ställa in "SET integer_division=true;".
  • Metoden att ta hänsyn till nollposter vid sortering har ändrats från ”NULLS FIRST” till ”NULLS LAST”, d.v.s. NULL-värden kommer nu att skrivas ut i slutet snarare än i början av listan. Det gamla beteendet kan returneras genom att ställa in "SET default_null_order='nulls_first';".

Dessutom kan vi notera CG/SQL-projektet utvecklat av Facebook, som tillhandahåller en kodgenerator för att använda lagrade procedurer med SQLite. CG/SQL låter dig skriva lagrade procedurer i en speciell dialekt av T-SQL (Transact-SQL), som gör det möjligt att anropa funktioner i standard C-biblioteket och komma åt data i SQLite. De genererade lagrade procedurerna kompileras till C-kod som använder SQLite C API för att utföra specificerade åtgärder och bearbeta komplexa frågor. Kompilerade lagrade procedurer kan kopplas till C-, Java- och Objective-C-program. Projektkoden är skriven i C och distribueras under MIT-licensen.

Källa: opennet.ru

Lägg en kommentar