Freigeben über


Erweiterungen und Module

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

Erweiterungen

Zum Definieren einer Erweiterung ist mindestens eine Skriptdatei erforderlich, die die SQL-Befehle enthält, um die objekte zu erstellen, die von der Erweiterung verteilt werden, und eine Steuerelementdatei , die einige grundlegende Eigenschaften der Erweiterung selbst angibt.

Wenn Erweiterungen erstellt, installiert oder in einer Datenbank geladen werden, stellen sie eine Reihe von Paketobjekten bereit, die darauf abzielen, die Funktionalität des Moduls zu erweitern. Diese Objekte können Funktionen, Operatoren, Rollen, Datentypen, Zugriffsmethoden und andere Datenbankobjekttypen sein.

Wenn Erweiterungen gelöscht, deinstalliert oder aus einer Datenbank entladen werden, werden alle Objekte entfernt, die von der Erweiterung erstellt wurden. Eine Ausnahme liegt vor, wenn andere Objekte in der Datenbank von einem der Objekte abhängig sind, die von der Erweiterung definiert wurden.

Die Implementierung der Funktionalität, die von den Objekten bereitgestellt wird, die von der Erweiterung verteilt werden, kann in SQL oder PL/pgSQL geschrieben werden. Sie kann aber auch in einer separaten Datei für freigegebene Bibliotheken (Binärdatei) implementiert werden. Dies ist das Ergebnis der Kompilierung des Quellcodes (normalerweise in C oder Rust geschrieben), der die Funktionalität implementiert.

In PostgreSQL werden Erweiterungen über die Befehle CREATE EXTENSION, ALTER EXTENSION, DROP EXTENSION und COMMENT ON EXTENSION verwaltet.

  • CREATE EXTENSION erstellt, installiert oder lädt eine Erweiterung in der Datenbank, in der der Befehl ausgeführt wird.
  • ALTER EXTENSION aktualisiert die Erweiterung auf eine neuere Version.
  • DROP EXTENSION entfernt, deinstalliert oder entlädt eine Erweiterung aus der Datenbank, in der der Befehl ausgeführt wird.
  • 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 Funktionalität mithilfe freigegebener Bibliotheken implementieren, müssen von dem in diesen Bibliotheken integrierten Code aus auf diesen gemeinsam genutzten 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. Für diese Bibliotheken müssen Sie die Anweisungen in Laden von Bibliotheken befolgen.

Module

Obwohl keine Erweiterungen als solche betrachtet werden, da sie keine Steuerelementdatei und eine Skriptdatei zum Bereitstellen gebündelter SQL-Objekte in einer Datenbank haben, besteht eine andere Form der Erweiterbarkeit in PostgreSQL darin, Funktionen in eigenständigen freigegebenen Binärbibliotheksdateien zu implementieren.

Diese Dateien können auch im Arbeitsspeicher geladen werden, wenn der Server gestartet wird, und Code ausführen, der normalerweise den natürlichen Ausführungspfad von PostgreSQL umleitet, um die Standardfunktion 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