Rozšíření a moduly na flexibilním serveru Azure Database for PostgreSQL

Rozšíření a moduly v PostgreSQL jsou výkonné nástroje, které můžete použít k rozšíření funkcí databázového systému. Liší se od jednoduchých objektů SQL až po složité binární knihovny a poskytují další funkce a funkce, které nejsou dostupné v základní distribuci PostgreSQL.

Rozšíření

K definování rozšíření potřebujete alespoň jeden soubor skriptu , který obsahuje příkazy SQL k vytvoření objektů distribuovaných příponou, a jeden řídicí soubor , který určuje základní vlastnosti samotné přípony.

Když v databázi vytvoříte, nainstalujete nebo načtete rozšíření, nasadí se sada sdružených objektů, jejichž cílem je rozšířit funkčnost databázového stroje. Tyto objekty mohou být funkce, operátory, role, datové typy, metody přístupu a další typy databázových objektů.

Když odstraníte, odinstalujete nebo uvolníte rozšíření z databáze, proces odebere všechny objekty, které rozšíření vytvořilo. 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.

Můžete napsat implementaci funkcí poskytovaných těmito objekty distribuovaným rozšířením v SQL nebo PL/pgSQL. Můžete ho ale také implementovat 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 spravujete rozšíření pomocí příkazů CREATE EXTENSION, ALTER EXTENSION, DROP EXTENSION a COMMENT ON EXTENSION.

  • CREATE EXTENSION vytvoří, nainstaluje nebo načte rozšíření do databáze, ve které příkaz spustíte.
  • ALTER EXTENSION aktualizuje rozšíření na novější verzi.
  • DROP EXTENSION zahodí, odinstaluje nebo uvolní rozšíření z databáze, ve které příkaz spustíte.
  • COMMENT ON EXTENSION uloží komentář k rozšíření jako databázovému objektu.

Když se server spustí, 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, potřebují přístup k této oblasti sdílené paměti z kódu integrovaného v těchto knihovnách. Tato rozšíření mají ještě jeden požadavek, který spočívá v tom, že soubory sdílené knihovny musí být načteny hlavním procesem modulu, jakmile se server spustí. Pro tyto knihovny postupujte podle pokynů v části Načtení knihoven.

Moduly

I když se nepovažují za rozšíření, protože nemají řídicí soubor a soubor skriptu pro nasazení sbalovaných objektů SQL do databáze, další forma rozšiřitelnosti v PostgreSQL implementuje funkce v samostatných sdílených souborech binární knihovny.

Tyto soubory můžete načíst do paměti při spuštění serveru. Mohou implementovat kód, který obvykle odklání přirozený průběh vykonávání PostgreSQL, aby změnil výchozí fungování jeho jádra. 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