PostgreSQL Nedir?
Kısa tanım
PostgreSQL, kökeni 1980'lerde Berkeley'deki POSTGRES projesine dayanan, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir. SQL standardına geniş uyumu, ACID işlemleri, MVCC tabanlı eşzamanlılık modeli, JSONB ve dizi gibi zengin veri tipleri ve uzantı (extension) mimarisiyle bilinir. Tek bir şirkete ait değildir; PostgreSQL Global Development Group tarafından geliştirilir ve BSD ile MIT lisanslarına benzeyen serbest PostgreSQL License ile dağıtılır.
Diğer adları: Postgres, PG

Kökeni, yönetişimi ve lisansı
PostgreSQL, 1986'da Kaliforniya Üniversitesi Berkeley'de başlayan POSTGRES araştırma projesinden doğdu. 1990'ların ortasında SQL desteği eklendi ve proje 1996'da bugünkü adını aldı. Arkasında tek bir şirket yoktur; geliştirme, farklı şirketlerden ve bağımsız katkıcılardan oluşan PostgreSQL Global Development Group tarafından yürütülür. Yazılım, PostgreSQL License adlı, BSD ve MIT lisanslarına benzeyen serbest bir açık kaynak lisansla dağıtılır: telif bildirimi korunduğu sürece ticari ürünlerde kullanılabilir, değiştirilebilir ve dağıtılabilir. Bu esneklik sayesinde birçok bulut sağlayıcısı PostgreSQL'i yönetilen hizmet olarak sunar ve bazı ticari veritabanları onun kod tabanı üzerine kuruludur.
Neden bu kadar çok projede tercih ediliyor?
- Zengin veri tipleri: JSONB, diziler, aralık (range) tipleri, UUID, ağ adresleri ve kullanıcı tanımlı tipler. Esnek alanlar ayrı bir veritabanı kurmadan ilişkisel tabloların yanında tutulabilir.
- Çeşitli indeks türleri: Varsayılan B-tree'nin yanında JSONB ve tam metin arama için GIN, geometrik ve yakınlık sorguları için GiST, çok büyük ve doğal sıralı tablolar için BRIN.
- Uzantılar: PostGIS ile coğrafi sorgular, pgvector ile embedding saklama ve benzerlik araması gibi yetenekler çekirdeğe dokunmadan eklenir; bu sayede PostgreSQL küçük ve orta ölçekli projelerde ayrı bir vektör veritabanı ihtiyacını ortadan kaldırabilir.
- İşlem içinde şema değişikliği:
ALTER TABLEgibi DDL komutlarının çoğu bir işlem içinde çalışır ve hata olursa geri alınabilir. Bu, veritabanı migrasyonlarını yarıda kalma riskine karşı daha güvenli hâle getirir. - Gelişmiş SQL: CTE'ler (
WITH), pencere fonksiyonları, satır düzeyinde güvenlik (row-level security) ve mantıksal replikasyon.
-- Ürün özelliklerini JSONB sütununda tutmak ve indekslemek
CREATE INDEX idx_products_attributes ON products USING GIN (attributes);
SELECT id, name
FROM products
WHERE attributes @> '{"color": "black", "size": "M"}';MVCC ve VACUUM: görünmeyen bakım
PostgreSQL eşzamanlılığı MVCC (çok sürümlü eşzamanlılık denetimi) ile yönetir. Bir UPDATE satırı yerinde değiştirmez; satırın yeni bir sürümünü yazar ve eskisini, onu görmesi gereken bir işlem kalmayana kadar saklar. Böylece okuyanlar yazanları, yazanlar da okuyanları beklemez. Bunun bedeli, kullanılmayan eski satır sürümlerinin temizlenmesi gerekmesidir; bu işi arka planda autovacuum yapar. Saatlerce açık kalan bir işlem temizliği engeller ve tablolar şişer (bloat). Uzun süren raporlar ve unutulmuş açık işlemler bu yüzden izlenmelidir. Varsayılan yalıtım seviyesi Read Committed'dır; ayrıntılar veritabanı işlemi maddesinde.
Bağlantı başına bir süreç
PostgreSQL her istemci bağlantısı için ayrı bir sunucu süreci açar. Bu model sağlamdır, ama her bağlantının bellek maliyeti vardır; yüzlerce uygulama örneğinin ya da serverless fonksiyonların her biri kendi bağlantısını açtığında sunucu sınıra hızla dayanır. Yaygın çözüm, uygulama ile veritabanı arasına PgBouncer gibi bir bağlantı havuzu koymaktır.
Sürümler, yükseltme ve yedek
Yılda yaklaşık bir ana sürüm yayımlanır ve her ana sürüm ilk çıkışından itibaren beş yıl desteklenir; hata ve güvenlik düzeltmeleri içeren ara sürümler en az üç ayda bir gelir. Ara sürüme geçmek, ikili dosyaları değiştirip sunucuyu yeniden başlatmaktan ibarettir. Ana sürüm geçişi ise pg_upgrade, döküm alıp geri yükleme ya da mantıksal replikasyon gerektirir ve önceden staging ortamında denenmelidir. pg_dump ile mantıksal döküm ve sürekli WAL arşivlemeyle zamanda geri dönüş (point-in-time recovery) birlikte iyi bir yedekleme stratejisinin temelidir.

