PostgreSQL 9.5 erreicht Beta-Status

In der Beta sind alle geplanten Features der Release-Version enthalten. Dazu gehören Sicherheit auf Zeilenebene und Komfortfeatures für externe Schemata und Tabellen.

In Pocket speichern vorlesen Druckansicht 66 Kommentare lesen
Elefanten
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Mit der ersten Beta der Version 9.5 von PostreSQL fordert deren Global Development Group Anwender dazu auf, ihre Anwendungen gegen das aktuelle Datenbanksystem zu testen. Alle Features und APIs sollten fertig sein. Bis zur finalen Version seien keine bis minimale Änderungen zu erwarten.

Zwei wichtige Neuerungen betreffen den Umgang mit Daten auf entfernten Servern. Über IMPORT FOREIGN SCHEMA importieren Administratoren das komplette Schema einer entfernten Quelle. Bisher mussten sie dafür die Struktur jeder einzelnen Tabelle bestimmen. Wer nur Ausschnitte benötigt, kann mit dem Parameter LIMIT TO diejenigen Tabellen bestimmen, die er importieren möchte. Umgekehrt schließt der Parameter EXLCUDE explizit einzelne Tabellen aus.

Das Schlüsselwort INHERITS funktioniert nun ebenfalls für externe Tabellen. Damit erstellen Nutzer Tabellen auf externen Servern als Kinder lokaler Tabellen oder umgekehrt. Dasselbe funktioniert auch im Nachhinein über INHERIT:

# ALTER TABLE remote.articles INHERIT master_articles;

PostgreSQL 9.5 kennt Zugriffsrechte auf Zeilenebene über RLS (Row-Level Security). Die Policies dafür funktionieren ähnlich wie typische Abfragen. Folgendes Beispiel aus den Release Notes erlaubt dem angemeldeten Nutzer nur die Ansicht der Datensätze, in denen das Feld username seinem Benutzernamen entspricht:

CREATE TABLE log (id serial primary key,
username text,log_event text);
CREATE POLICY policy_user_log ON log
FOR ALL TO PUBLIC USING (username = current_user)
ALTER TABLE log ENABLE ROW LEVEL SECURITY;

Die zweite Codezeile erstellt die gewünschte Policy und die dritte aktiviert die Zugriffsrechte auf Zeilenebene. PostgreSQL unterstützt mehrere Policies, die additiv gehandhabt werden: Eine Abfrage enthält alle Daten, die mindestens eine der Bedingungen erfüllt.

Abfragen lassen sich über GROUPING SETS über mehrere Spalten gruppieren. Wenn eine Produktdatenbank Spalten für Farben, Formen und Materialien enthält, gibt eine Abfrage wie

# SELECT color, shape, material, count(*) FROM items
GROUP BY GROUPING SETS (color, shape, material, ());

eine Liste, die beispielsweise erst die Summe der roten Gegenstände, dann der blauen, dann der kreisförmigen, dann der quadratischen, dann derjenigen aus Holz und schließlich der aus Metall enthält. Über CUBE werden die Gruppen kombiniert und zusätzlich alle roten Kreise, alle Quadrate aus Holz und alle blauen Kreise aus Metall gezählt. Der Parameter ROLLUP funktioniert ähnlich, gruppiert aber nur vom linken zum rechten Parameter.

Ein bereits in anderen Datenbanken bekanntes Feature kommt ebenfalls mit Version 9.5: UPSERT, also die Konfliktbehandlung über INSERT .. ON CONFLICT UPDATE. JSONB-Daten, die mit PostgreSQL 9.4 eingeführt wurden, können nun mit verschiedenen Funktionen verändert werden. Details dazu und zu weiteren Neuerungen wie den Block Range Indexes (BRIN) als abgespeckter Index für große Tabellen stehen in den Release Notes zu PostgreSQL 9.5. Auf der Downloadseite gibt es die aktuellen Binaries für Linux, Windows, OS X, BSD und Solaris. (rme)