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
Voor het definiëren van een extensie is 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 aangeeft.
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, verwijderd of uit een database worden verwijderd, worden alle objecten die door de extensie zijn gemaakt, 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 EXTENSION
en DROP EXTENSION
COMMENT 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, definieert deze een geheugengebied 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, vereisen toegang tot dat gedeelde geheugen vanuit de code die in deze bibliotheken is ingebouwd. 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 besturingsbestand en een scriptbestand hebben om gebundelde SQL-objecten in een database te implementeren, bestaat een andere vorm van uitbreidbaarheid in PostgreSQL uit het implementeren van functionaliteit in zelfstandige gedeelde bibliotheekbestanden.
Deze bestanden kunnen ook in het geheugen worden geladen wanneer de server wordt gestart, en ze kunnen code implementeren die doorgaans het natuurlijke uitvoeringspad van PostgreSQL afneemt en de standaardfunctie van de engine wijzigt. 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