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, mit denen die durch die Erweiterung verteilten Objekte erstellt werden, und eine Steuerungsdatei, 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 Arbeitsspeicherbereich, 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, erfordern, dass der in diesen Bibliotheken integrierte Code auf diesen freigegebenen Arbeitsspeicher zugreifen kann. Diese Erweiterungen haben eine weitere Anforderung: Ihre freigegebenen Bibliotheksdateien müssen vom Hauptmodulprozess geladen werden, sobald der Server gestartet wird. Für diese Bibliotheken müssen Sie die Anweisungen in Laden von Bibliotheken befolgen.

Module

Eine weitere Möglichkeit für die Erweiterbarkeit in PostgreSQL besteht darin, Funktionalität in eigenständigen freigegebenen Bibliotheksdateien zu implementieren. Dies gilt jedoch nicht als Erweiterung im eigentlichen Sinne, da dieser Ansatz keine Steuerungsdatei und keine Skriptdatei verwendet, um SQL-Objekte als Paket in einer Datenbank bereitzustellen.

Diese Dateien können auch in den Arbeitsspeicher geladen werden, wenn der Server gestartet wird, und sie können Code implementieren, der normalerweise den natürlichen Ausführungspfad von PostgreSQL umleitet und die Standardfunktionsweise des Moduls ändert. 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