05 Oktober 2017

PostgreSQL® 10

PostgreSQL® hat heute Nachmittag Version 10 der „forschrittlichsten Open-Source-Datenbank der Welt“ veröffentlicht, wie der Wahlspruch des Projektes seit einigen Jahren lautet. Auch der Sprung von Version 9.x auf jetzt 10 weist auf etliche Neuheiten hin.

Die in Version 9.6 eingeführte Möglichkeit, die Ausführung einzelner SQL-Queries zu parallelisieren wurde für Version 10 auf deutlich mehr Query-Typen erweitert und ist nun standardmäßig aktiviert. Über den Konfigurationsparameter max_parallel_workers_per_gather wird festgelegt, wieviele zusätzliche Worker-Prozesse hinzugezogen werden können, um den eigentlichen Backend-Prozess bei der Query-Ausführung zu unterstützen. Die Standardeinstellung ist 2.

Bei sehr großen Tabellen kann es vorteilhaft sein, die Daten über mehrere Teil-Tabellen, Partitionen genannt, zu verteilen. Diese Möglichkeit bestand bei PostgreSQL® schon immer, allerdings mussten aufwändig Trigger-Prozeduren geschrieben werden, um Daten beim Insert und Update in die gewünschte Partition zu lenken. In PostgreSQL® 10 können Partitionen nun deklarativ beschrieben werden, womit der Overhead der Programmierung entfällt, was auch weniger fehleranfällig sein dürfte. Außerdem ist das Routing der Tupel in die Partitionen nun transparent, d.h. das bei der Benutzung von Triggern auftretende „0 rows affected“ gibt nun die korrekte Zeilenzahl zurück.

Der letzte große Versionssprung von 8.x auf 9.x rührte von der Einführung von Streaming Replication in PostgreSQL®. Damit können ganze Cluster im wesentlichen Byte-identisch (physikalisch) auf Standby-Server repliziert werden. PostgreSQL® 10 führt als Alternative nun logische Replikation ein, wodurch es möglich ist, einzelne Tabellen oder Datenbanken zu spiegeln. Die Basis bildet wie bei physikalischer Replikation das Write-Ahead-Log, so dass eine robuste Datenübertragung auf Tupel-Ebene gewährleistet wird. (Eine fehleranfällige „Replikation“ auf SQL-Statement-Ebene wie bei manchen anderen Datenbanken findet nicht statt.)

Die bisher schon vorhandene Möglichkeit der synchronen Replikation auf einen Slave-Server ist in PostgreSQL® 10 nun um Quorum-Commit erweitert worden. Dabei gibt der Administrator an, wie viele Slave-Server die Daten einer Transaktion erhalten haben sollen, bevor der Commit zur Anwendung und dem User bestätigt wird.

Hash-Indexe gibt es schon seit langem in PostgreSQL®, aber die Performance war schlecht bei vielen parallelen Zugriffen, und da Hash-Indexe nicht im WAL geloggt wurden, waren sie nicht Crash-sicher und konnten nicht auf Slave-Server repliziert werden. In PostgreSQL® 10 ist das korrigiert, die Indexe können nun in allen Szenarien zum Einsatz kommen, und haben auch alle Performanceverbesserungen „nachgereicht“ bekommen, mit denen Btree-Indexe in den letzten Jahren verbessert wurden.

Beim Thema Sicherheit ist neben dem klassischen md5-Passwort-Hashing nun auch SCRAM-SHA-256 verfügbar, um den Zugriff auf den Datenbankserver zu härten.

Eine Zusammenfassung aller neuen Features kann in der Featurematrix und in den Release Notes eingesehen werden.

Das Release steht über www.postgresql.org, die Repositories apt.postgresql.org (Debian, Ubuntu) und yum.postgresql.org (RedHat, CentOS), und direkt über die Linux-Distributionen zur Verfügung.

Die credativ GmbH hat die Entwicklung von PostgreSQL® mit Patches und Bugreports unterstützt, und ist der Hauptakteur bei der Pflege von apt.postgresql.org und PostgreSQL® in Debian. Dort wurden in den vergangenen Wochen Dutzende von Paketen für PostgreSQL® 10 aktualisiert und fit gemacht. Sollte „Ihre“ PostgreSQL®-Extension dort noch nicht verfügbar sein, sprechen Sie uns an!

Kategorien: Aktuelles PostgreSQL®
Tags: PostgreSQL®

CB

über den Autor

Christoph Berg

Senior Berater

zur Person

Christoph Berg ist als Senior Berater im credativ Datenbank-Team tätig. Als Debian-Developer und PostgreSQL-Contributor kümmert er sich außerdem um die PostgreSQL-Paketierung und andere Belange im Debian Quality-Assurance-Team. In der Freizeit ist er Funkamateur auf Kurzwelle und Satelliten.

Beiträge ansehen


Beitrag teilen: