Zoals u wellicht weet, kunt u de PostgreSQL-functionaliteit uitbreiden door PostgreSQL-extensies te gebruiken. U kunt verschillende extensies gebruiken om PostgreSQL als een enterprise-versie te maken en aan specifieke behoeften te voldoen. In deze blog zien we enkele van de meest populaire open source-extensies in PostgreSQL en hoe deze kunnen worden gebruikt om de mogelijkheden uit te breiden.
PostgreSQL is de meest geavanceerde open source database. Elk jaar brengt de PostgreSQL-gemeenschap een nieuwe versie uit met een aantal nieuwe functies, maar er zijn veel functies ontwikkeld met behulp van extensies die voor een bepaald gebruik kunnen worden gebruikt.
Sommige van deze extensies zijn zeer krachtig en populair om een PostgreSQL-omgeving op ondernemingsniveau te bouwen.
Pg_stat_statements
De module pg_stat_statements biedt een middel voor het bijhouden van uitvoeringsstatistieken van alle SQL-instructies die door een PostgreSQL-server worden uitgevoerd. Wanneer de module pg_stat_statements is geladen, worden statistieken bijgehouden over alle databases van de server. De statistieken verzameld door de module pg_stat_statements worden beschikbaar gesteld via een weergave met de naam pg_stat_statements. U kunt hier meer details over de functies van pg_stat_statements en de configuratieparameter bekijken.
PostGIS
PostGIS is een uitbreiding op het PostgreSQL-databasesysteem waarmee GIS-objecten (Geografische Informatiesystemen) in de database kunnen worden opgeslagen. Het bevat ondersteuning voor op GiST gebaseerde R-Tree ruimtelijke indexen en functies voor analyse en verwerking van GIS-objecten.
PostGIS wordt gebruikt voor ruimtelijke en geografische objecten voor PostgreSQL. PostGIS voegt typen (geometrie, geografie, raster enz.) toe aan de PostgreSQL-database. PostGIS voegt ook functies, operators en indexverbeteringen toe die van toepassing zijn op deze ruimtelijke typen. U kunt de installatiemethode hier controleren.
Postgres_fdw
De postgres_fdw-module biedt de Foreign-data-wrapper postgres_fdw, die kan worden gebruikt om toegang te krijgen tot gegevens die zijn opgeslagen op externe PostgreSQL-databaseservers. Als er twee PostgreSQL-databases zijn, verwijst postgres_fdw naar de tabel van de andere database uit één database. Zodra u FOREIGN TABLE definieert, kunt u SELECT, INSERT, UPDATE, DELETE doen als een lokale database.
De functionaliteit van de postgres_fdw-module overlapt aanzienlijk met de functionaliteit van de oudere dblink-module. Maar de postgres_fdw-module biedt een transparantere syntaxis die aan de normen voldoet voor toegang tot externe tabellen en kan in veel gevallen betere prestaties leveren.
Het belangrijkste gebruik van de buitenlandse tabellen is om de gegevens beschikbaar te maken voor systemen zonder deze te repliceren of te dupliceren. Er zijn zelfs eenvoudige implementaties van sharding met FDW, omdat gegevens in de andere shards beschikbaar kunnen zijn voor query's via FDW's.
In Oracle kunt u de gegevens uit externe databasetabellen halen met DBLinks, maar het belangrijkste verschil tussen DBLinks en FDW is dat FDW de metagegevens of tabeldefinitie over buitenlandse tabellen lokaal kan onderhouden.
Mysql_fdw
Mysql_fdw is een PostgreSQL-extensie die een Foreign Data Wrapper (FDW) voor MySQL implementeert. De Mysql_fdw-module maakt het gebruik van de PostgreSQL-server als client voor MySQL Server mogelijk, wat betekent dat het vervolgens als client gegevens uit de MySQL-database kan ophalen. Momenteel onderhoudt EnterpriseDB deze module op github.
De vorige versie van mysql_fdw werd alleen alleen-lezen ondersteund, maar de nieuwste versie biedt de mogelijkheid om te schrijven. De gebruiker kan nu insert-, update- en delete-instructies voor de vreemde tabellen uitgeven met behulp van de mysql_fdw. Het maakt gebruik van het PostgreSQL-type castingmechanisme om tegenovergestelde typecasting te bieden tussen MySQL- en PostgreSQL-gegevenstypen.
Opslaan
De hstore-module implementeert het hstore-gegevenstype voor het opslaan van sleutel-waardeparen in een enkele waarde in PostgreSQL. Het gegevenstype hstore is erg handig in veel gebruikssituaties, zoals semi-gestructureerde gegevens of rijen met veel attributen die zelden worden opgevraagd. Merk op dat sleutels en waarden alleen tekststrings zijn.
Voordat u met het hstore-gegevenstype gaat werken, moet u de hstore-extensie maken die de contrib-module naar uw PostgreSQL-instantie laadt.
Pgaudit
pgAudit is een PostgreSQL-auditextensie die gedetailleerde sessie- en/of object-auditregistratie biedt via de standaard PostgreSQL-registratiefaciliteit.
Het belangrijkste doel van de pgAudit-module is om PostgreSQL-gebruikers de mogelijkheid te bieden om auditlogboeken te produceren die vaak nodig zijn om te voldoen aan overheids-, financiële of ISO-certificeringen.
Over het algemeen is een audit een officiële inspectie van de rekeningen van een persoon of organisatie, meestal door een onafhankelijke instantie. De informatie die door de pgAudit-module wordt verzameld, wordt een audittrail of auditlog genoemd.
pgAudit-module is ontwikkeld om PostgreSQL 9.5 en hogere versies te ondersteunen.
Logboekregistratie van sessie-audits van de pgAudit-module biedt gedetailleerde logboeken van alle instructies die door een gebruiker in de backend worden uitgevoerd. U kunt hier meer details, configuratie en installatie en gebruik in PostgreSQL bekijken.
Orafce
Orafce is een module die Oracle-compatibele functies, datatypes en pakketten implementeert. Dit is een open source tool met BSD-licentie, dus iedereen kan deze tool gebruiken. Deze module is erg handig bij de migratietaak van Oracle naar PostgreSQL, er zijn veel Oracle-functies geïmplementeerd in PostgreSQL.
Toepassingen gebruiken deze functies meestal met meerdere gebeurtenissen. U kunt de wijzigingskosten van SQL verlagen door deze tool te gebruiken. U kunt zien hoe u van Oracle naar PostgreSQL-blog migreert.
Alle functies en pakketten zijn correct geïmplementeerd en het is goed getest.
Enkele van de functies zijn:
- Dbms_output
- Dbms_random
- utl_file – bestandssysteem gerelateerde functies
- Dbms_pipe en dbms_alert
- PLVdatum,PLVstr, PLVchr
- Oracle-compatibel DATE-gegevenstype en functies zoals ADD_MONTHS, LAST_DAY,NEXT_DAY enzovoort.
- NVL-functie
- SUBSTR- en SUBSTRB-functie
- Ondersteuning voor VARCHAR2 en NVARCHAR2
- TO_DATE()
Pg_bulkload
De Pg_bulkload-module biedt de mogelijkheid om gegevens met hoge snelheid te laden voor PostgreSQL-gebruikers. pg_bulkload module is ontworpen om een enorme hoeveelheid gegevens in een database te laden. U kunt de gegevens in een tabel laden zonder de gedeelde PostgreSQL-buffers te gebruiken. pg_bulkload-module heeft ook enkele ETL-functies, zoals validatie van invoergegevens en gegevenstransformatie met filterfuncties.
Het oorspronkelijke doel van de pg_bulkload-module was een sneller alternatief voor het COPY-commando in PostgreSQL.
Pg_bulkload module is ontwikkeld en onderhouden door NTT OSS Center.
BELANGRIJKE OPMERKING:in de streamingreplicatieomgeving in PostgreSQL werkt de pg_bulkload-module niet correct. Zie hier voor meer details.
Pgstattuple
De module pgstattuple biedt verschillende functies om statistieken op tuple-niveau te verkrijgen in PostgresQL. De functie in de module pgstattuple retourneert de fysieke lengte van een relatie, het percentage "dode" tupels en andere informatie. Dit kan nuttig zijn voor gebruikers om te bepalen of vacuüm nodig is of niet. Het argument voor de functie is de naam van de doelrelatie (optioneel schema-gekwalificeerd) of OID.
Pg_trgm
pg_trgm is een PostgreSQL-extensie die eenvoudige fuzzy string-matching biedt in PostgreSQL. De operationele en conceptuele overhead is veel lager dan PostgreSQL full-text zoeken of een aparte zoekmachine.
Een trigram of trigraph is een groep van drie opeenvolgende karakters uit een string. Je kunt de overeenkomst van twee strings meten door het aantal trigrammen te tellen die ze delen. Dit eenvoudige idee van trigram blijkt zeer effectief te zijn voor het meten van de gelijkenis van woorden in veel natuurlijke talen.
Over het algemeen kan de pg_trgm-module helpen wanneer:
- Je hebt fuzzy hoofdletterongevoelige tekenreeksen nodig in PostgreSQL.
- Je wilt LIKE, ILIKE, ~ of ~* in PostgreSQL versnellen.
- U wilt zoeken naar patronen die niet links verankerd zijn (bijv. %john%). Dergelijke patronen worden niet ondersteund door B-tree-indexen in PostgreSQL.
De bovenstaande lijst met modules/extensies is erg handig om de PostgreSQL-mogelijkheden uit te breiden. Er zijn nog wat extensies die niet in de blog zijn opgenomen, maar het is erg handig om de PostgreSQL-functionaliteit uit te breiden. Deze zijn als volgt.
- Taalextensies:PL/Python, PL/Perl, PL/R, PL/v8, PL/sh enz.
- Cstore_fdw
- Mongo_fdw
- HypoPG
- Tds_fdw
- Plprofiler
Conclusie
Er zijn veel extensies in door de PostgreSQL-gemeenschap ondersteunde extensies en sommige extensies van derden, allemaal gebruikt voor een bepaald gebruik. U kunt de PostgreSQL-mogelijkheden of functionaliteit uitbreiden door deze modules te gebruiken.