Wie Sie vielleicht wissen, können Sie die PostgreSQL-Funktionalität erweitern, indem Sie PostgreSQL-Erweiterungen verwenden. Sie können verschiedene Erweiterungen verwenden, um PostgreSQL zu einer Unternehmensversion zu machen und bestimmte Anforderungen zu erfüllen. In diesem Blog sehen wir uns einige der beliebtesten Open-Source-Erweiterungen in PostgreSQL an und erfahren, wie sie zur Erweiterung ihrer Möglichkeiten verwendet werden können.
PostgreSQL ist die fortschrittlichste Open-Source-Datenbank. Jedes Jahr veröffentlicht die PostgreSQL-Community eine neue Version mit einigen neuen Funktionen, aber es gibt viele Funktionen, die mithilfe von Erweiterungen entwickelt wurden, die für einen bestimmten Anwendungsfall verwendet werden können.
Einige dieser Erweiterungen sind sehr leistungsfähig und beliebt, um eine PostgreSQL-Umgebung der Enterprise-Klasse zu erstellen.
Pg_stat_statements
Das Modul pg_stat_statements bietet eine Möglichkeit, Ausführungsstatistiken aller SQL-Anweisungen zu verfolgen, die von einem PostgreSQL-Server ausgeführt werden. Wenn das Modul pg_stat_statements geladen ist, verfolgt es Statistiken über alle Datenbanken des Servers. Die vom pg_stat_statements-Modul gesammelten Statistiken werden über eine Ansicht namens pg_stat_statements verfügbar gemacht. Weitere Einzelheiten zu den Funktionen und Konfigurationsparametern von pg_stat_statements finden Sie hier.
PostGIS
PostGIS ist eine Erweiterung des Datenbanksystems PostgreSQL, mit der GIS-Objekte (Geografische Informationssysteme) in der Datenbank gespeichert werden können. Es umfasst Unterstützung für GiST-basierte räumliche R-Tree-Indizes und Funktionen zur Analyse und Verarbeitung von GIS-Objekten.
PostGIS wird für räumliche und geografische Objekte für PostgreSQL verwendet. PostGIS fügt der PostgreSQL-Datenbank Typen (Geometrie, Geographie, Raster usw.) hinzu. PostGIS fügt auch Funktionen, Operatoren und Indexerweiterungen hinzu, die für diese räumlichen Typen gelten. Sie können die Installationsmethode hier überprüfen.
Postgres_fdw
Das Modul postgres_fdw stellt den Foreign-Data-Wrapper postgres_fdw bereit, der für den Zugriff auf Daten verwendet werden kann, die auf externen PostgreSQL-Datenbankservern gespeichert sind. Wenn es zwei PostgreSQL-Datenbanken gibt, verweist postgres_fdw von einer Datenbank auf die Tabelle der anderen Datenbank. Sobald Sie FOREIGN TABLE definiert haben, können Sie SELECT, INSERT, UPDATE, DELETE wie eine lokale Datenbank ausführen.
Die vom postgres_fdw-Modul bereitgestellte Funktionalität überschneidet sich erheblich mit der Funktionalität des älteren dblink-Moduls. Das postgres_fdw-Modul bietet jedoch eine transparentere und standardkonformere Syntax für den Zugriff auf entfernte Tabellen und kann in vielen Fällen eine bessere Leistung erzielen.
Der Hauptanwendungsfall der Fremdtabellen besteht darin, die Daten Systemen zur Verfügung zu stellen, ohne sie zu replizieren oder zu duplizieren. Es gibt sogar einfache Implementierungen von Sharding mit FDW, da Daten in den anderen Shards für Abfragen durch FDWs verfügbar sein können.
In Oracle können Sie die Daten aus entfernten Datenbanktabellen mit DBLinks abrufen, aber der Hauptunterschied zwischen DBLinks und FDW besteht darin, dass FDW die Metadaten oder Tabellendefinitionen über fremde Tabellen lokal verwalten kann.
Mysql_fdw
Mysql_fdw ist eine PostgreSQL-Erweiterung, die einen Foreign Data Wrapper (FDW) für MySQL implementiert. Das Modul mysql_fdw erleichtert die Verwendung des PostgreSQL-Servers als Client für MySQL Server, was bedeutet, dass es dann als Client Daten aus der MySQL-Datenbank abrufen kann. Derzeit verwaltet EnterpriseDB dieses Modul auf Github.
Die vorherige Version von mysql_fdw wurde nur schreibgeschützt unterstützt, aber die neueste Version bietet die Schreibfunktion. Der Benutzer kann nun Einfüge-, Aktualisierungs- und Löschanweisungen für die Fremdtabellen unter Verwendung der mysql_fdw. Es verwendet den Typumwandlungsmechanismus von PostgreSQL, um eine entgegengesetzte Typumwandlung zwischen MySQL- und PostgreSQL-Datentypen bereitzustellen.
Hstore
Das hstore-Modul implementiert den hstore-Datentyp zum Speichern von Schlüssel-Wert-Paaren in einem einzelnen Wert in PostgreSQL. Der Datentyp hstore ist in vielen Anwendungsfällen sehr nützlich, z. B. bei halbstrukturierten Daten oder Zeilen mit vielen Attributen, die selten abgefragt werden. Beachten Sie, dass Schlüssel und Werte nur Textzeichenfolgen sind.
Bevor Sie mit dem hstore-Datentyp arbeiten, müssen Sie die hstore-Erweiterung erstellen, die das contrib-Modul in Ihre PostgreSQL-Instanz lädt.
Pgaudit
pgAudit ist eine PostgreSQL-Audit-Erweiterung, die eine detaillierte Sitzungs- und/oder Objekt-Audit-Protokollierung über die standardmäßige PostgreSQL-Protokollierungsfunktion bereitstellt.
Das Hauptziel des pgAudit-Moduls besteht darin, PostgreSQL-Benutzern die Möglichkeit zu geben, Prüfprotokolle zu erstellen, die häufig erforderlich sind, um behördliche, finanzielle oder ISO-Zertifizierungen einzuhalten.
Im Allgemeinen ist eine Prüfung eine offizielle Prüfung der Konten einer Person oder Organisation, in der Regel durch eine unabhängige Stelle. Die vom pgAudit-Modul gesammelten Informationen werden ordnungsgemäß als Audit-Trail oder Audit-Log bezeichnet.
Das pgAudit-Modul wurde entwickelt, um PostgreSQL 9.5 und höhere Versionen zu unterstützen.
Die Sitzungsüberwachungsprotokollierung des pgAudit-Moduls bietet detaillierte Protokolle aller Anweisungen, die von einem Benutzer im Backend ausgeführt werden. Weitere Details, die Konfiguration und die Installation und Verwendung in PostgreSQL finden Sie hier.
Orafce
Orafce ist ein Modul, das Oracle-kompatible Funktionen, Datentypen und Pakete implementiert. Dies ist ein Open-Source-Tool mit BSD-Lizenz, sodass jeder dieses Tool verwenden kann. Dieses Modul ist sehr nützlich bei der Migrationsaufgabe von Oracle nach PostgreSQL, da es viele Oracle-Funktionen in PostgreSQL implementiert hat.
Anwendungen verwenden diese Funktionen normalerweise mit mehreren Vorkommen. Mit diesem Tool können Sie die Änderungskosten von SQL reduzieren. Sie können den Blog zur Migration von Oracle zu PostgreSQL lesen.
Alle Funktionen und Pakete sind korrekt implementiert und gut getestet.
Einige der Funktionen sind:
- Dbms_output
- Dbms_random
- utl_file – dateisystembezogene Funktionen
- Dbms_pipe und dbms_alert
- PLVdate,PLVstr, PLVchr
- Oracle-kompatibler DATE-Datentyp und Funktionen wie ADD_MONTHS, LAST_DAY, NEXT_DAY und so weiter.
- NVL-Funktion
- SUBSTR- und SUBSTRB-Funktion
- VARCHAR2- und NVARCHAR2-Unterstützung
- TO_DATE()
Pg_bulkload
Das Pg_bulkload-Modul bietet PostgreSQL-Benutzern eine Hochgeschwindigkeits-Datenladefunktion. Das pg_bulkload-Modul wurde entwickelt, um eine große Datenmenge in eine Datenbank zu laden. Sie können die Daten unter Umgehung gemeinsamer PostgreSQL-Puffer in die Tabelle laden. Das pg_bulkload-Modul hat auch einige ETL-Funktionen wie Eingabedatenvalidierung und Datentransformation mit Filterfunktionen.
Das ursprüngliche Ziel des pg_bulkload-Moduls war eine schnellere Alternative zum COPY-Befehl in PostgreSQL.
Das Pg_bulkload-Modul wird vom NTT OSS Center entwickelt und gewartet.
WICHTIGER HINWEIS:In einer Streaming-Replikationsumgebung in PostgreSQL funktioniert das pg_bulkload-Modul nicht richtig. Weitere Einzelheiten finden Sie hier.
Pgstattuple
Das Modul pgstattuple bietet verschiedene Funktionen zum Abrufen von Statistiken auf Tupelebene in PostgresQL. Die Funktion im pgstattuple-Modul gibt die physische Länge einer Relation, den Prozentsatz „toter“ Tupel und andere Informationen zurück. Dies kann für Benutzer hilfreich sein, um festzustellen, ob ein Vakuum erforderlich ist oder nicht. Das Argument für die Funktion ist der Name der Zielrelation (optional schemaqualifiziert) oder OID.
Pg_trgm
pg_trgm ist eine PostgreSQL-Erweiterung, die einen einfachen Fuzzy-String-Abgleich in PostgreSQL bietet. Der operative und konzeptionelle Aufwand ist viel geringer als bei der PostgreSQL-Volltextsuche oder einer separaten Suchmaschine.
Ein Trigramm oder Trigraph ist eine Gruppe von drei aufeinanderfolgenden Zeichen aus einer Zeichenfolge. Sie können die Ähnlichkeit zweier Zeichenfolgen messen, indem Sie die Anzahl der gemeinsamen Trigramme zählen. Diese einfache Idee des Trigramms erweist sich als sehr effektiv, um die Ähnlichkeit von Wörtern in vielen natürlichen Sprachen zu messen.
Im Allgemeinen kann das Modul pg_trgm helfen, wenn:
- Sie benötigen in PostgreSQL einen unscharfen Zeichenfolgenabgleich ohne Berücksichtigung der Groß-/Kleinschreibung.
- Sie möchten LIKE, ILIKE, ~ oder ~* in PostgreSQL beschleunigen.
- Sie möchten nach Mustern suchen, die nicht links verankert sind (z. B. %john%). Solche Muster werden von B-Tree-Indizes in PostgreSQL nicht unterstützt.
Die obige Liste von Modulen/Erweiterungen ist sehr nützlich, um die PostgreSQL-Fähigkeit zu erweitern. Es gibt einige weitere Erweiterungen, die nicht im Blog enthalten sind, aber es ist sehr nützlich, die PostgreSQL-Funktionalität zu erweitern. Diese lauten wie folgt.
- Spracherweiterungen:PL/Python, PL/Perl, PL/R, PL/v8, PL/sh usw.
- Cstore_fdw
- Mongo_fdw
- HypoPG
- Tds_fdw
- Plprofiler
Schlussfolgerung
Es gibt viele Erweiterungen in den von der PostgreSQL-Community unterstützten Erweiterungen und einige Erweiterungen von Drittanbietern, die alle für einen bestimmten Anwendungsfall verwendet werden. Sie können die Möglichkeiten oder Funktionen von PostgreSQL erweitern, indem Sie diese Module verwenden.