sql >> Databáze >  >> RDS >> PostgreSQL

Vytváření nových modulů pomocí PostgreSQL Create Extension

Úvod

Jak možná víte, PostgreSQL je navržen pro rozšiřitelnost a přizpůsobení, to znamená, že můžeme rozšířit funkčnost vaší databáze pomocí rozšíření. Funkce rozšíření PostgreSQL umožňuje sdružovat více objektů SQL dohromady do jednoho balíčku, který lze načíst nebo odstranit z vaší databáze. Jakmile jej načtete do databáze, mohou rozšíření fungovat jako vestavěné funkce.

PostgreSQL databáze má mnoho funkcí a nabízí širokou škálu datových typů, funkcí, operátorů atd. Někdy to ale pro některé případy použití nestačí. Funkčnost PostgreSQL můžeme snadno rozšířit pomocí rozšíření. Toto je velmi užitečná funkce pro vývojáře a správce databází.

V tomto blogu se níže můžeme zabývat dvěma věcmi.

  1. Jak používat rozšíření podporované komunitou PostgreSQL
  2. Jak vytvořit a používat rozšíření v PostgreSQL

Jak používat rozšíření podporovaná komunitou PostgreSQL

V PostgreSQL existuje řada modulů/rozšíření contrib. Tyto moduly jsou spravovány komunitou PostgreSQL. Tyto moduly a jejich funkčnost můžeme použít v PostgreSQL vytvořením rozšíření.

Podívejme se, jak používat funkce rozšíření hstore v PostgreSQL.

Rozšíření Hstore

Modul hstore implementuje datový typ hstore, který ukládá páry klíč-hodnota do jediné hodnoty. Datový typ hstore můžeme použít v mnoha případech, jako jsou polostrukturovaná data nebo řádky s mnoha atributy, které jsou zřídka dotazovány. Všimněte si, že klíče a hodnoty jsou pouze textové řetězce. Abychom mohli tuto funkci používat, musíme pro ni vytvořit rozšíření v PostgreSQL.

Podívejme se, jak používat datový typ hstore.

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

Před vytvořením datového typu hstore musíte povolit rozšíření hstore, které načte modul contrib do vašeho PostgreSQL.

CREATE EXTENSION hstore;

Existují různé funkce hstore pro načítání dat z databáze. Zde můžete zkontrolovat funkce a příklady.

Zkontrolujte další dodávané moduly v PostgreSQL.

Jak vytvořit rozšíření

Rozšiřitelnost je jednou z nejvýkonnějších funkcí v PostgreSQL. Můžete přidat nové funkce pro konkrétní případ použití pomocí modulu contrib a nainstalovat jej pomocí CREATE EXTENSION.

V této sekci se naučíme, jak vytvořit jednoduchý modul contrib a jak používat jeho funkčnost v PostgreSQL.

Soubory rozšíření

Aby bylo možné spustit příkaz CREATE EXTENSION ve vaší databázi, vaše rozšíření musí potřebovat alespoň dva soubory:

  1. Řídicí soubor
    Formát souboru musí být extension_name.control, který říká základní informace o rozšíření PostgreSQL, a musí být umístěn v adresáři SHAREDIR/extension instalace.
  2. Soubor skriptu SQL
    Soubor s příponou formátu --version.sql obsahuje funkce, které byste chtěli přidat.

Formát souboru řídicího souboru v příponě je stejný jako soubor postgresql.conf, konkrétně seznam přiřazení parametru_name =hodnota, jeden na řádek.

Příklad

Zkontrolujte prosím níže uvedený úplný příklad rozšíření pouze pro SQL, vytvořte funkci NVL kompatibilní s Oracle v PostgreSQL. Existuje mnoho případů, ale zde můžeme vzít v úvahu například pouze jeden případ.

Soubor skriptu SQL nvlfunc--1.0.sql vypadá takto...

Soubor Nvlfunc--1.0.sql:

--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;

Řídicí soubor nvlfunc vypadá takto...

Soubor Nvlfunc.control:

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

I když k instalaci těchto souborů do správného adresáře stěží potřebujete soubor makefile, můžete použít soubor Makefile obsahující toto:

Makefile:

EXTENSION = nvlfunc
DATA = nvlfunc--1.0.sql

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

Pokud jste funkci implementovali pomocí jazyka „C“, musíte soubor přidat do souboru makefile.

Instalace

Příkaz make install nainstaluje řídicí soubor a soubor skriptu SQL do správného adresáře, jak uvádí pg_config.

Jakmile jsou soubory nainstalovány, použijte příkaz CREATE EXTENSION k načtení objektů do libovolné konkrétní databáze v PostgreSQL.

Zkontrolujte prosím následující kroky pro instalaci rozšíření nvlfunc a tento soubor můžete také přidat do svého adresáře rozšíření:

Soubor INSTALL.nvlfunc:

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.

Rozšíření PostgreSQL musí být nainstalována ve vaší databázi, než budete moci používat jejich funkce. Chcete-li nainstalovat konkrétní rozšíření, spusťte příkaz CREATE EXTENSION z psql a načtěte zabalené objekty do databáze.

Stáhněte si Whitepaper Today Správa a automatizace PostgreSQL s ClusterControlZjistěte, co potřebujete vědět k nasazení, monitorování, správě a škálování PostgreSQLStáhněte si Whitepaper

Testování

Po vytvoření rozšíření se doporučuje vytvořit testovací případ pro toto rozšíření, abyste při instalaci tohoto modulu v jiné verzi PostgreSQL mohli zkontrolovat, zda všechny testovací případy fungují podle očekávání nebo ne.

Toto je volitelný krok, ale můžete jej vytvořit. Testovací případy vypadají takto:

soubor sql/nvlfunc.sql:

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

Poté můžete přidat očekávaný výstup do jiného souboru. Očekávaný výstupní soubor vypadá takto:

očekávaný soubor/nvlfunc.out:

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

Toto je jen jeden příklad, proto je přidán pouze jeden testovací případ. Když ale vytváříte nové rozšíření, můžete přidat další testovací případy.

Adresářová struktura rozšíření Nvlfunc:

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

Výhody

  1. Snadné rozšíření funkcí PostgreSQL
  2. Vytvoření a instalace rozšíření je velmi snadné
  3. Snadné testování regresí na různých verzích PostgreSQL

Nevýhody

  1. Neexistují žádné zvláštní nevýhody, ale funkci, kterou do rozšíření přidáváte, otestujte, než ji použijete.

Závěr

Rozšiřitelnost PostgreSQL je velmi výkonná funkce, můžete si vytvořit vlastní rozšíření pro konkrétní případy použití a použít je ve své produkční databázi. Existuje mnoho rozšíření podporovaných komunitou PostgreSQL, jako je hstore, postgres_fdw, dblink atd. a rozšíření třetích stran, jako je Orafce, všechna se používají pro konkrétní případy použití.


  1. python pip install chyba instalace psycopg2

  2. Vraťte jazyk použitý pro funkce data a času v MariaDB

  3. Jak nainstalovat phpMyAdmin na spravované hostingové účty

  4. Přemostění RDBMS a NoSQL:Úvod do 2DX UI clusteru