Offizielle PostgreSQL-Erweiterungsmodule
ServBay ist eine leistungsstarke lokale Web-Entwicklungsumgebung, die zahlreiche Entwickler-Tools integriert – darunter auch die funktionsreiche PostgreSQL-Datenbank. Die Stärke von PostgreSQL liegt nicht nur im Kernsystem, sondern auch in seinem umfangreichen Ökosystem an offiziellen Erweiterungen. ServBay liefert die Mehrheit der offiziellen PostgreSQL-Erweiterungen bereits vorinstalliert aus, sodass Entwickler diese lokal problemlos aktivieren und nutzen können. Damit erweitern Sie den Funktionsumfang Ihrer Datenbank und erfüllen unterschiedlichste Anforderungen komplexer Anwendungen.
Im Folgenden stellen wir einige häufig genutzte PostgreSQL-Extensions vor und zeigen, wie Sie diese in ServBay installieren und einsetzen.
Überblick über häufig verwendete Erweiterungen
Das PostgreSQL-Projekt stellt zahlreiche Erweiterungen bereit, die Funktionen von Performance-Monitoring, zusätzliche Datentypen bis hin zur Volltextsuche abdecken. Hier finden Sie eine Auswahl an Erweiterungen, die in der täglichen Arbeit besonders beliebt sind:
1. pg_stat_statements
- Funktion: Sammelt und protokolliert Statistiken zu allen vom Server ausgeführten SQL-Anweisungen, z. B. zu Aufrufhäufigkeit, Gesamtausführungszeit, bearbeiteten Zeilen usw.
- Zweck: Ermöglicht Datenbankadministratoren und Entwicklern die Analyse von Abfrage-Performances, die Erkennung von langsamen Abfragen und die gezielte Optimierung von Engpässen.
- Installationsbefehl:sqlHinweis: Nach der Installation ist in der Regel die Konfiguration von
CREATE EXTENSION pg_stat_statements;
1shared_preload_libraries = 'pg_stat_statements'
in derpostgresql.conf
notwendig sowie ein Neustart des PostgreSQL-Dienstes, um das Sammeln der Statistiken vollständig zu aktivieren. ServBay bietet dazu eine komfortable Möglichkeit zur Konfigurationsanpassung.
2. pg_trgm
- Funktion: Stellt Funktionen und Index-Unterstützung zur Messung der Textähnlichkeit auf Basis von Trigrammen (Dreiergruppen von Zeichen) bereit.
- Zweck: Ermöglicht effizientes Fuzzy-Matching, Ähnlichkeitssuchen und Volltextrecherchen – ideal bei Schreibfehlern oder Varianten.
- Installationsbefehl:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- Funktion: Bietet einen Datentyp zur Speicherung von Schlüssel-Wert-Paaren innerhalb eines einzelnen PostgreSQL-Werts.
- Zweck: Perfekt geeignet zur Ablage dynamischer Eigenschaften, unstrukturierter oder halbstrukturierter Daten – wie Konfigurationen, Metadaten oder Nutzerpräferenzen – ohne ein strikt festgelegtes Tabellenlayout zu benötigen.
- Installationsbefehl:sql
CREATE EXTENSION hstore;
1
4. citext
- Funktion: Stellt einen Datentyp für groß- und kleinschreibungsunabhängige Textstrings bereit.
- Zweck: Erleichtert Vergleiche (z. B. bei Benutzernamen, E-Mail-Adressen oder Tags) unabhängig von Groß- oder Kleinschreibung und erspart den häufigen Einsatz der Funktion
LOWER()
in Abfragen. - Installationsbefehl:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- Funktion: Bietet Funktionen zur Generierung universeller, eindeutiger Bezeichner (UUIDs) und unterstützt verschiedene UUID-Standards (z. B. Version 1, 3, 4, 5).
- Zweck: Ideal zum Erzeugen global eindeutiger IDs – als Primärschlüssel, für Session-IDs oder eindeutige Marker in verteilten Systemen.
- Installationsbefehl:sqlHinweis: Da der Erweiterungsname einen Bindestrich enthält, müssen Sie diesen im
CREATE EXTENSION "uuid-ossp";
1CREATE EXTENSION
-Befehl in doppelte Anführungszeichen setzen.
6. intarray
- Funktion: Stellt zusätzliche Operatoren und Funktionen für Ganzzahl-Arrays bereit.
- Zweck: Erlaubt es, Mengenoperationen (z. B. Schnittmenge, Vereinigung), Überprüfungen auf Enthaltensein und Sortierung direkt innerhalb der Datenbank auf Integer-Arrays auszuführen.
- Installationsbefehl:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- Funktion: Erweitert herkömmliche B-Baum-Datentypen (wie Integer, Text, Datum) um GIN-Indexoperationen (Generalized Inverted Index).
- Zweck: GIN-Indizes ermöglichen schnelles Suchen in Datentypen mit mehreren Werten (Arrays,
hstore
,tsvector
). Mitbtree_gin
können Sie GIN-Indizes gezielt für die btree-Indexierbaren Elemente dieser Typen nutzen und so die Suchperformance verbessern. - Installationsbefehl:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- Funktion: Fügt B-Baum-Datentypen Unterstützung für die GiST-Indexoperationen (Generalized Search Tree) hinzu.
- Zweck: Das universelle GiST-Indexsystem lässt sich mit
btree_gist
auch auf btree-indexierbare Typen anwenden – nützlich für Bereichsabfragen, Enthalten-Prüfungen oder Indexe über mehrere Spalten. - Installationsbefehl:sql
CREATE EXTENSION btree_gist;
1
9. cube
- Funktion: Führt einen Datentyp zur Darstellung von mehrdimensionalen Würfeln oder Punkten sowie zugehörige Operatoren und Funktionen ein.
- Zweck: Optimal bei der Verarbeitung multidimensionaler Daten, wie einfachen Geodaten (2D-/3D-Punkte), in Data Warehouses für OLAP-Analysen oder bei wissenschaftlichen Auswertungen.
- Installationsbefehl:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- Funktion: Stellt verschiedene Funktionen zum Ermitteln von Ähnlichkeiten und der Distanz zwischen Strings bereit – etwa Levenshtein-Distanz, Soundex, Metaphone usw.
- Zweck: Für Fuzzy-String-Matching, Rechtschreibprüfung, Datenbereinigung und Dublettenerkennung geeignet.
- Installationsbefehl:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- Funktion: Die prozedurale Sprache PL/pgSQL ist integraler Bestandteil von PostgreSQL und ermöglicht das Schreiben von Stored Procedures, Trigger-Funktionen und anonymen Code-Blöcken.
- Zweck: Komplexere Geschäftslogik, Automatisierungen und Datenverarbeitungs-Workflows direkt auf dem Datenbankserver abbilden. Normalerweise ist PL/pgSQL standardmäßig installiert, kann jedoch auch explizit mittels
CREATE EXTENSION
aktiviert oder erneuert werden. - Installationsbefehl:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- Funktion: Enthält Funktionen zur Verarbeitung und Transformation ganzer Tabellen – bekannt ist vor allem die Funktion
crosstab
. - Zweck: Zur Erstellung von Kreuztabellen (Pivot/Unpivot), bei denen Werte einer Spalte als neue Spalten dargestellt werden – besonders für Reporting und Analyse nützlich.
- Installationsbefehl:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- Funktion: Ermöglicht den Verbindungsaufbau und die Abfrage von anderen PostgreSQL-Datenbanken direkt aus einer PostgreSQL-Instanz heraus.
- Zweck: Vereinfacht einfache Cross-Database-Abfragen oder Datenmigrationen, ohne Verbindung oder Businesslogik in der Anwendung implementieren zu müssen.
- Installationsbefehl:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- Funktion: Stellt einen Foreign Data Wrapper bereit, um Tabellen aus externen PostgreSQL-Datenbanken wie lokale Tabellen abzufragen.
- Zweck: Damit implementieren Sie Integration und föderierte Abfragen verschiedener Datenbanksysteme – leistungsfähiger und flexibler als
dblink
, inklusive ausgefeilter Join- und Optimierungsunterstützung. - Installationsbefehl:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- Funktion: Bietet eine Vielzahl kryptografischer Funktionen und Prozeduren wie Hashing, symmetrische und asymmetrische (Public Key) Verschlüsselung.
- Zweck: Um Daten auf Datenbankebene sicher zu verschlüsseln, Passwörter zu hashen oder digitale Signaturen zu erzeugen und zu prüfen.
- Installationsbefehl:sql
CREATE EXTENSION pgcrypto;
1
Dies ist nur ein Auszug der in ServBay integrierten offiziellen PostgreSQL-Erweiterungen. ServBay legt Wert auf eine möglichst breite Abdeckung und liefert nahezu alle von der PostgreSQL-Community bereitgestellten Erweiterungen, damit Sie als Entwickler maximal flexibel bleiben.
PostgreSQL-Erweiterungen in ServBay installieren und verwenden
Das Installieren und Aktivieren von PostgreSQL-Erweiterungen in ServBay ist besonders einfach. Erweiterungen werden dabei stets pro Datenbank installiert – Sie müssen sie also in jeder gewünschten Datenbank separat aktivieren.
Voraussetzungen:
- Stellen Sie sicher, dass ServBay läuft und der PostgreSQL-Datenbankdienst gestartet ist.
So gehen Sie vor:
Mit der gewünschten PostgreSQL-Datenbank verbinden:
Öffnen Sie Ihr Terminal (z.B. das macOS Terminal oder iTerm2) und verbinden Sie sich mit dempsql
-Tool zu der Datenbank, in der Sie die Erweiterung aktivieren möchten. Standardmäßig lauten Benutzername und Datenbank von ServBay PostgreSQL beidepostgres
.bashpsql -U Ihr_Benutzername -d Ihre_Datenbank
1Zum Beispiel die Verbindung zur Standarddatenbank
postgres
:bashpsql -U postgres -d postgres
1Falls ein Passwort verlangt wird, geben Sie das in ServBay konfigurierte PostgreSQL-Root- oder -postgres-Passwort ein.
Erweiterungsmodul installieren:
Nach der erfolgreichen Verbindung erscheint diepsql
-Kommandozeile. Installieren Sie das gewünschte Modul mit folgendem SQL-Befehl, wobei Siemodule_name
durch den Namen der gewünschten Erweiterung ersetzen:sqlCREATE EXTENSION module_name;
1Beispiel für die Installation von
pg_trgm
:sqlCREATE EXTENSION pg_trgm;
1Installation überprüfen:
Mit dem Befehl\dx
können Sie sich eine Liste aller derzeit in der Datenbank installierten Erweiterungen ausgeben lassen und prüfen, ob Ihre Erweiterung aufgeführt wird.sql\dx
1
Beispiel: Aktivierung der pg_trgm
-Extension
Das folgende Beispiel zeigt die vollständige Interaktion, um sich mit der postgres
-Datenbank zu verbinden und dort die Extension pg_trgm
zu aktivieren:
# Mit folgendem Befehl im Terminal zur Datenbank verbinden
psql -U postgres -d postgres
# Nach der Verbindung erscheint die psql-Eingabeaufforderung
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- Anzeige der aktuell installierten Erweiterungen (i. d. R. nur plpgsql und pgcrypto)
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+------------------------------
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# -- Installation der Erweiterung pg_trgm
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- Erneute Kontrolle, ob pg_trgm nun aufgelistet wird
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
pg_trgm | 1.6 | public | text similarity measurement and index searching based on trigrams
pgcrypto | 1.3 | public | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
postgres=# -- Erfolg! Sie können die Funktionen und Operatoren aus pg_trgm nun in dieser Datenbank nutzen.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Verfügbare PostgreSQL-Erweiterungen in ServBay abfragen
Vor der Installation lohnt sich ein Überblick über alle in Ihrer ServBay-PostgreSQL-Version verfügbaren Erweiterungen. So entdecken Sie unkompliziert neue potenziell hilfreiche Funktionen.
Führen Sie dazu nach Verbindung mit einer beliebigen ServBay-PostgreSQL-Datenbank folgende SQL-Abfrage aus:
SELECT * FROM pg_available_extensions ORDER BY name;
Dieses Statement gibt eine Tabelle aller in der jeweiligen PostgreSQL-Installation verfügbaren Erweiterungen zurück, mitsamt Namen, Standardversion, Installationsstatus und kurzer Beschreibung.
Eine typische Ergebnisliste (die tatsächliche Länge und die Versionen können je nach ServBay-Version abweichen):
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example
adminpack | 2.1 | | administrative functions for PostgreSQL
amcheck | 1.3 | | functions for verifying relation integrity
autoinc | 1.0 | | functions for autoincrementing fields
bloom | 1.0 | | bloom access method - signature file based index
btree_gin | 1.3 | | support for indexing common datatypes in GIN
btree_gist | 1.7 | | support for indexing common datatypes in GiST
citext | 1.6 | | data type for case-insensitive character strings
cube | 1.5 | | data type for multidimensional cubes
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
dict_int | 1.0 | | text search dictionary template for integers
dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing
earthdistance | 1.1 | | calculate great-circle distances on the surface of the Earth
file_fdw | 1.0 | | foreign-data wrapper for flat file access
fuzzystrmatch | 1.2 | | determine similarities and distance between strings
hstore | 1.8 | | data type for storing sets of (key, value) pairs
insert_username | 1.0 | | functions for tracking who changed a table
intagg | 1.1 | | integer aggregator and enumerator (obsolete)
intarray | 1.5 | | functions, operators, and index support for 1-D arrays of integers
isn | 1.2 | | data types for international product numbering standards
lo | 1.1 | | Large Object maintenance
ltree | 1.2 | | data type for hierarchical tree-like structures
moddatetime | 1.0 | | functions for tracking last modification time
old_snapshot | 1.0 | | utilities in support of old_snapshot_threshold
pageinspect | 1.12 | | inspect the contents of database pages at a low level
pg_buffercache | 1.4 | | examine the shared buffer cache
pg_freespacemap | 1.2 | | examine the free space map (FSM)
pg_jieba | 1.1.1 | | a parser for full-text search of Chinese
pg_prewarm | 1.2 | | prewarm relation data
pg_stat_statements | 1.10 | | track planning and execution statistics of all SQL statements executed
pg_surgery | 1.0 | | extension to perform surgery on a damaged relation
pg_trgm | 1.6 | 1.6 | text similarity measurement and index searching based on trigrams
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
pg_walinspect | 1.1 | | functions to inspect contents of PostgreSQL Write-Ahead Log
pgcrypto | 1.3 | 1.3 | cryptographic functions
pgrouting | 3.6.2 | | pgRouting Extension
pgrowlocks | 1.2 | | show row-level locking information
pgstattuple | 1.5 | | show tuple-level statistics
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder
postgres_fdw | 1.1 | | foreign-data wrapper for remote PostgreSQL servers
refint | 1.0 | | functions for implementing referential integrity (obsolete)
seg | 1.4 | | data type for representing line segments or floating-point intervals
sslinfo | 1.2 | | information about SSL certificates
tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab
tcn | 1.0 | | Triggered change notifications
tsm_system_rows | 1.0 | | TABLESAMPLE method which accepts number of rows as a limit
tsm_system_time | 1.0 | | TABLESAMPLE method which accepts time in milliseconds as a limit
unaccent | 1.1 | | text search dictionary that removes accents
vector | 0.7.0 | | vector data type and ivfflat and hnsw access methods
xml2 | 1.1 | | XPath querying and XSLT
zhparser | 2.2 | | a parser for full-text search of Chinese
(55 rows)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Bitte beachten Sie: Die Auflistung ist beispielhaft. Die tatsächlich verfügbaren Erweiterungen und Versionen können je nach verwendeter ServBay- oder PostgreSQL-Version variieren.
Fazit
Dank der umfangreichen und vorinstallierten offiziellen PostgreSQL-Erweiterungen in ServBay wird das Erschließen zusätzlicher Datenbankfunktionen im lokalen Entwicklungsumfeld erheblich vereinfacht. Sie müssen keine Erweiterungen manuell kompilieren oder installieren – ein einfacher SQL-Befehl genügt, um die desired Extension in Ihrer Datenbank zu aktivieren. So können Sie sich ganz auf die Entwicklung Ihrer Anwendung konzentrieren und profitieren gleichzeitig von Features wie Performance-Analyse, Volltextsuche oder Datensicherheit.