sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa nya moduler med PostgreSQL Create Extension

Inledning

Som du kanske vet är PostgreSQL designad för utökningsbarhet och anpassning, detta innebär att vi kan utöka funktionaliteten i din databas med tillägg. PostgreSQL-tilläggsfunktionalitet gör det möjligt att bunta ihop flera SQL-objekt i ett enda paket som kan laddas eller tas bort från din databas. När du väl har laddat in den i din databas kan tillägg fungera som inbyggda funktioner.

PostgreSQL-databasen har många funktioner och erbjuder ett brett utbud av datatyper, funktioner, operatörer etc. Men ibland räcker det inte för vissa användningsfall. Vi kan enkelt utöka PostgreSQL:s funktionalitet genom tillägg. Detta är mycket användbar funktion för databasutvecklare och administratörer.

I den här bloggen kan vi ta upp två saker nedan.

  1. Hur man använder PostgreSQL-communitystödd tillägg
  2. Hur man skapar och använder tillägg i PostgreSQL

Hur man använder PostgreSQL Community-stödda tillägg

Det finns ett antal bidragsmoduler/tillägg i PostgreSQL. Dessa moduler underhålls av PostgreSQL-communityt. Vi kan använda dessa moduler och dess funktionalitet i PostgreSQL genom att skapa en tillägg.

Låt oss se hur du använder funktionaliteten för hstore-tillägget i PostgreSQL.

Hstore-tillägget

hstore-modulen implementerar hstore-datatypen som lagrar nyckel-värdepar i ett enda värde. Vi kan använda hstore-datatypen i många fall, till exempel semistrukturerad data eller rader med många attribut som sällan efterfrågas. Observera att nycklar och värden bara är textsträngar. För att använda den här funktionen måste vi skapa tillägg för den i PostgreSQL.

Låt oss se hur du använder hstore-datatypen.

CREATE TABLE books (
 book_code serial primary key,
 book_title VARCHAR (20),
 attr hstore
);

Innan du skapar hstore-datatypen måste du aktivera hstore-tillägget som laddar bidragsmodulen till din PostgreSQL.

CREATE EXTENSION hstore;

Det finns olika hstore-funktioner för att hämta data från databasen. Du kan kontrollera funktionerna och exemplen här.

Kontrollera de ytterligare medföljande modulerna i PostgreSQL.

Hur man skapar ett tillägg

Utökningsbarhet är en av de mest kraftfulla funktionerna i PostgreSQL. Du kan lägga till ny funktionalitet för ett visst användningsfall genom att använda Contrib-modulen och installera den med CREATE EXTENSION.

I det här avsnittet ska vi lära oss hur man skapar en enkel bidragsmodul och hur man använder dess funktionalitet i PostgreSQL.

Tilläggsfiler

För att kunna köra kommandot CREATE EXTENSION i din databas måste ditt tillägg behöva minst två filer:

  1. Kontrollfil
    Filformatet måste vara extension_name.control, som talar om grunderna om tillägg till PostgreSQL, och måste placeras i installationens SHAREDIR/extension-katalog.
  2. SQL-skriptfil
    Filen i formattillägget--version.sql innehåller de funktioner som du vill lägga till.

Filformatet för kontrollfilen i tillägget är samma som postgresql.conf-filen, nämligen en lista med parameter_name =värdetilldelningar, en per rad.

Exempel

Vänligen kontrollera nedanstående kompletta exempel på en SQL-endast-tillägg, skapa Oracle-kompatibel NVL-funktion i PostgreSQL. Det finns många fall men här kan vi till exempel bara överväga ett fall.

SQL-skriptfilen nvlfunc--1.0.sql ser ut så här...

Nvlfunc--1.0.sql-fil:

--complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION nvlfunc" to load this file. \quit

CREATE OR REPLACE FUNCTION public.NVL(SMALLINT,SMALLINT)
RETURNS SMALLINT AS $$
SELECT COALESCE($1,$2);
$$ LANGUAGE SQL IMMUTABLE;

