Erweiterungen und Module in Azure Database for PostgreSQL – Flexible Server

Erweiterungen und Module in PostgreSQL sind leistungsstarke Tools, mit denen Sie die Funktionalität des Datenbanksystems erweitern können. Sie reichen von einfachen SQL-Objekten bis hin zu komplexen Binärbibliotheken und bieten zusätzliche Features und Funktionen, die in der Kern-PostgreSQL-Verteilung nicht verfügbar sind.

Erweiterungen

Zum Definieren einer Erweiterung benötigen Sie mindestens eine Skriptdatei , die die SQL-Befehle enthält, um die durch die Erweiterung verteilten Objekte zu erstellen, und eine Steuerelementdatei , die eine grundlegende Eigenschaft der Erweiterung selbst angibt.

Wenn Sie in einer Datenbank Erweiterungen erstellen, installieren oder laden, wird eine Reihe von Objekten bereitgestellt, mit denen die Funktionalität der Engine erweitert werden soll. Diese Objekte können Funktionen, Operatoren, Rollen, Datentypen, Zugriffsmethoden und andere Datenbankobjekttypen sein.

Wenn Sie Erweiterungen aus einer Datenbank ablegen, deinstallieren oder entladen, entfernt der Prozess alle Objekte, die die Erweiterung erstellt hat. Eine Ausnahme liegt vor, wenn andere Objekte in der Datenbank von einem der Objekte abhängig sind, die von der Erweiterung definiert wurden.

Sie können die Implementierung der Funktionalität schreiben, die von diesen Objekten bereitgestellt wird, die von der Erweiterung in SQL oder PL/pgSQL verteilt werden. Sie können sie aber auch in einer separaten freigegebenen Bibliotheksdatei (Binärdatei) implementieren. Dies ist das Ergebnis der Kompilierung des Quellcodes (normalerweise in C oder Rust geschrieben), der die Funktionalität implementiert.

In PostgreSQL verwalten Sie Erweiterungen über die CREATE EXTENSIONBefehle , ALTER EXTENSION, , DROP EXTENSIONund COMMENT ON EXTENSION befehle.

  • CREATE EXTENSION erstellt, installiert oder lädt eine Erweiterung in die Datenbank, in der Sie den Befehl ausführen.
  • ALTER EXTENSION aktualisiert die Erweiterung auf eine neuere Version.
  • DROP EXTENSION entfernt, deinstalliert oder entlädt eine Erweiterung aus der Datenbank, in der Sie den Befehl ausführen.
  • COMMENT ON EXTENSION speichert einen Kommentar über die Erweiterung als Datenbankobjekt.

Wenn der Server gestartet wird, definiert er einen Speicherbereich, auf den alle Back-End-Prozesse zugreifen können, um alle Workloads kooperativ auszuführen. Im PostgreSQL-Jargon wird dieser Arbeitsspeicherbereich als gemeinsam genutzter Arbeitsspeicher bezeichnet.

Einige Erweiterungen, die Funktionen mithilfe freigegebener Bibliotheken implementieren, müssen über den in diesen Bibliotheken integrierten Code auf diesen freigegebenen Speicherbereich zugreifen. Diese Erweiterungen haben eine weitere Anforderung, d. h., dass ihre freigegebenen Bibliotheksdateien vom Hauptmodulprozess geladen werden müssen, sobald der Server gestartet wird. Befolgen Sie für diese Bibliotheken die Anweisungen zum Laden von Bibliotheken.

Module

Obwohl sie keine Erweiterungen sind, da sie keine Steuerelementdatei und eine Skriptdatei zum Bereitstellen gebündelter SQL-Objekte in einer Datenbank haben, implementiert eine andere Form der Erweiterbarkeit in PostgreSQL Funktionen in eigenständigen freigegebenen Binärbibliotheksdateien.

Sie können diese Dateien beim Starten des Servers im Arbeitsspeicher laden. Sie können Code implementieren, der in der Regel vom normalen Ausführungspfad von PostgreSQL abweicht, um das Standardverhalten der Engine zu ändern. Solche Verhaltensänderungen zielen normalerweise darauf ab, einige eingeschränkte Funktionen des Moduls zu verstärken.

Azure Database for PostgreSQL unterstützt die folgenden Module:

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json