Udostępnij za pomocą


Rozszerzenia i moduły

Rozszerzenia i moduły w usłudze PostgreSQL to zaawansowane narzędzia, które umożliwiają użytkownikom rozszerzanie funkcjonalności systemu bazy danych. Mogą wahać się od prostych obiektów SQL do złożonych bibliotek binarnych, zapewniając dodatkowe funkcje i możliwości, które nie są dostępne w podstawowej dystrybucji postgreSQL.

Rozszerzenia

Aby zdefiniować rozszerzenie, wymagany jest co najmniej jeden plik skryptu zawierający polecenia SQL do utworzenia obiektów dystrybuowanych przez rozszerzenie oraz jeden plik sterujący , który określa kilka podstawowych właściwości samego rozszerzenia.

Podczas tworzenia, instalowania lub ładowania rozszerzeń w bazie danych wdrażają zestaw obiektów pakietu, które mają na celu rozszerzenie funkcjonalności aparatu. Te obiekty mogą być funkcjami, operatorami, rolami, typami danych, metodami dostępu i innymi typami obiektów bazy danych.

Po usunięciu, odinstalowaniu lub usunięciu rozszerzeń z bazy danych zostaną usunięte wszystkie obiekty utworzone przez rozszerzenie. Wyjątkiem od tego przypadku jest sytuacja, gdy w bazie danych znajdują się inne obiekty z zależnościami dla dowolnego obiektu zdefiniowanego przez rozszerzenie.

Implementacja funkcji udostępnianych przez te obiekty dystrybuowane przez rozszerzenie może być napisana w języku SQL lub PL/pgSQL. Można go jednak również zaimplementować w osobnym pliku biblioteki udostępnionej (binarnej), co jest wynikiem kompilowania kodu źródłowego (zwykle napisanego w języku C lub Rust), który implementuje funkcjonalność.

W usłudze PostgreSQL rozszerzenia są zarządzane za pomocą CREATE EXTENSIONpoleceń , ALTER EXTENSIONDROP EXTENSION, i COMMENT ON EXTENSION .

  • CREATE EXTENSION program tworzy, instaluje lub ładuje rozszerzenie do bazy danych, w której jest wykonywane polecenie.
  • ALTER EXTENSION aktualizuje rozszerzenie do nowszej wersji.
  • DROP EXTENSION usuwa, odinstalowuje lub zwalnia rozszerzenie z bazy danych, w której jest wykonywane polecenie.
  • COMMENT ON EXTENSION przechowuje komentarz o rozszerzeniu jako obiekt bazy danych.

Po uruchomieniu serwera definiuje obszar pamięci, do którego mogą uzyskiwać dostęp wszystkie procesy zaplecza, w celu współpracy uruchamiania dowolnych obciążeń. W żargonie postgreSQL ten obszar pamięci jest określany jako pamięć współdzielona.

Niektóre rozszerzenia, które implementują funkcjonalność przy użyciu współdzielonych bibliotek, muszą uzyskać dostęp do tego obszaru pamięci współdzielonej z kodu skomponowanego w tych bibliotekach. Rozszerzenia te mają jeszcze jedno wymaganie: ich pliki bibliotek współdzielonych muszą zostać załadowane przez główny proces silnika, gdy tylko serwer zostanie uruchomiony. W przypadku tych bibliotek należy postępować zgodnie z instrukcjami w temacie Ładowanie bibliotek.

Moduły

Mimo że rozszerzenia nie są traktowane jako takie, ponieważ nie mają pliku kontrolnego i pliku skryptu do wdrażania powiązanych obiektów SQL w bazie danych, inna forma rozszerzalności w bazie danych PostgreSQL polega na implementowaniu funkcji w autonomicznych udostępnionych plikach bibliotek binarnych.

Te pliki mogą być również ładowane do pamięci przy uruchomieniu serwera i mogą implementować kod, który zazwyczaj zmienia naturalną ścieżkę wykonywania PostgreSQL, aby zmienić domyślne działanie silnika. Takie zmiany behawioralne zwykle mają na celu wzmacnianie niektórych ograniczonych funkcji silnika.

Usługa Azure Database for PostgreSQL obsługuje następujące moduły:

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json