Udgivelse af DBMS SQLite 3.42 og DuckDB 0.8.0. CG/SQL med implementering af lagrede procedurer til SQLite

Udgivelsen af ​​SQLite 3.42, et letvægts DBMS designet som et plug-in bibliotek, er blevet offentliggjort. SQLite-koden distribueres i det offentlige domæne, dvs. kan bruges uden begrænsninger og gratis til ethvert formål. Økonomisk støtte til SQLite-udviklere ydes af et specielt oprettet konsortium, som omfatter virksomheder som Adobe, Oracle, Mozilla, Bentley og Bloomberg.

Vigtigste ændringer:

  • For FTS5 fuldtekstindekser er kommandoen secure-delete blevet implementeret, som fuldstændig rydder alle resterende data efter sletning.
  • Funktioner til behandling af JSON-data understøtter nu JSON5-udvidelser.
  • Forbedret forespørgselsplanlægger. Som standard er optimering af antal visninger aktiveret. Behandling af ubrugte kolonner i underforespørgsler er elimineret. Forbedret implementering af push-down optimering.
  • Tilføjet "--unsafe-testing" mulighed til kommandolinjegrænsefladen, som tillader brugen af ​​nogle farlige kommandoer, såsom ".testctrl", beregnet til brug i test. I sikker tilstand ("-safe") er brugen af ​​kommandoerne ".log on" og ".log off" tilladt. Tilføjet understøttelse af "—" afgrænsningen, for argumenter, hvorefter valgbehandling er deaktiveret. Tilføjede ":inf" og ":nan" parametre forbundet med uendelig- og NaN-værdierne.
  • Applikationsdefinerede SQL-funktionsnavne må overlappe med nøgleordene CROSS, FULL, INNER, LEFT, NATURAL, OUTER og RIGHT.
  • Funktionerne i PRAGMA integrity_check er blevet udvidet. Tilføjet kontrol for at angive NaN-værdier i kolonner med IKKE NULL-betingelsen. Forbedret informationsindhold i fejlmeddelelser.
  • Session-tilføjelsen tillader at opsnappe ændringer fra tabeller uden ROWID.
  • "Subsec"-modifikatoren er blevet tilføjet til funktioner til at arbejde med tidspunkter og datoer for at bruge brøkdele af sekunder.
  • Standardrekursionsdybden for arrays og JSON-objekter er blevet reduceret fra 2000 til 1000.

Derudover er udgivelsen af ​​DuckDB 0.8.0 DBMS blevet skabt, som udvikler en version af SQLite, udvidet med muligheder og optimeringer til at udføre analytiske forespørgsler, der dækker en væsentlig del af de lagrede data, for eksempel at udføre aggregering af hele indholdet af borde eller sammenlægning af flere store borde. Giver en avanceret dialekt af SQL, der inkluderer yderligere funktioner til behandling af meget komplekse og tidskrævende forespørgsler og understøtter også komplekse typer (arrays, strukturer, fagforeninger), kørsel af flere forespørgsler samtidigt og kørsel af forespørgsler direkte fra CSV-, JSON- og Parquet-filer . Det er muligt at importere fra PostgreSQL DBMS.

Udover shell-koden fra SQLite bruger projektet en parser fra PostgreSQL i et separat bibliotek, Date Math-komponenten fra MonetDB, sin egen implementering af vinduesfunktioner (baseret på Segment Tree Aggregation-algoritmen), en regulært udtryksprocessor baseret på RE2-biblioteket, dets egen forespørgselsoptimering og en MVCC-kontrolmekanisme samtidig udførelse af opgaver (Multi-Version Concurrency Control), samt en vektoriseret forespørgselsudførelsesmotor baseret på Hyper-Pipelining Query Execution-algoritmen, som tillader store sæt værdier skal behandles på én gang i én operation. Projektkoden distribueres under MIT-licensen.

I den nye version af DuckDB:

  • Tilføjet nye udtryk "PIVOT" og "UNPIVOT" for at omdanne rækker til kolonner og omvendt.
  • Forbedret parallelisering ved import og eksport af data. Som standard implementeres multi-threaded læsning fra CSV-filer og multi-threaded skrivning ved brug af Parquet, CSV og JSON formater.
  • Tilføjet "**"-operator til rekursivt iteration gennem mapper ved bestemmelse af filstier (f.eks. FRA "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Tilføjet understøttelse af fletningsoperationer (JOIN) for data i form af en tidsserie (udsnit af parameterværdier med specificerede tidsintervaller), hvor kriteriet for fletning af poster ikke er et nøjagtigt, men et omtrentligt sammenfald af værdier i et felt med tid (du kan f.eks. flette poster, tid der ikke afviger mere end 1 minut).
  • Implementeret doven indlæsning af databasemetadata, hvilket gjorde det muligt at fremskynde lanceringen af ​​DBMS'et med titusinder.
  • Tilføjet support til at forbinde brugerdefinerede funktioner i Python.
  • Tilføjet understøttelse af ADBC ​​(Arrow Database Connectivity) API til overførsel af data ved hjælp af Apache Arrow.
  • Der er implementeret en binding til integration med Swift-kode.
  • Ændrede opførselen af ​​divisionsoperatoren ("/") til at udføre flydende kommaberegninger i stedet for heltalsoperationer som standard. En ny operator "//" foreslås til heltalsdeling. Den gamle adfærd kan returneres ved at indstille "SET integer_division=true;".
  • Metoden til at tage højde for nulposter ved sortering er ændret fra "NULLS FIRST" til "NULLS LAST", dvs. NULL-værdier vil nu blive udskrevet i slutningen i stedet for begyndelsen af ​​listen. Den gamle adfærd kan returneres ved at indstille "SET default_null_order='nulls_first';".

Derudover kan vi bemærke CG/SQL-projektet udviklet af Facebook, som giver en kodegenerator til brug af lagrede procedurer med SQLite. CG/SQL giver dig mulighed for at skrive lagrede procedurer på en speciel dialekt af T-SQL (Transact-SQL), som tillader at kalde funktioner i standard C-biblioteket og få adgang til data i SQLite. De genererede lagrede procedurer kompileres i C-kode, der bruger SQLite C API til at udføre specificerede handlinger og behandle komplekse forespørgsler. Kompilerede lagrede procedurer kan forbindes til C-, Java- og Objective-C-programmer. Projektkoden er skrevet i C og distribueres under MIT-licensen.

Kilde: opennet.ru

Tilføj en kommentar