Udostępnij za pośrednictwem


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, jest to co najmniej jeden plik skryptu, który zawiera polecenia SQL do utworzenia obiektów dystrybuowanych przez rozszerzenie i jeden plik kontrolny, 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.

Gdy rozszerzenia są porzucane, odinstalowywane lub zwalniane z bazy danych, wszystkie obiekty utworzone przez rozszerzenie zostaną usunięte. 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ń , DROP EXTENSIONALTER 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ą funkcje przy użyciu bibliotek udostępnionych, wymagają dostępu do tej pamięci udostępnionej z kodu wbudowanego w te biblioteki. Rozszerzenia te mają jeszcze jedno wymaganie, co oznacza, że ich pliki biblioteki udostępnionej muszą być ładowane przez główny proces aparatu, gdy tylko serwer się uruchomi. 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 składa się z implementowania funkcji w autonomicznych plikach bibliotek udostępnionych.

Te pliki mogą być również ładowane w pamięci po uruchomieniu serwera i mogą implementować kod, który zwykle objazd ścieżki naturalnego wykonywania bazy danych PostgreSQL i zmienia domyślne działanie aparatu. 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