PostgreSQL Resmi Eklenti Modülleri
ServBay, güçlü bir yerel web geliştirme ortamı olarak çok çeşitli geliştirici araçlarını entegre şekilde sunar; bunların arasında zengin özelliklere sahip PostgreSQL veritabanı da bulunur. PostgreSQL’in gücünü yalnızca çekirdek işlevleriyle değil, aynı zamanda kapsamlı resmi eklenti ekosistemiyle de gösterir. ServBay, PostgreSQL’in çoğu resmi eklenti modülünü önceden yükleyerek geliştiricilerin bu modülleri kolayca etkinleştirip kullanmasına imkân tanır — bu sayede veritabanınızın işlevselliği genişletilir ve karmaşık uygulama gereksinimlerine kolayca cevap verirsiniz.
Bu yazıda, yaygın olarak kullanılan bazı PostgreSQL resmi eklenti modüllerinin ne işe yaradığını ve ServBay üzerinde bunları nasıl kurup kullanabileceğinizi anlatıyoruz.
Popüler Eklenti Modüllerine Genel Bakış
PostgreSQL’in resmi olarak sunduğu çok sayıda eklenti, performans izleme, veri türleri, tam metin arama gibi birçok işlevi kapsar. Özellikle geliştiricilerin günlük işlerinde sıklıkla kullandıkları bazı eklentileri aşağıda bulabilirsiniz:
1. pg_stat_statements
- İşlevi: Sunucuda yürütülen tüm SQL ifadelerinin istatistiklerini (çağrı sayısı, toplam çalışma süresi, işlenen satır sayısı vb.) toplar ve kaydeder.
- Kullanım Amacı: Veritabanı yönetici ve geliştiricilere sorgu performansını analiz etme, yavaş sorguları ve darboğazları tespit etmede yardımcı olur.
- Kurulum Komutu:sqlNot: Kurulumu sonrası genellikle
CREATE EXTENSION pg_stat_statements;
1postgresql.conf
dosyanızdashared_preload_libraries = 'pg_stat_statements'
ayarı yapılmalı ve veri tabanı servisi yeniden başlatılmalıdır. ServBay, bu tür ayarları kolayca yapmanızı sağlayan araçlar sunar.
2. pg_trgm
- İşlevi: Trigram (üçlü karakter dizileri) tabanlı metin benzerliği ölçme işlevleri ve indeks desteği sağlar.
- Kullanım Amacı: Bulanık eşleşme, benzerlik arama ve tam metin araması gibi işlemlerde; özellikle yazım hatalarının veya varyasyonların işlenmesinde kullanılır.
- Kurulum Komutu:sql
CREATE EXTENSION pg_trgm;
1
3. hstore
- İşlevi: PostgreSQL’de tek bir değerde anahtar-değer çiftleri koleksiyonu saklamanızı sağlayan bir veri tipi sunar.
- Kullanım Amacı: Dinamik özelliklerin, yapısal olmayan veya yarı-yapısal verilerin (ör. ayarlar, meta veriler, kullanıcı tercihi) tablo şemasını önceden tanımlamadan saklanmasında idealdir.
- Kurulum Komutu:sql
CREATE EXTENSION hstore;
1
4. citext
- İşlevi: Büyük/küçük harfe duyarsız (case-insensitive) metin dizesi veri tipi sunar.
- Kullanım Amacı: Kullanıcı adı, e-posta adresi veya etiket gibi değerlerin büyük/küçük harfe duyarsız karşılaştırılması gereken yerlerde, sürekli
LOWER()
fonksiyonu kullanmaya gerek kalmadan gelişmiş sorgular yazmayı sağlar. - Kurulum Komutu:sql
CREATE EXTENSION citext;
1
5. uuid-ossp
- İşlevi: Farklı standart UUID (Sürüm 1, 3, 4, 5) oluşturmak için fonksiyonlar sağlar.
- Kullanım Amacı: Dağıtık sistemlerde, anahtar, oturum ID’si ve benzersiz tanımlayıcı gerektiren senaryolarda küresel benzersiz kimlik üretmek için kullanılır.
- Kurulum Komutu:sqlNot: Eklenti adında tire bulunduğu için CREATE EXTENSION komutunda çift tırnak ile yazılması gerekir.
CREATE EXTENSION "uuid-ossp";
1
6. intarray
- İşlevi: Tamsayı dizileri (integer array) üzerinde gelişmiş işlemler ve operatörler sağlar.
- Kullanım Amacı: Kümeler üzerinde kesişim, birleşim, içerme kontrolü, sıralama gibi işlemleri doğrudan veritabanında uygulamanız gereken durumlar için idealdir.
- Kurulum Komutu:sql
CREATE EXTENSION intarray;
1
7. btree_gin
- İşlevi: B-tree veri tiplerine (ör. tamsayı, metin, tarih) GIN (Genelleştirilmiş Ters Dizin) indeksleme desteği ekler.
- Kullanım Amacı: Bir dizi,
hstore
,tsvector
gibi birden fazla değer barındırabilen tiplerin içindeki B-tree ile indekslenebilir öğelere GIN endeks desteği vererek sorgu performansını artırır. - Kurulum Komutu:sql
CREATE EXTENSION btree_gin;
1
8. btree_gist
- İşlevi: B-tree veri tiplerine GiST (Genelleştirilmiş Arama Ağacı) indeksleme sağlar.
- Kullanım Amacı: GiST genel amaçlı bir indeks yapısıdır;
btree_gist
, B-tree ile indekslenebilir verileri GiST tabanlı bir indekste kullanmanızı sağlar. Özellikle aralık, içerme, ya da çoklu sütunda indeksleme gerekenlerde faydalıdır. - Kurulum Komutu:sql
CREATE EXTENSION btree_gist;
1
9. cube
- İşlevi: Çok boyutlu küp veya nokta verilerini tanımlayan bir veri tipi ve bunlarla ilgili operatörler/fonksiyonlar sunar.
- Kullanım Amacı: Çok boyutlu veriyle çalışan uygulamalarda (ör. iki/üç boyutlu coğrafi veriler, veri ambarı küpleri, bilimsel hesaplamalar) tercih edilir.
- Kurulum Komutu:sql
CREATE EXTENSION cube;
1
10. fuzzystrmatch
- İşlevi: Levenshtein mesafesi, Soundex, Metaphone gibi metinler arası benzerliği ve farklılığı ölçen fonksiyonlar içerir.
- Kullanım Amacı: Bulanık eşleşme, yazım denetimi, veri temizliği ve kopya tespitinde kullanılır.
- Kurulum Komutu:sql
CREATE EXTENSION fuzzystrmatch;
1
11. plpgsql
- İşlevi: PostgreSQL’in prosedürel dili olup; kullanıcıların prosedür, tetikleyici fonksiyon ya da anonim kod blokları oluşturmasını sağlar.
- Kullanım Amacı: Sunucu tarafında gelişmiş iş mantığı, otomasyon ve veri işleme akışları kurmanıza olanak tanır.
plpgsql
genellikle varsayılan olarak kurulu gelir ancak CREATE EXTENSION ile yeniden etkinleştirilebilir veya yoksa eklenebilir. - Kurulum Komutu:sql
CREATE EXTENSION plpgsql;
1
12. tablefunc
- İşlevi: Tablo düzeyinde veri dönüştürme fonksiyonları içerir; en bilinen fonksiyonu
crosstab
dir. - Kullanım Amacı: Satırdaki benzersiz değerleri kolona çeviren pivot (crosstab) sorguları için veya raporlama ve veri analizinde kullanılır.
- Kurulum Komutu:sql
CREATE EXTENSION tablefunc;
1
13. dblink
- İşlevi: Bir PostgreSQL veritabanından bir başkasına bağlanıp sorgu yürütmeyi sağlar.
- Kullanım Amacı: Farklı veri tabanları arasında temel veri aktarımı veya sorgulaması yapmak için; uygulama katmanında çapraz bağlantı mantığına gerek kalmaz.
- Kurulum Komutu:sql
CREATE EXTENSION dblink;
1
14. postgres_fdw
- İşlevi: Dış Veri Sarıcı (Foreign Data Wrapper) olarak başka bir PostgreSQL veritabanındaki tabloları sanki bu veritabanında yerelmiş gibi erişme ve sorgulama imkânı verir.
- Kullanım Amacı: Çapraz veritabanı entegrasyonu ve birleştirilmiş sorgular için kullanılır.
dblink
’e kıyasla daha güçlü ve esnektir; karmaşık sorgu optimizasyonları destekler. - Kurulum Komutu:sql
CREATE EXTENSION postgres_fdw;
1
15. pgcrypto
- İşlevi: Hash, simetrik şifreleme, açık anahtarlı şifreleme vb. birçok kriptolama ve şifre çözme fonksiyonu sağlar.
- Kullanım Amacı: Veri tabanında veri şifreleme, parola hash’leme, dijital imza oluşturma/doğrulama gibi güvenlik odaklı işlevleri uygulatmak için idealdir.
- Kurulum Komutu:sql
CREATE EXTENSION pgcrypto;
1
Bu liste, ServBay’in sunduğu PostgreSQL resmi eklenti modüllerinin yalnızca bir kısmını içerir. ServBay, PostgreSQL topluluğunun önerdiği neredeyse tüm resmi eklentileri barındırmaya özen gösterir ve bu sayede geniş bir işlevsellik sunar.
ServBay’de PostgreSQL Eklentileri Nasıl Kurulur ve Kullanılır?
ServBay ortamında PostgreSQL eklentileri kurmak ve kullanmak son derece kolaydır. Eklentiler, belirli bir veritabanına özel olarak kurulur; yani her eklenti kullanmak istediğiniz veritabanında ayrı ayrı etkinleştirilmelidir.
Ön Koşullar:
- ServBay’in çalıştığından ve PostgreSQL veri tabanı servisinin başlatılmış olduğundan emin olun.
Adımlar:
Hedef PostgreSQL Veritabanına Bağlanın: Terminal uygulamanızı açın (ör. macOS’ta Terminal veya iTerm2) ve
psql
komut satırı aracıyla eklenti kurmak istediğiniz veritabanına bağlanın. Varsayılan olarak ServBay’de PostgreSQL kullanıcı adıpostgres
, varsayılan veritabanı adı dapostgres
olarak gelir.bashpsql -U your_username -d your_database
1Örneğin, varsayılan
postgres
veritabanına bağlanmak için:bashpsql -U postgres -d postgres
1Bağlantı sırasında parola istenirse, ServBay ayarlarında PostgreSQL için belirlediğiniz root/postgres kullanıcı parolasını girin.
Eklenti Modülünü Kurun: Bağlantı sağlandıktan sonra
psql
komut arayüzüne girmiş olacaksınız. Gerekli eklentiyi kurmak içinCREATE EXTENSION
komutunu çalıştırın.module_name
kısmını yüklemek istediğiniz eklentinin adıyla değiştirin.sqlCREATE EXTENSION module_name;
1Örneğin,
pg_trgm
eklentisini kurmak için:sqlCREATE EXTENSION pg_trgm;
1Kurulumu Doğrulayın: Kurulum sonrası, o anki veritabanında kurulu olan tüm eklentileri görmek için
\dx
komutunu kullanabilirsiniz.sql\dx
1
Örnek: pg_trgm
Eklentisinin Etkinleştirilmesi
Aşağıda, psql
komut satırında postgres
veritabanına bağlanılıp, pg_trgm
eklentisinin nasıl kurulduğuna dair tam bir örnek etkileşim görebilirsiniz:
# Terminalde aşağıdaki komutla veritabanına bağlanın
psql -U postgres -d postgres
# Başarıyla bağlıysanız, psql komut satırı görüntülenecek
psql (16.3 (ServBay))
Type "help" for help.
postgres=# -- Kurulu eklentileri görün (sadece varsayılan plpgsql ve pgcrypto olabilir)
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=# -- pg_trgm eklentisini kurun
postgres=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
postgres=# -- Tekrar eklenti listesini görüntüleyin, pg_trgm eklenmiş olmalı
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=# -- Kurulum tamam! Artık pg_trgm’in sunduğu işlev ve operatörlere erişebilirsiniz.
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
ServBay’de PostgreSQL ile Sunulan Kullanılabilir Eklentileri Sorgulama
Bir eklentiyi kurmadan önce, ServBay’de kullanılan PostgreSQL sürümü ile birlikte gelen mevcut eklenti listesini bilmek faydalıdır. Böylece potansiyel olarak işinize yarayacak yeni işlevleri de keşfedebilirsiniz.
Herhangi bir PostgreSQL veritabanına bağlandıktan sonra aşağıdaki SQL sorgusunu çalıştırarak mevcut tüm eklentilerin tam listesini görebilirsiniz:
SELECT * FROM pg_available_extensions ORDER BY name;
Bu sorgunun dönüşünde, ServBay’in entegre PostgreSQL sürümünde desteklenen eklentilerin adlarını, varsayılan sürümlerini, mevcut veritabanında kurulu olup olmadığını ve açıklamalarını içeren bir tablo görürsünüz.
Tipik bir çıktı (liste uzun olabilir ve içerikler/versiyonlar; ServBay’in PostgreSQL sürümüne göre değişiklik gösterebilir):
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
Lütfen yukarıdaki listenin sadece bir örnek olduğunu, ServBay ve PostgreSQL sürümü güncellenirse farklı ya da güncel sürümler görebileceğinizi unutmayın.
Özet
ServBay, çok sayıda resmi PostgreSQL eklentisini önceden yükleyerek bu güçlü işlevleri yerel geliştirme ortamınızda kullanmayı son derece kolaylaştırır. Geliştiriciler herhangi bir derleme veya manuel kurulumla uğraşmadan, yalnızca basit SQL komutlarıyla ihtiyaç duydukları eklentileri veritabanlarında etkinleştirebilirler — böylece gelişmiş performans analizi, tam metin araması, veri güvenliği gibi üst düzey veritabanı özellikleriyle projelerine kolayca değer katar ve üretkenliklerini artırabilirler.