Modul Ekstensi Resmi PostgreSQL
ServBay adalah lingkungan pengembangan web lokal yang kuat dan telah mengintegrasikan beragam alat untuk pengembang, termasuk basis data PostgreSQL yang kaya fitur. Kekuatan PostgreSQL tidak hanya terletak pada fitur intinya, tetapi juga pada ekosistem ekstensi resminya yang sangat luas. ServBay telah menyiapkan sebagian besar ekstensi resmi PostgreSQL, sehingga pengembang dapat mengaktifkan dan menggunakannya dengan mudah di lingkungan lokal, serta memperluas fungsionalitas basis data untuk memenuhi kebutuhan aplikasi yang kompleks.
Dokumen ini akan membahas beberapa modul ekstensi resmi PostgreSQL yang umum digunakan serta panduan instalasi dan penggunaannya di ServBay.
Ikhtisar Modul Ekstensi Populer
PostgreSQL menyediakan banyak modul ekstensi resmi yang mencakup beragam fungsi, mulai dari pemantauan performa, tipe data, hingga pencarian teks lengkap. Berikut adalah beberapa ekstensi yang sering digunakan oleh pengembang dalam pekerjaan sehari-hari:
1. pg_stat_statements
- Fungsi: Mengumpulkan dan mencatat statistik semua pernyataan SQL yang dijalankan oleh server, seperti jumlah pemanggilan, total waktu eksekusi, jumlah baris yang diproses, dan lainnya.
- Penggunaan: Membantu administrator database dan pengembang menganalisis performa query, mengidentifikasi query lambat, dan menemukan bottleneck untuk optimasi.
- Perintah Instalasi:sqlCatatan: Setelah instalasi, biasanya Anda perlu mengatur
CREATE EXTENSION pg_stat_statements;
1shared_preload_libraries = 'pg_stat_statements'
dipostgresql.conf
serta me-restart layanan PostgreSQL agar ekstensi ini aktif sepenuhnya dan mulai mengumpulkan data. ServBay menyediakan cara mudah untuk mengubah konfigurasi tersebut.
2. pg_trgm
- Fungsi: Menyediakan fungsi pengukuran kemiripan teks berbasis trigram dan dukungan indeks.
- Penggunaan: Ideal untuk pencocokan fuzzy yang efisien, pencarian berdasarkan kemiripan, dan pencarian teks lengkap—terutama untuk menangani salah ketik atau variasi kata.
- Perintah Instalasi:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- Fungsi: Menyediakan tipe data untuk menyimpan pasangan kunci-nilai dalam satu kolom PostgreSQL.
- Penggunaan: Cocok untuk skenario yang membutuhkan penyimpanan atribut dinamis, data tak terstruktur atau semi-terstruktur seperti data konfigurasi, metadata, atau preferensi pengguna, tanpa harus membuat skema tabel yang kaku.
- Perintah Instalasi:sql
CREATE EXTENSION hstore;
1
4. citext
- Fungsi: Menawarkan tipe data string teks yang tidak membedakan huruf kapital dan kecil (case-insensitive).
- Penggunaan: Berguna ketika Anda ingin menyimpan dan membandingkan data seperti username, alamat email, atau label tanpa harus terus-menerus menggunakan fungsi
LOWER()
pada query, sehingga aplikasi jadi lebih sederhana. - Perintah Instalasi:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- Fungsi: Menyediakan fungsi untuk menghasilkan UUID (Universally Unique Identifier) sesuai dengan beberapa versi standar UUID (misal, versi 1, 3, 4, 5).
- Penggunaan: Membuat pengenal yang benar-benar unik secara global, umum digunakan untuk primary key, session ID, penanda unik pada sistem terdistribusi, dan sebagainya.
- Perintah Instalasi:sqlCatatan: Nama ekstensi mengandung tanda hubung, sehingga perlu menggunakan tanda kutip ganda pada perintah
CREATE EXTENSION "uuid-ossp";
1CREATE EXTENSION
.
6. intarray
- Fungsi: Menyediakan fungsi dan operator tambahan untuk operasi pada array integer.
- Penggunaan: Berguna untuk skenario yang perlu melakukan operasi kumpulan langsung pada array integer di tingkat basis data, seperti irisan (intersection), gabungan (union), pengecekan elemen, pengurutan, dan sebagainya.
- Perintah Instalasi:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- Fungsi: Mendukung operasi indeks GIN (Generalized Inverted Index) untuk tipe data B-tree seperti integer, teks, tanggal, dll.
- Penggunaan: Indeks GIN biasanya digunakan pada tipe data dengan banyak nilai (misalnya array,
hstore
,tsvector
).btree_gin
memungkinkan penggunaan indeks GIN pada elemen yang secara bawaan dapat diindeks B-tree di dalam tipe gabungan, meningkatkan efisiensi query. - Perintah Instalasi:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- Fungsi: Mendukung operasi indeks GiST (Generalized Search Tree) pada tipe data B-tree.
- Penggunaan: GiST adalah struktur indeks generik;
btree_gist
memungkinkan pembuatan indeks GiST untuk data yang biasanya diindeks dengan B-tree. Ini sangat berguna untuk query multi-tipe (misal rentang, kontainmen) atau pembuatan indeks pada beberapa kolom sekaligus. - Perintah Instalasi:sql
CREATE EXTENSION btree_gist;
1
9. cube
- Fungsi: Menyediakan tipe data untuk mewakili kubus atau titik multidimensi dan operator/fungsi terkait.
- Penggunaan: Dipakai dalam aplikasi multidimensi seperti data spasial sederhana (point 2D atau 3D), analisis multidimensi di data warehouse, atau perhitungan ilmiah tertentu.
- Perintah Instalasi:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- Fungsi: Menyediakan beberapa fungsi untuk mengukur kemiripan dan jarak antar string, misalnya algoritma Levenshtein, Soundex, Metaphone, dll.
- Penggunaan: Untuk pencocokan string fuzzy, pemeriksaan ejaan, pembersihan dan deduplikasi data.
- Perintah Instalasi:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- Fungsi: Bahasa prosedural PostgreSQL yang memungkinkan pengguna membuat prosedur tersimpan, fungsi trigger, dan kode anonim.
- Penggunaan: Menempatkan logika bisnis yang lebih kompleks dan otomatisasi di sisi server basis data.
plpgsql
sudah menjadi bahasa bawaan di PostgreSQL; biasanya tidak perlu diinstal manual, tetapi Anda bisa memastikan atau mengulang instalasi dengan perintah di bawah ini. - Perintah Instalasi:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- Fungsi: Menyediakan fungsi untuk memanipulasi dan mentransformasi data dalam bentuk tabel, yang paling terkenal adalah fungsi
crosstab
. - Penggunaan: Membuat query tabel silang (pivot/transpose)—umumnya digunakan untuk pembuatan laporan atau analisis data dengan mengubah nilai unik pada satu kolom menjadi banyak kolom.
- Perintah Instalasi:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- Fungsi: Memungkinkan Anda untuk tersambung ke basis data PostgreSQL lain dari dalam sebuah basis data dan menjalankan query di sana.
- Penggunaan: Menjalankan query atau migrasi data antar basis data tanpa harus membuat logika koneksi lintas basis data di aplikasi.
- Perintah Instalasi:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- Fungsi: Menyediakan Foreign Data Wrapper untuk mengakses tabel di basis data PostgreSQL lain seolah-olah tabel tersebut ada di basis data lokal.
- Penggunaan: Untuk integrasi data atau query gabungan lintas basis data, lebih kuat dan fleksibel daripada
dblink
, juga mendukung optimasi query yang lebih kompleks. - Perintah Instalasi:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- Fungsi: Menyediakan berbagai fungsi enkripsi dan dekripsi, termasuk hashing, enkripsi simetris, enkripsi kunci publik, dan lainnya.
- Penggunaan: Untuk mengenkripsi data di basis data, menyimpan hash password, membuat atau memverifikasi tanda tangan digital, dan fungsi keamanan lainnya.
- Perintah Instalasi:sql
CREATE EXTENSION pgcrypto;
1
Ini hanyalah sebagian dari modul ekstensi resmi PostgreSQL yang tersedia di ServBay. ServBay berusaha mencakup mayoritas ekstensi resmi yang disediakan komunitas PostgreSQL, demi memenuhi kebutuhan pengembang yang beragam.
Cara Menginstal dan Menggunakan Ekstensi PostgreSQL di ServBay
Menginstal dan menggunakan ekstensi PostgreSQL di lingkungan ServBay sangatlah mudah. Perlu diketahui bahwa ekstensi dipasang khusus untuk basis data tertentu, artinya Anda perlu mengaktifkan ekstensi di setiap basis data yang ingin menggunakannya.
Prasyarat:
- Pastikan ServBay sedang berjalan dan layanan basis data PostgreSQL telah aktif.
Langkah-langkah Operasional:
Tersambung ke basis data PostgreSQL tujuan: Buka aplikasi terminal Anda (seperti Terminal atau iTerm2 di macOS), lalu tersambung ke basis data target dengan tool baris perintah
psql
. Secara bawaan, pengguna PostgreSQL di instalasi ServBay adalahpostgres
dan nama basis data default jugapostgres
.bashpsql -U your_username -d your_database
1Contoh, untuk terhubung ke basis data default
postgres
:bashpsql -U postgres -d postgres
1Jika koneksi memerlukan password, masukkan kata sandi untuk pengguna root/postgres yang sudah dikonfigurasikan di ServBay.
Instal ekstensi: Setelah berhasil terkoneksi, Anda akan berada di antarmuka baris perintah
psql
. Jalankan perintahCREATE EXTENSION
untuk instalasi ekstensi yang diinginkan. Gantimodule_name
dengan nama ekstensi yang hendak diinstal.sqlCREATE EXTENSION module_name;
1Contoh menginstal ekstensi
pg_trgm
:sqlCREATE EXTENSION pg_trgm;
1Verifikasi instalasi: Setelah instalasi selesai, gunakan perintah
\dx
untuk melihat daftar ekstensi yang telah terpasang di basis data saat ini dan memastikan ekstensi yang Anda inginkan sudah aktif.sql\dx
1
Contoh: Mengaktifkan Ekstensi pg_trgm
Berikut adalah contoh sesi lengkap di baris perintah psql
untuk menghubungkan ke basis data postgres
dan mengaktifkan ekstensi pg_trgm
:
sql
# Jalankan perintah berikut di terminal untuk menyambung ke basis data
psql -U postgres -d postgres
# Setelah berhasil, Anda akan melihat prompt baris perintah psql
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- Menampilkan ekstensi yang sudah terpasang (biasanya hanya plpgsql dan 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=# -- Memasang ekstensi pg_trgm
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- Tampilkan kembali daftar ekstensi untuk memastikan pg_trgm sudah aktif
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=# -- Instalasi berhasil, Anda sudah bisa menggunakan fungsi dan operator dari 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
Menampilkan Daftar Ekstensi PostgreSQL yang Tersedia di ServBay
Sebelum menginstal ekstensi, ada baiknya mengetahui modul ekstensi apa saja yang sudah tersedia di versi PostgreSQL bawaan ServBay. Ini membantu Anda menemukan fitur-fitur potensial lain yang mungkin bermanfaat.
Setelah terhubung ke salah satu basis data PostgreSQL, jalankan query SQL berikut untuk melihat seluruh ekstensi yang tersedia:
sql
SELECT * FROM pg_available_extensions ORDER BY name;
1
Perintah ini akan menampilkan tabel berisi daftar semua modul ekstensi yang didukung oleh versi PostgreSQL terintegrasi di ServBay, termasuk nama, versi default, status terinstal di basis data saat ini, dan deskripsi singkat fungsinya.
Hasil tipikal query ini (daftar bisa sangat panjang dan rincian tergantung pada versi PostgreSQL dan ServBay yang Anda gunakan) adalah sebagai berikut:
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
Harap perhatikan bahwa daftar di atas hanya untuk contoh; daftar aktual serta nomor versi yang Anda lihat di ServBay bisa berbeda tergantung versi ServBay atau PostgreSQL yang Anda gunakan.
Kesimpulan
ServBay dengan ekosistem ekstensi resmi PostgreSQL yang lengkap menyederhanakan proses penggunaan fitur-fitur canggih basis data di lingkungan pengembangan lokal. Pengembang tidak perlu repot mengkompilasi atau menginstal sendiri—cukup jalankan perintah SQL sederhana untuk mengaktifkan modul yang dibutuhkan di basis data Anda. Dengan cara ini, Anda bisa lebih fokus pada pengembangan aplikasi dan meningkatkan produktivitas. Manfaatkan potensi berbagai ekstensi ini untuk menambah kemampuan tingkat lanjut seperti analisis performa, pencarian teks lengkap, keamanan data, dan banyak lagi pada proyek Anda.