Datenbank PostgreSQL 15 Beta 1 hört auf den Befehl MERGE
Neben der neu eingefĂĽhrten SQL-Anweisung erweitert die Open-Source-Datenbank die JSON/SQL-Funktionen und das Komprimieren von Backups.
Planmäßig zum jährlichen Termin im Mai ist die erste Beta von PostgreSQL 15 erschienen. Das Release bringt einige neue Funktionen, allen voran die SQL-Anweisung MERGE
. Für Backups kennt die quelloffene Datenbank nun zusätzliche Wege zum Komprimieren, und bei der logischen Replikation kann sie nach Spalten und Zeilen filtern.
Wie üblich bringt das Release einige Performance-Optimierungen mit. Version 15 soll unter anderem große Datensätze deutlich schneller sortieren. Das gilt vor allem, wenn die Größe jenseits des im Parameter work_mem
gesetzten Wertes liegt, der die maximale Arbeitsspeichergröße für Query Workspaces angibt. Auch Fensterfunktionen, die row_number()
, rank()
oder count()
verwenden, sollen performanter laufen. Das Aufräumen selektierter Listen von Duplikaten über SELECT DISTINCT
arbeitet im aktuellen Release parallelisiert.
Der Elefant hört auf den Drei-in-eins-Befehl
Der Befehl MERGE
gehört seit SQL:2003 zum Standard der Datenbanksprache. Er dient zum Überführen mehrerer Zeilen aus einer Quelle in eine Tabelle und kann die Befehle INSERT
, UPDATE
und DELETE
kombinieren.
MERGE INTO Ziel
USING Quelle
ON Bedingung
WHEN MATCHED THEN
...
WHEN NOT MATCHED THEN
...
Nach der Angabe des Ziels legt der nun in PostgreSQL eingefĂĽhrte Befehl in ON
eine Bedingung fest. Wenn sie erfĂĽllt ist, gelten die Zeilen als ĂĽbereinstimmend. Daraufhin legt WHEN MATCHED
fest, was passiert, wenn die Bedingung erfĂĽllt ist. Eine typische Folge ist ein UPDATE
. Analog dazu bestimmt WHEN NOT MATCHED
, wie die Datenbank mit Zeilen umgeht, die nicht im Ziel vorhanden sind. Dann könnte der Befehl sie über INSERT
einfügen. Zusätzlich lässt sich eine Bedingung für das Löschen von Inhalten festlegen.
In PostgreSQL bis Version 14 ließ sich ein ähnliches Vorgehen nur mit Stored Procedures oder in eingeschränkter Form über INSERT .. ON CONFLICT
umsetzen, das ein UPDATE
als Konfliktbehandlung bei vorhandenen Zeilen definieren kann.
Ergänzungen bei JSON und Regex
Das aktuelle Release bringt zudem erweiterte Funktionen fĂĽr den SQL/JSON-Standard zum Arbeiten mit JSON-Inhalten in SQL-Datenbanken. Unter anderem kann PostgreSQL nun erstere mit der Funktion JSON_TABLE
direkt in eine Tabelle ĂĽberfĂĽhren. Umgekehrt bietet sie neue Funktionen, um JSON-Daten zu generieren. Auch die Funktionen fĂĽr Abfragen auf JSON-Inhalte erweitert das Release.
Im Bereich der regulären Ausdrücke bringt Version 15 ebenfalls einige Ergänzungen mit: regexp_count
zählt die passenden Aufkommen und regexp_instr
liefert die Position des n-ten Treffers zurĂĽck. regexp_like
überprüft, ob ein regulärer Ausdruck in einem String vorhanden ist und gibt schlicht true
oder false
zurĂĽck. SchlieĂźlich gibt regexp_substr
entweder den Teil einer Zeichenkette zurück, auf den der reguläre Ausdruck passt, oder NULL
, falls es keine Ăśbereinstimmung gibt.
Backup und Replikation
Nachdem die Vorversion für Backups die LZ4-Komprimierung eingeführt hat, bietet PostgreSQL 15 zusätzlich Zstandard (zstd). Das Backup-Utility für Cluster pg_basebackup kann nun serverseitig mit Gzip, LZ4 oder zstd komprimieren.
Bei der logischen Replikation filtert das aktuelle Release auf Wunsch sowohl nach Zeilen als auch nach Spalten. AuĂźerdem lassen sich neuerdings nicht nur alle Tabellen einer Datenbank, sondern auch alle Tabellen eines Schemas bereitstellen. Neu ist der Parameter disable_on_error
, der das logische Replizieren bei einem Fehler abbricht. DarĂĽber hinaus gibt es eine neue Anweisung fĂĽr den Umgang mit Konflikten.
Weitere Neuerungen in PostgreSQL 15 unter anderem in den Bereichen Administration und Security lassen sich der AnkĂĽndigung entnehmen. Einen festen Termin fĂĽr die endgĂĽltige Version hat das Team noch nicht bekannt gegeben. Die Betaphase dauert bei PostgreSQL ĂĽblicherweise etwa vier Monate, sodass im September oder Oktober mit dem Release zu rechnen sein dĂĽrfte.
(rme)