Rozšíření a moduly
Rozšíření a moduly v PostgreSQL jsou výkonné nástroje, které uživatelům umožňují rozšířit funkce databázového systému. Můžou se lišit od jednoduchých objektů SQL až po složité binární knihovny a poskytují další funkce a funkce, které nejsou k dispozici v základní distribuci PostgreSQL.
Rozšíření
Chcete-li definovat příponu, je nutné alespoň jeden soubor skriptu, který obsahuje příkazy SQL k vytvoření objektů distribuovaných příponou a jeden řídicí soubor, který určuje několik základních vlastností samotného rozšíření.
Při vytváření, instalaci nebo načtení rozšíření v databázi nasadí sadu objektů sady, které mají za cíl rozšířit funkčnost modulu. Tyto objekty mohou být funkce, operátory, role, datové typy, metody přístupu a další typy databázových objektů.
Když dojde k vyřazení, odinstalaci nebo uvolnění rozšíření z databáze, odeberou se všechny objekty vytvořené rozšířením. Výjimkou tohoto případu je, že existují jiné objekty v databázi se závislostmi na některém z objektů definovaných rozšířením.
Implementace funkcí poskytovaných těmito objekty distribuovaným rozšířením může být napsána v SQL nebo PL/pgSQL. Dá se ale implementovat také v samostatném souboru sdílené knihovny (binární), což je výsledek kompilace zdrojového kódu (obvykle napsaného v jazyce C nebo Rust), který implementuje funkce.
V PostgreSQL se rozšíření spravují prostřednictvím CREATE EXTENSION
příkazů , ALTER EXTENSION
, DROP EXTENSION
a COMMENT ON EXTENSION
příkazů.
-
CREATE EXTENSION
vytvoří, nainstaluje nebo načte rozšíření do databáze, ve které se příkaz spustí. -
ALTER EXTENSION
aktualizuje rozšíření na novější verzi. -
DROP EXTENSION
zahodí, odinstaluje nebo uvolní rozšíření z databáze, ve které se příkaz spustí. -
COMMENT ON EXTENSION
uloží komentář k rozšíření jako databázovému objektu.
Když je server spuštěný, definuje oblast paměti, ke které mají všechny back-endové procesy přístup, aby mohly spolupracovat se všemi úlohami. V žargonu PostgreSQL se tato oblast paměti označuje jako sdílená paměť.
Některá rozšíření, která implementují funkce pomocí sdílených knihoven, vyžadují přístup k této sdílené paměti z kódu integrovaného v těchto knihovnách. Tato rozšíření mají jeden další požadavek, což znamená, že soubory sdílené knihovny musí být načteny procesem hlavního modulu, jakmile se server spustí. U těchto knihoven musíte postupovat podle pokynů v knihovnách načítání.
Moduly
I když se nejedná o rozšíření jako taková, protože nemají řídicí soubor a soubor skriptu pro nasazení sbalovaných objektů SQL do databáze, další forma rozšiřitelnosti v PostgreSQL se skládá z implementace funkcí v samostatných souborech sdílených knihoven.
Tyto soubory lze také načíst do paměti při spuštění serveru a mohou implementovat kód, který obvykle obtěžuje cestu přirozeného spuštění PostgreSQL a mění výchozí fungování modulu. Takové změny chování obvykle mají za cíl rozšířit některé omezené funkce motoru.
Azure Database for PostgreSQL podporuje následující moduly:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json