Sdílet prostřednictvím


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 EXTENSIONpříkazů , ALTER EXTENSION, DROP EXTENSIONa 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