Kontrollfilen nvlfunc ser ut så här...

Nvlfunc.conntrol-fil:

# nvlfunc extension
comment = 'Oracle compatible nvl function'
default_version = '1.0'
module_pathname = '$libdir/nvlfunc'
relocatable = false

Även om du knappast behöver en makefil för att installera dessa filer i rätt katalog, kan du använda en Makefile som innehåller detta:

Makefile:

EXTENSION = nvlfunc
DATA = nvlfunc--1.0.sql

PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

Om du har implementerat funktionen med "C"-språket måste du lägga till filen i makefilen.

Installation

Kommandot make install kommer att installera kontrollfilen och sql-skriptfilen i rätt katalog som rapporterats av pg_config.

När filerna är installerade, använd kommandot CREATE EXTENSION för att ladda objekten till en viss databas i PostgreSQL.

Kontrollera följande steg för att installera tillägget nvlfunc och du kan också lägga till den här filen i din tilläggskatalog:

INSTALL.nvlfunc-fil:

This module is a PostgreSQL extension which provides the Oracle compatible nvl function feature.
Use below command in source directory of nvlfunc to install the module.
make install
Then use the below command to create extension nvlfunc in database.
CREATE EXTENSION nvlfunc;
Use the below command to remove the nvlfunc extension from database.
DROP EXTENSION nvlfunc;
Use below command in source directory of nvlfunc to uninstall the module.
make uninstall
Note:
This extension module requires PostgreSQL 9.1 or later because CREATE EXTENSION
feature is available in PostgreSQL 9.1 and later version.

PostgreSQL-tillägg måste installeras i din databas innan du kan använda deras funktionalitet. För att installera ett visst tillägg, kör kommandot CREATE EXTENSION från psql för att ladda de paketerade objekten till databasen.

Ladda ner Whitepaper Today PostgreSQL Management &Automation med ClusterControlLäs om vad du behöver veta för att distribuera, övervaka, hantera och skala PostgreSQLDladda Whitepaper

Test

När du väl har skapat tillägget rekommenderas det att skapa ett testfall för det tillägget så att när du installerar den här modulen i en annan PostgreSQL-version kan du sedan kontrollera om alla testfall fungerar som förväntat eller inte.

Detta är ett valfritt steg men du kan skapa det. Testfallen ser ut så här:

sql/nvlfunc.sql-fil:

SELECT NVL(NULL::SMALLINT, 11::SMALLINT);

Sedan kan du lägga till förväntad utdata i en annan fil. Den förväntade utdatafilen ser ut så här:

expected/nvlfunc.out fil:

SELECT NVL(NULL::SMALLINT, 11::SMALLINT);
 nvl 
-----
  11
(1 row)

Detta är bara ett exempel, det är därför bara ett testfall läggs till. Men när du skapar ett nytt tillägg kan du lägga till fler testfall.

Nvlfunc-tilläggskatalogstruktur:

# mkdir nvlfunc
# cd nvlfunc
# ls
Makefile         nvlfunc.control    nvlfunc--1.0.sql    sql     expected    INSTALL.nvlfunc    README

Proffs

  1. Lätt att utöka PostgreSQL-funktionaliteten
  2. Mycket lätt att skapa och installera tillägget
  3. Lätt att testa för regressioner på olika versioner av PostgreSQL

Nackdelar

  1. Det finns inga speciella nackdelar men testa funktionen du lägger till i tillägget innan du använder den.

Slutsats

PostgreSQL-utbyggbarhet är en mycket kraftfull funktion, du kan skapa din egen tillägg för särskilda användningsfall och använda den i din produktionsdatabas. Det finns många PostgreSQL-community-stödda tillägg som hstore, postgres_fdw, dblink etc. och tredjepartstillägg som Orafce, alla används för särskilda användningsfall.


  1. Hitta nästa tillgängliga ID i MySQL

  2. Online SQL-syntaxkontroll som överensstämmer med flera databaser

  3. Skapa en relation i SQL

  4. Jag kan inte ställa in flera bilder i rutnätsvy?