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, potřebují přístup k dané oblasti sdílené paměti z kódu vytvořené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í. 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 sdílených binárních souborech knihovny.

Tyto soubory lze také načíst do paměti při spuštění serveru a mohou implementovat kód, který obvykle odklání přirozený průběh spuštění PostgreSQL, aby změnily výchozí fungování prostředí. 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