Oficjalne rozszerzenia PostgreSQL
ServBay to zaawansowane lokalne środowisko do tworzenia aplikacji webowych, które integruje szereg narzędzi dla deweloperów, w tym potężną bazę danych PostgreSQL. Siłą PostgreSQL są nie tylko jego podstawowe możliwości, lecz również bogaty ekosystem oficjalnych rozszerzeń. Serwer ServBay domyślnie zawiera większość oficjalnych rozszerzeń PostgreSQL, które możesz błyskawicznie aktywować bezpośrednio w swoim lokalnym środowisku, co znacząco zwiększa funkcjonalność bazy i pozwala sprostać złożonym wymaganiom aplikacji.
Poniżej znajdziesz przegląd popularnych oficjalnych rozszerzeń PostgreSQL oraz instrukcję ich instalacji i użycia w środowisku ServBay.
Przegląd najważniejszych rozszerzeń
Oficjalne rozszerzenia PostgreSQL obejmują szeroką gamę funkcji – od monitoringu wydajności, przez obsługę dodatkowych typów danych, po zaawansowane wyszukiwanie tekstowe. Oto wybrane spośród nich, szczególnie użyteczne w codziennej pracy dewelopera:
1. pg_stat_statements
- Opis: Gromadzi i zapisuje statystyki wszystkich zapytań SQL wykonywanych przez serwer, w tym liczbę wywołań, całkowity czas wykonania, ilość przetworzonych wierszy i więcej.
- Zastosowanie: Wspiera administratorów i programistów w analizie wydajności zapytań, identyfikacji wolnych zapytań i wąskich gardeł do optymalizacji.
- Polecenie instalacji:sqlUwaga: Po instalacji zazwyczaj należy skonfigurować
CREATE EXTENSION pg_stat_statements;
1shared_preload_libraries = 'pg_stat_statements'
w plikupostgresql.conf
i ponownie uruchomić serwis PostgreSQL, aby w pełni włączyć i zbierać dane. ServBay oferuje łatwą edycję tych ustawień.
2. pg_trgm
- Opis: Udostępnia funkcje i indeksy do mierzenia podobieństwa tekstu w oparciu o trójznakowe segmenty (trigramy).
- Zastosowanie: Idealne do realizacji wydajnego wyszukiwania rozmytego, porównywania podobieństwa i pełnotekstowego, zwłaszcza przy obsłudze literówek i wariantów.
- Polecenie instalacji:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- Opis: Zapewnia typ danych umożliwiający przechowywanie par klucz-wartość w pojedynczym polu PostgreSQL.
- Zastosowanie: Przydatne dla dynamicznych właściwości, danych nieustrukturyzowanych lub półstrukturalnych, takich jak konfiguracje, metadane czy preferencje użytkowników, bez konieczności sztywnej schematyzacji tabel.
- Polecenie instalacji:sql
CREATE EXTENSION hstore;
1
4. citext
- Opis: Udostępnia typ danych traktujący tekst w sposób nieczuły na wielkość liter.
- Zastosowanie: Idealne do porównań nieczułych na wielkość liter, np. dla nazw użytkowników, adresów e-mail czy tagów, upraszcza zapytania eliminując potrzebę użycia funkcji
LOWER()
. - Polecenie instalacji:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- Opis: Udostępnia funkcje do generowania uniwersalnych identyfikatorów UUID w różnych wersjach (np. wersja 1, 3, 4 i 5).
- Zastosowanie: Niezbędne przy generowaniu globalnie unikalnych identyfikatorów, np. dla kluczy głównych, sesji użytkowników czy znaczników w systemach rozproszonych.
- Polecenie instalacji:sqlUwaga: Nazwa rozszerzenia zawiera myślnik — należy użyć cudzysłowów w poleceniu
CREATE EXTENSION "uuid-ossp";
1CREATE EXTENSION
.
6. intarray
- Opis: Rozszerza możliwości operacji na tablicach liczb całkowitych poprzez dodatkowe funkcje i operatory.
- Zastosowanie: Pozwala na wydajne operacje zbiorowe (np. suma, przecięcie, różnica), sprawdzanie zawartości, sortowanie i inne złożone działania na poziomie bazy danych.
- Polecenie instalacji:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- Opis: Zapewnia wsparcie indeksowania typów danych typu B-tree (np. liczby, tekst, daty) z użyciem indeksów GIN (Generalized Inverted Index).
- Zastosowanie: Indeksy GIN są wydajne dla typów przechowujących wiele wartości (np. tablice,
hstore
,tsvector
).btree_gin
pozwala korzystać z GIN na elementach indeksowalnych przez B-tree, podnosząc efektywność zapytań. - Polecenie instalacji:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- Opis: Umożliwia indeksowanie typów B-tree z użyciem GiST (Generalized Search Tree).
- Zastosowanie: Struktura GiST jest uniwersalnym indeksem obsługującym różne typy zapytań, m.in. zakresowe czy zawierające na wielu kolumnach.
- Polecenie instalacji:sql
CREATE EXTENSION btree_gist;
1
9. cube
- Opis: Dostarcza typ danych do przechowywania wielowymiarowych sześcianów (kubów) lub punktów oraz odpowiadających im operatorów i funkcji.
- Zastosowanie: Idealne do obsługi wielowymiarowych danych — od prostych współrzędnych 2D/3D, przez analitykę OLAP, po zastosowania naukowe.
- Polecenie instalacji:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- Opis: Oferuje różne funkcje do analizowania podobieństwa i odległości pomiędzy ciągami tekstowymi, w tym odległość Levenshteina, Soundex, Metaphone.
- Zastosowanie: Stosowane do rozmytych porównań tekstowych, sprawdzania pisowni, czyszczenia i deduplikacji danych.
- Polecenie instalacji:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- Opis: Proceduralny język dla PostgreSQL pozwalający tworzyć procedury, funkcje wyzwalaczy oraz anonimowe bloki kodu.
- Zastosowanie: Umożliwia implementację złożonej logiki biznesowej, automatyzację zadań czy przetwarzanie danych po stronie serwera.
plpgsql
jest zwykle instalowany domyślnie, ale możesz jawnie wykonać instalację lub ponownie utworzyć rozszerzenie. - Polecenie instalacji:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- Opis: Udostępnia funkcje do przetwarzania i konwersji całych tabel, najbardziej znaną jest
crosstab
. - Zastosowanie: Pozwala wykonywać zapytania przestawne (pivot), czyli przekształcać wartości z jednej kolumny w wiele kolumn – świetne do raportów i analiz danych.
- Polecenie instalacji:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- Opis: Umożliwia łączenie się i wykonywanie zapytań w innych bazach PostgreSQL z poziomu wybranej bazy.
- Zastosowanie: Służy do prostych przekrojowych zapytań i migracji danych między bazami, bez konieczności obsługi połączeń wielobazowych po stronie aplikacji.
- Polecenie instalacji:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- Opis: Zapewnia narzędzie Foreign Data Wrapper pozwalające traktować tabele z zewnętrznych baz PostgreSQL jak własne.
- Zastosowanie: Do integracji i zapytań łączonych pomiędzy bazami, znacznie potężniejsze i bardziej elastyczne niż
dblink
– umożliwia korzystanie z zaawansowanych optymalizacji. - Polecenie instalacji:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- Opis: Udostępnia funkcje do szyfrowania i odszyfrowywania danych, w tym haszowania, szyfrowania symetrycznego i asymetrycznego.
- Zastosowanie: Wspiera szyfrowanie danych na poziomie bazy, przechowywanie haszy haseł, generowanie i weryfikację podpisów cyfrowych oraz inne funkcje związane z bezpieczeństwem.
- Polecenie instalacji:sql
CREATE EXTENSION pgcrypto;
1
To tylko część oficjalnych rozszerzeń PostgreSQL dostępnych w ServBay. Twórcy ServBay dbają, by środowisko obejmowało niemal wszystkie oficjalne rozszerzenia społeczności PostgreSQL, zaspokajając nawet najbardziej zróżnicowane potrzeby programistów.
Instalacja i korzystanie z rozszerzeń PostgreSQL w ServBay
Wdrażanie i użycie rozszerzeń PostgreSQL w środowisku ServBay jest niezwykle proste. Rozszerzenia instalowane są per baza danych, co oznacza, że w każdej bazie, w której są potrzebne, trzeba je włączyć osobno.
Wymagania wstępne:
- Upewnij się, że ServBay jest uruchomiony, a usługa PostgreSQL aktywna.
Instrukcja krok po kroku:
Połącz się z docelową bazą PostgreSQL: Otwórz terminal (np. w macOS Terminal lub iTerm2) i użyj narzędzia
psql
, aby połączyć się z bazą, w której chcesz zainstalować rozszerzenie. Domyślnie w ServBay użytkownik PostgreSQL topostgres
, a domyślna nazwa bazy to takżepostgres
.bashpsql -U your_username -d your_database
1Przykład — połączenie z domyślną bazą
postgres
:bashpsql -U postgres -d postgres
1Jeśli przy połączeniu wymagane jest hasło, podaj hasło skonfigurowane w ServBay dla użytkownika root/postgres.
Zainstaluj wybrane rozszerzenie: Po udanym połączeniu pojawi się interfejs
psql
. Użyj komendyCREATE EXTENSION
, by doinstalować wybrany moduł; w miejscemodule_name
wpisz nazwę rozszerzenia.sqlCREATE EXTENSION module_name;
1Na przykład, by dodać
pg_trgm
:sqlCREATE EXTENSION pg_trgm;
1Zweryfikuj instalację: Po instalacji możesz sprawdzić listę aktywnych rozszerzeń w bieżącej bazie za pomocą komendy
\dx
.sql\dx
1
Przykład: Włączenie rozszerzenia pg_trgm
Oto przykładowa sesja terminala, w której łączysz się z bazą postgres
i aktywujesz rozszerzenie pg_trgm
:
sql
# W terminalu połącz się z bazą danych
psql -U postgres -d postgres
# Po połączeniu zobaczysz prompt narzędzia psql
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- Wyświetl aktualnie zainstalowane rozszerzenia (np. tylko domyślne plpgsql i 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=# -- Instalacja rozszerzenia pg_trgm
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- Ponowne sprawdzenie listy rozszerzeń, aby upewnić się, że pg_trgm jest aktywne
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=# -- Instalacja zakończona powodzeniem — możesz już korzystać z funkcji i operatorów pg_trgm
1
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
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
Wylistowanie dostępnych rozszerzeń PostgreSQL w ServBay
Przed dodaniem wybranego rozszerzenia warto sprawdzić pełną listę wszystkich dostępnych modułów dla danego wydania PostgreSQL w ServBay. Może to pomóc odkryć mniej znane, a bardzo przydatne funkcje.
Po połączeniu z bazą PostgreSQL wykonaj poniższe zapytanie SQL, by zobaczyć kompletną listę oferowanych rozszerzeń:
sql
SELECT * FROM pg_available_extensions ORDER BY name;
1
Wynik tego zapytania to tabela, w której znajdziesz wszystkie obsługiwane przez Twoją wersję PostgreSQL rozszerzenia – nazwy, domyślne wersje, informację o instalacji i opisy.
Oto przykład typowego wyniku (lista może być znacznie dłuższa oraz zależna od wersji PostgreSQL i ServBay):
sql
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)
1
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
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
Uwaga: powyższa lista to przykład – dostępne rozszerzenia i ich wersje mogą się różnić w zależności od zainstalowanej wersji ServBay i PostgreSQL.
Podsumowanie
ServBay znacznie upraszcza integrację zaawansowanych funkcji PostgreSQL w lokalnym środowisku programistycznym dzięki preinstalowanym oficjalnym rozszerzeniom. Nie musisz ich kompilować lub manualnie pobierać — wystarczy proste polecenie SQL, by aktywować wybrane rozszerzenie i skupić się na rozwoju własnych aplikacji oraz efektywnej pracy. Z pomocą tych modułów błyskawicznie rozbudujesz swoją bazę o zaawansowane narzędzia: od analizy wydajności, przez wyszukiwanie pełnotekstowe, aż po bezpieczeństwo przechowywanych danych.