PostgreSQL Nedir? Özellikleri, Sürümleri ve MySQL Farkı
PostgreSQL'in MVCC, WAL, JSONB ve uzantılarını, replikasyonunu ve yedeğini, sürüm desteğini, MySQL'den farkını ve güvenlik ayarlarını anlattık.

Kısa cevap: PostgreSQL, kökü 1986'da Berkeley'de başlayan POSTGRES projesine dayanan açık kaynak, nesne-ilişkisel bir veritabanı yönetim sistemidir. BSD ve MIT benzeri lisansıyla her amaçla ücretsiz kullanılabilir. Eş zamanlı erişimi MVCC ile yönetir, kalıcılığı write-ahead log (WAL) ile sağlar; JSONB, farklı indeks türleri ve PostGIS, pgvector gibi uzantılarla çeşitli iş yüklerini tek motorda taşır. Her ana sürüm 5 yıl desteklenir. MySQL'den lisans, süreç modeli ve depolama mimarisinde ayrılır.
PostgreSQL nedir?
Kendi tanımıyla PostgreSQL, SQL dilini kullanan ve genişleten, açık kaynak, nesne-ilişkisel bir veritabanı sistemi; 2001'den beri de ACID uyumlu. Belgelere göre kullanıcı ona yeni veri tipi, fonksiyon, operatör, indeks yöntemi ve yordamsal dil ekleyebilir. Lisansı PostgreSQL License: BSD ve MIT lisanslarına benzeyen serbest bir açık kaynak lisans. Yazılım, yazılı sözleşme gerekmeden her amaçla ücretsiz kullanılabilir, değiştirilebilir ve dağıtılabilir.
Kullandığı dili SQL yazımızda, VTYS kavramını VTYS yazımızda anlattık; veritabanı teriminin kısa tanımı sözlüğümüzde var. Stack Overflow'un 2026 anketinde veritabanı sorusunu cevaplayan 12.061 geliştiricinin %57,9'u son bir yılda PostgreSQL ile yoğun geliştirme yaptığını söyledi; PostgreSQL'i SQLite (%42,1) ve MySQL (%35,1) izliyor.
Berkeley'den bugüne kısa tarihçe
Projenin tarihçesine göre POSTGRES'i Berkeley'de Profesör Michael Stonebraker yönetti. Kodlama 1986'da başladı, ilk sürüm Haziran 1989'da birkaç dış kullanıcıya ulaştı ve Berkeley projesi 4.2 sürümüyle kapandı. 1994'te Andrew Yu ve Jolly Chen koda SQL yorumlayıcısı ekledi ve PostQUEL sorgu dilinin yerini SQL aldı. Yazılım ardından Postgres95 adıyla açık kaynak olarak yayımlandı. 1996'da yeni ad PostgreSQL oldu; sürüm numarası Berkeley'deki sırayı sürdürmek için 6.0'dan başladı.
Temel özellikler: MVCC, WAL, indeksler, JSONB ve uzantılar
- MVCC: Her SQL ifadesi verinin bir anlık görüntüsünü görür; okuma ile yazma birbirini engellemez. Güncellenen satırların eski sürümlerini VACUUM temizler; çoğu kurulumda bu işi autovacuum yapar.
- WAL: Değişiklik veri dosyasına ancak WAL kaydı kalıcı depolamaya yazıldıktan sonra işlenir; çöken sistem bu günlükten kurtarılır. Replikasyon ve belirli bir ana geri dönüş (point-in-time recovery, PITR) da WAL'a dayanır.
- İndeksler: B-tree, Hash, GiST, SP-GiST, GIN ve BRIN yerleşik geliyor; varsayılanı B-tree. GIN, dizi gibi çok bileşenli değerlere uygun bir ters (inverted) indeks.
- JSON ve JSONB: json girdinin birebir kopyasını saklar ve her işlemde yeniden ayrıştırır. jsonb ise ikili biçimde saklanır, çok daha hızlı işlenir ve indekslenebilir; belgeler çoğu uygulamaya jsonb'yi öneriyor.
- Uzantılar: İlgili SQL nesnelerini tek pakette toplar ve CREATE EXTENSION ile yüklenir. PostGIS coğrafi veriyi saklama, indeksleme ve sorgulama desteği ekler; pgvector vektörleri öteki verinin yanında tutup benzerlik araması yapar.
Replikasyon: streaming ve logical
- Streaming replication: Standby sunucu primary'ye bağlanır, primary WAL kayıtlarını üretildikçe gönderir. Varsayılan olarak asenkrondur; commit ile değişikliğin standby'da görünmesi arasında küçük bir gecikme olur. Salt okunur sorgulara açılan standby'a hot standby denir.
- Logical replication: Veriyi blok adresleriyle değil, replication identity (çoğunlukla birincil anahtar) üzerinden, publish/subscribe modeliyle taşır. Farklı ana sürümler ve platformlar arasında çalışır; buna karşılık şema değişiklikleri (DDL) ve sequence verisi aktarılmaz.
Senkron ve asenkron farkını replikasyon yazımızda, gecikmenin ölçülmesini Reliability Friday 01 yazısında anlattık.
Yedekleme ve PITR: pg_basebackup ve WAL arşivi
pg_basebackup, çalışan bir cluster'ın temel yedeğini öteki istemcileri etkilemeden alır; bu yedek hem PITR hem de yeni bir standby için başlangıç noktasıdır. Yedek her zaman cluster'ın tamamını kapsar; tek bir veritabanı ya da tablo için pg_dump gerekir. PostgreSQL 17'den itibaren artımlı yedek de alınabiliyor: yalnız değişen bloklar gelir, ama bu yedek pg_combinebackup ile önceki yedeklerle birleştirilmeden kullanılamaz.
PITR için archive_mode ile açılan WAL arşivi gerekir; geri dönüş, temel yedeğin başlangıcına kadar uzanan kesintisiz bir WAL dizisi ister. Yedek türlerini yedekleme yazımızda, PostgreSQL'in üç yedekleme yöntemini DBA yazımızda anlattık.
Sürümler ve destek politikası
Sürüm politikasına göre PostgreSQL yılda yaklaşık bir ana sürüm çıkarır ve her ana sürümü ilk yayınından itibaren 5 yıl destekler. Hata ve güvenlik düzeltmeleri en az üç ayda bir küçük sürümlerle gelir; takvimdeki hedef Şubat, Mayıs, Ağustos ve Kasım'ın ikinci perşembesi. Beş yılın sonunda son bir küçük sürüm çıkar ve ana sürüm destek dışı kalır (end-of-life). PostgreSQL 14-18 sürümlerinin tarihleri (ilk yayın; destek sonu) şöyle:
- PostgreSQL 18: 25 Eylül 2025; 14 Kasım 2030.
- PostgreSQL 17: 26 Eylül 2024; 8 Kasım 2029.
- PostgreSQL 16: 14 Eylül 2023; 9 Kasım 2028.
- PostgreSQL 15: 13 Ekim 2022; 11 Kasım 2027.
- PostgreSQL 14: 30 Eylül 2021; 12 Kasım 2026.
PostgreSQL 14'ün desteği 12 Kasım 2026'da bitiyor. PostgreSQL 19'un 4. betası ise 24 Eylül 2026'da çıktı. Güvenlik düzeltmeleri küçük sürümlerle geldiği için proje her zaman son küçük sürümün kullanılmasını öneriyor (yama yönetimi yazımız).
PostgreSQL ile MySQL farkı
İkisi de açık kaynak ve ilişkisel; iki projenin belgelerine göre farklar şunlar:
- Geliştirici ve lisans: PostgreSQL'in sürümlerini PostgreSQL Global Development Group yayımlar; lisansı BSD ve MIT benzeri. MySQL'i Oracle Corporation geliştirir; GPL ile dağıtılır, ticari lisansı da var.
- Süreç modeli: PostgreSQL her bağlantı için yeni bir süreç başlatır; MySQL çok iş parçacıklı (multithreaded) bir sunucudur.
- Depolama: MySQL'de tablo türüne göre takılıp çıkarılabilen storage engine'ler çalışır; varsayılan InnoDB ACID modeline uyar. PostgreSQL'de tablo depolamasını table access method'lar yönetir; yenisi eklenti koduyla yazılabilir.
- JSON: MySQL'in JSON sütunları doğrudan indekslenmez; generated column ya da çok değerli (multi-valued) indeks kullanılır. PostgreSQL'de jsonb, GIN indeksiyle aranabilir.
- Destek: MySQL'de LTS serileri 5 yıl premier ve 3 yıl extended destek alır, Innovation sürümleri bir sonrakine kadar desteklenir.
Belge veritabanıyla seçimi PostgreSQL mü MongoDB mi yazımızda, NoSQL ailesini NoSQL yazımızda ele aldık.
Yönetilen PostgreSQL: AWS, Azure ve Google Cloud
- Amazon RDS for PostgreSQL: AWS'ye göre Multi-AZ, read replica ve belirli bir ana geri dönüşü destekler; yönetilen hizmet deneyimi için sunucuya SSH erişimi vermez.
- Azure Database for PostgreSQL: Microsoft'a göre donanım, işletim sistemi ve veritabanı motoru yamalarını hizmet uygular; yedekler varsayılan olarak 7, en fazla 35 gün saklanır.
- Cloud SQL for PostgreSQL: Google'a göre yedek, yüksek erişilebilirlik, failover ve replikasyonu üstlenir; yamaları yeniden başlatma gerektiren bakım güncellemeleriyle uygular.
AWS'ye göre sorgu ayarı (query tuning) yine müşterinin işi (DBA yazımız).
PostgreSQL güvenliği: pg_hba.conf, roller ve TLS
- pg_hba.conf: İstemci doğrulamasını bu dosya yönetir; her kayıt bağlantı türü, adres aralığı, veritabanı ve kullanıcı için bir doğrulama yöntemi belirler. Eşleşen ilk kayıt uygulanır, başarısız doğrulamada sonrakine geçilmez. trust yöntemi ise sunucuya bağlanabilen herkesi parolasız ve istediği kullanıcı olarak içeri alır.
- Ağ ve parola: Sunucu varsayılan ayarda yalnız localhost'u (listen_addresses) ve 5432 numaralı portu dinler (port yazımız). Parola şifrelemesinin varsayılanı scram-sha-256; md5 desteği ileride kaldırılacak.
- Roller: Erişim yetkisi rollerle yönetilir; bir rol kullanıcı, grup ya da ikisi birden olabilir (IAM yazımız).
- TLS: Şifreli bağlantı sunucuda ssl = on ile açılır; en düşük protokol varsayılanı TLS 1.2. İstemcideki sslmode varsayılanı prefer; belgeler güvenliğin önemli olduğu kurulumlar için verify-full'u öneriyor (SSL yazımız).
Günlük işletimi veritabanı platformu ve operasyonları, yüksek erişilebilirlik tasarımını veritabanı platform mühendisliği, PostgreSQL'e geçişi uygulama ve veritabanı modernizasyonu hizmetimizde ele alıyoruz.
Sık sorulan sorular
PostgreSQL ne işe yarar? Uygulama verisini tablolarda saklar, SQL ile sorgulatır ve eş zamanlı işlemleri tutarlı tutar; JSONB ve uzantılarla belge, coğrafi ve vektör verisini de taşır.
PostgreSQL ücretsiz mi? Evet. PostgreSQL License, yazılımın ücretsiz ve yazılı sözleşme gerekmeden her amaçla kullanılmasına, değiştirilmesine ve dağıtılmasına izin verir.
PostgreSQL ile MySQL arasındaki fark nedir? PostgreSQL BSD benzeri lisanslı, nesne-ilişkisel bir sistemdir ve her bağlantıya ayrı süreç açar. MySQL'i Oracle geliştirir; GPL ve ticari lisansla dağıtılır, çok iş parçacıklı çalışır.
PostgreSQL hangi portu kullanır? Varsayılan olarak 5432 numaralı TCP portunu dinler ve yalnız localhost'tan gelen bağlantıları kabul eder.
PostgreSQL sürümleri ne kadar desteklenir? Her ana sürüm ilk yayınından itibaren 5 yıl desteklenir; düzeltmeler en az üç ayda bir küçük sürümlerle gelir.
Kaynaklar
- PostgreSQL, About: tanım, 1986 kökeni, 2001'den beri ACID uyumu
- PostgreSQL, What Is PostgreSQL?: nesne-ilişkisel VTYS ve genişletilebilirlik (PostgreSQL 18 belgeleri)
- PostgreSQL, License: PostgreSQL License ve kullanım izni
- PostgreSQL, A Brief History of PostgreSQL: Berkeley POSTGRES projesi, Postgres95 ve PostgreSQL adı
- PostgreSQL, Introduction to MVCC, Glossary ve Routine Vacuuming: MVCC, eski satır sürümleri, VACUUM ve autovacuum
- PostgreSQL, Write-Ahead Logging (WAL): WAL ilkesi, çökme sonrası kurtarma ve PITR
- PostgreSQL, Index Types: yerleşik indeks türleri
- PostgreSQL, JSON Types: json ve jsonb farkı, GIN indeksi
- PostgreSQL, Packaging Related Objects into an Extension: uzantılar ve CREATE EXTENSION
- PostGIS ve pgvector: coğrafi veri ve vektör benzerlik araması uzantıları
- PostgreSQL, Log-Shipping Standby Servers, Logical Replication ve Restrictions: streaming ve logical replication, kısıtlar
- PostgreSQL, pg_basebackup ve Continuous Archiving and Point-in-Time Recovery: temel ve artımlı yedek, WAL arşivi
- PostgreSQL, Versioning Policy ve Roadmap: destek süresi, destek tarihleri ve küçük sürüm takvimi (13 Ekim 2026'da okundu)
- PostgreSQL, PostgreSQL 19 Beta 4 Released!: 19'un 4. betası (24 Eylül 2026)
- PostgreSQL, Security: güvenlik düzeltmelerinin küçük sürümlerle yayımlanması
- PostgreSQL, Architectural Fundamentals ve Table Access Method Interface Definition: süreç modeli ve tablo depolaması
- MySQL, What is MySQL?, Alternative Storage Engines, Introduction to InnoDB, The JSON Data Type ve MySQL Releases: Innovation and LTS: MySQL'in lisansı, mimarisi, JSON desteği ve destek modeli (MySQL 9.7 belgeleri)
- AWS, Amazon RDS for PostgreSQL ve What is Amazon RDS?: yönetilen PostgreSQL ve sorumluluk paylaşımı
- Microsoft, What is Azure Database for PostgreSQL flexible server?: yama, yedek saklama ve yüksek erişilebilirlik (son güncelleme 9 Ocak 2026)
- Google Cloud, Cloud SQL for PostgreSQL overview: yönetilen hizmetin üstlendiği işler (son güncelleme 9 Ekim 2026)
- PostgreSQL, The pg_hba.conf File, Password Authentication, Connections and Authentication, Database Roles, Secure TCP/IP Connections with SSL ve SSL Support (libpq): istemci doğrulaması, parola yöntemleri, varsayılan ayarlar, roller ve TLS
- Stack Overflow, 2026 Developer Survey: Technology ve Methodology: veritabanı kullanım oranları (anket 23 Haziran-5 Ağustos 2026, 30.903 geçerli cevap; veritabanı sorusunda 12.061 cevap)
- Bu katmanı nasıl işlettiğimiz: veritabanı platformu ve operasyonları