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 EXTENSION
poleceń , DROP EXTENSION
ALTER 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