Delen via


Extensies en modules

Extensies en modules in PostgreSQL zijn krachtige hulpprogramma's waarmee gebruikers de functionaliteit van het databasesysteem kunnen uitbreiden. Ze kunnen variëren van eenvoudige SQL-objecten tot complexe binaire bibliotheken, met extra functies en mogelijkheden die niet beschikbaar zijn in de postgreSQL-kerndistributie.

Uitbreidingen

Als u een extensie wilt definiëren, is het ten minste één scriptbestand vereist dat de SQL-opdrachten bevat om de objecten te maken die worden gedistribueerd door de extensie en één besturingselementbestand dat enkele basiseigenschappen van de extensie zelf opgeeft.

Wanneer extensies worden gemaakt, geïnstalleerd of geladen in een database, implementeren ze een set bundelobjecten die de functionaliteit van de engine willen uitbreiden. Deze objecten kunnen functies, operators, rollen, gegevenstypen, toegangsmethoden en andere databaseobjecttypen zijn.

Wanneer extensies worden verwijderd, geïnstalleerd of losgekoppeld uit een database, worden alle objecten die door de extensie zijn aangemaakt, verwijderd. Een uitzondering hierop is wanneer er andere objecten in de database zijn met afhankelijkheden van een van de objecten die door de extensie zijn gedefinieerd.

De implementatie van de functionaliteit van deze objecten die door de extensie worden gedistribueerd, kan worden geschreven in SQL of PL/pgSQL. Maar het kan ook worden geïmplementeerd in een afzonderlijk bestand met gedeelde bibliotheken (binair), wat het gevolg is van het compileren van de broncode (meestal geschreven in C of Rust) waarmee de functionaliteit wordt geïmplementeerd.

In PostgreSQL worden extensies beheerd via de CREATE EXTENSION, ALTER EXTENSIONen DROP EXTENSIONCOMMENT ON EXTENSION opdrachten.

  • CREATE EXTENSION maakt, installeert of laadt een extensie in de database waarin de opdracht wordt uitgevoerd.
  • ALTER EXTENSION werkt de extensie bij naar een nieuwere versie.
  • DROP EXTENSION verwijdert of verwijdert een extensie uit de database waarin de opdracht wordt uitgevoerd.
  • COMMENT ON EXTENSION slaat een opmerking op over de extensie als een databaseobject.

Wanneer de server wordt gestart, wordt een geheugengebied gedefinieerd waartoe alle back-endprocessen toegang hebben, om eventuele workloads gezamenlijk uit te voeren. In postgreSQL-jargon wordt dat geheugengebied aangeduid als gedeeld geheugen.

Sommige extensies die functionaliteit implementeren met behulp van gedeelde bibliotheken, hebben toegang nodig tot dat gedeelde geheugengebied vanuit de code die in die bibliotheken is opgenomen. Deze extensies hebben nog een vereiste, namelijk dat hun gedeelde bibliotheekbestanden moeten worden geladen door het hoofdengineproces, zodra de server wordt gestart. Voor deze bibliotheken moet u de instructies in de laadbibliotheken volgen.

Modules

Hoewel ze niet als extensies als zodanig worden beschouwd, omdat ze geen besturingselementbestand en een scriptbestand hebben om gebundelde SQL-objecten in een database te implementeren, bestaat een andere vorm van uitbreidbaarheid in PostgreSQL uit te voeren op het implementeren van functionaliteit in zelfstandige gedeelde binaire bibliotheekbestanden.

Deze bestanden kunnen bij het opstarten van de server ook in het geheugen worden geladen en bevatten code die het natuurlijke uitvoeringspad van PostgreSQL doorgaans omleidt om de standaardwerking van de engine aan te passen. Dergelijke gedragswijzigingen zijn normaal gesproken gericht op het versterken van een beperkte functionaliteit van de motor.

Azure Database for PostgreSQL ondersteunt de volgende modules:

  • auto_explain
  • pg_failover_slots
  • pg_partman_bgw
  • wal2json