Özet: PostgreSQL, PostgreSQL Lisansı altında ücretsiz dağıtılan, ACID uyumlu ve kurumsal düzeyde özellik zenginliğine sahip nesne-ilişkisel veritabanı yönetim sistemidir. Yıllık Stack Overflow Developer Survey verileri PostgreSQL'i en sevilen ve en çok kullanılan veritabanları arasında üst sıralarda gösterirken, yönetilen DBaaS hizmetleri otomatik yedek, yamalama ve audit log ile self-hosted'a göre daha düşük operasyonel risk sunar.
Ana noktalar:
- PostgreSQL Lisansı altında ticari kullanım dahil tamamen ücretsizdir.
- MVCC, JSONB, PostGIS ve pgvector PostgreSQL'i çok-amaçlı bir motor hâline getirir.
- Major version upgrade için pg_upgrade (hızlı) ve logical replication (zero-downtime) iki standart yöntemdir.
- Patroni + etcd kümesi otomatik failover ile %99,95+ SLA hedefini destekler.
- Yönetilen DBaaS, küçük-orta ölçek için 1 DBA maliyetinden daha ekonomik bir TCO sunar.
PostgreSQL son on yılda kurumsal veritabanı dünyasının en çok benimsenen açık kaynak motorlarından biri hâline geldi. Stack Overflow Developer Survey yıllık sonuçları PostgreSQL'i en çok kullanılan ve en sevilen veritabanları kategorisinde sürekli üst sıralarda gösteriyor. Oracle ve SQL Server gibi geleneksel kurumsal seçeneklerin lisans maliyetlerinden kaçınmak, MySQL'in ötesinde gelişmiş veri tipi ve genişletilebilirlik aramak ve modern bulut altyapısıyla uyumlu çalışmak — bu üç motivasyon büyük kurumların PostgreSQL'e geçişini hızlandırdı. Ancak güçlü bir motor seçmek, başarılı bir veritabanı altyapısı kurmanın yalnızca ilk adımıdır.
Bu rehber, veritabanı yöneticileri, çözüm mimarları ve geliştirme ekibi liderleri için yazıldı. PostgreSQL'in temel özelliklerini, kurulum seçeneklerini, yüksek erişilebilirlik mimarisini, yedekleme stratejilerini, performans optimizasyonunu, KVKK perspektifinden güvenlik gereksinimlerini ve self-hosted ile yönetilen hizmet (DBaaS) arasındaki TCO karşılaştırmasını pratik bir çerçevede ele alıyoruz.
Sonunda, kendi iş yükünüz için PostgreSQL'i nasıl dağıtacağınıza, yönetip optimize edeceğinize dair somut bir karar çerçeveniz olacak.
PostgreSQL nedir ve neden tercih edilir?
Açık kaynak ve ACID uyumlu mimari
PostgreSQL, PostgreSQL Lisansı (BSD benzeri esnek bir açık kaynak lisansı) altında yayımlanan, nesne-ilişkisel bir veritabanı yönetim sistemidir. 30+ yıldır geliştirilen olgun bir kod tabanına sahiptir. Tam ACID uyumludur: atomik transaksiyonlar, tutarlılık garantileri, izolasyon seviyeleri ve dayanıklılık (durability) için WAL (Write-Ahead Logging) mekanizması kullanır.
Açık kaynak olması, üretici lock-in olmadan kullanım, kaynak kodunu inceleyebilme, kendi extension'ınızı geliştirebilme ve ticari destek için birden çok sağlayıcı arasından seçim yapma esnekliği sunar.
MVCC ve eşzamanlılık modeli
PostgreSQL eşzamanlılık için MVCC (Multi-Version Concurrency Control) kullanır. Bir kaydı okuyan transaksiyon, aynı anda başka bir transaksiyonun aynı kaydı güncellemesi durumunda kilitlenmez; her transaksiyon kendi tutarlı görüntüsünü görür. Bu, okuma-yoğun OLTP iş yüklerinde yüksek concurrency sağlar.
MVCC'nin bedeli VACUUM operasyonudur: silinen ve güncellenen satırların eski versiyonları periyodik olarak temizlenmelidir. Autovacuum bu işi arka planda otomatik yürütür; ancak yoğun iş yüklerinde tuning gerektirir.
PostgreSQL vs MySQL vs Oracle karşılaştırması
| Özellik | PostgreSQL | MySQL | Oracle |
|---|---|---|---|
| Lisans | Açık kaynak (BSD-like) | Açık kaynak (GPL) + ticari | Tescilli, lisans ücretli |
| ACID | Tam | InnoDB ile tam | Tam |
| JSON desteği | JSONB (indeksli) | JSON (sınırlı) | JSON + JSON-relational |
| Genişletilebilirlik | Çok yüksek (extensions) | Sınırlı | Yüksek (PL/SQL) |
| Tam metin arama | Yerleşik (tsvector) | Yerleşik (sınırlı) | Oracle Text |
| Coğrafi veri | PostGIS (lider) | MySQL Spatial | Oracle Spatial (ücretli) |
| HA ekosistemi | Patroni, Stolon, repmgr | Group Replication, Galera | Data Guard, RAC (ücretli) |
PostgreSQL, kompleks sorgular, ileri veri tipleri, coğrafi veri ve özelleştirilebilir veri modeli isteyen senaryolarda öne çıkar. MySQL, basit OLTP ve hafif web uygulamalarında geleneksel olarak popüler kalmaya devam eder. Oracle, devasa enterprise yatırımı olan kurumlarda hâlâ tercih edilir; ancak yüksek lisans maliyeti PostgreSQL'e geçişi hızlandıran ana sebeplerden biridir.
PostgreSQL'in temel özellikleri
Veri tipleri (JSONB, array, range)
PostgreSQL standart SQL veri tiplerinin yanı sıra JSONB (binary JSON, indekslenebilir), array (her sütun bir dizi olabilir), range (sayısal veya zaman aralıkları), UUID, INET (IP adresi), CIDR (ağ) gibi zengin tipleri yerel destekler. JSONB özellikle güçlüdür: NoSQL veritabanı esnekliğini ilişkisel veritabanı garantileriyle birleştirir.
Bu zenginlik, uygulama tarafında JSON serileştirme ve sorgulama yapmak zorunda kalmadan veriyi doğrudan sorgu motorunda işlemenize olanak tanır.
Genişletilebilirlik (extensions, PL/pgSQL, custom types)
PostgreSQL'in en güçlü yanlarından biri extension ekosistemidir. PostGIS (coğrafi veri), TimescaleDB (time-series), pgvector (vector embeddings, AI), pg_partman (partition yönetimi), pg_cron (zamanlanmış görev), hstore (anahtar-değer) gibi onlarca extension üretim sınıfı yetenekler ekler.
PL/pgSQL ile stored procedure yazılır; ayrıca PL/Python, PL/Perl, PL/Java gibi farklı dil desteği vardır. Custom type ve operator tanımlayarak veritabanını domain'inize göre özelleştirmek mümkündür.
Tam metin arama ve GIS (PostGIS)
PostgreSQL'in yerleşik tam metin arama (FTS) yetenekleri, küçük-orta ölçek arama ihtiyaçları için Elasticsearch gibi ayrı bir motor kurmaya gerek bırakmaz. tsvector ve tsquery tipleriyle indekslenmiş, dilbilgisi farkındalıklı arama yapılabilir. GIN indeksleri ile yüksek performans sağlar.
PostGIS extension'ı ise coğrafi veri için sektör standardıdır. Coğrafi sorgular (mesafe, kesişim, buffer), coğrafi indeksler (R-tree, GiST) ve OGC standartları yerel destekli. Lojistik, harita, fintech ve telekom sektörleri için kritik bir özelliktir.
Stored procedures ve trigger'lar
İş mantığının bir kısmı veritabanı tarafında stored procedure ve trigger ile uygulanabilir. Bu, ağ gidiş-dönüşlerini azaltır ve veri bütünlüğünü kaynakta korur. Modern mimarilerde stored procedure abartılmamalıdır; ancak veri bütünlüğü kuralları ve audit tetikleyicileri için tipik kullanım alanlarıdır.
PostgreSQL kurulum seçenekleri
On-premise sunucuda kurulum
Klasik yaklaşım: fiziksel veya sanal sunucuya doğrudan kurulum. apt/yum repository'lerinden veya kaynaktan derleyerek kurulum yapılır. Kurum içi BT ekibi tam kontrol sahibi olur, ancak donanım, lisans (OS), yedekleme, izleme ve patch yönetimi tamamen iç sorumluluktadır.
On-premise model regülatif sertifikasyon, dedicated donanım gereksinimi veya çok yüksek IOPS ihtiyacı olan iş yükleri için tercih edilir.
Sanal sunucuda self-hosted
Bulut sağlayıcının sanal sunucusunda PostgreSQL'i kendiniz kurar ve yönetirsiniz. Donanım yatırımı yoktur, esneklik vardır, ancak veritabanı düzeyindeki tüm yönetim (HA, yedek, tuning, patch) iç sorumluluğunuzdadır. Orta ölçekli kurumlar ve DBA kadrosu olan iç ekipler için yaygın.
Bulutta yönetilen veritabanı (DBaaS)
DBaaS modelinde sağlayıcı kurulum, HA, yedek, patch, izleme ve tuning'i üstlenir. Müşteri sadece veri ve uygulamaya odaklanır. AWS RDS, Azure Database for PostgreSQL, GCP Cloud SQL gibi hyperscaler hizmetlerinin yanı sıra yerli bulut sağlayıcıların DBaaS hizmetleri de mevcut.
DBaaS, BT ekibi büyük olmayan ama güvenilir veritabanı altyapısı isteyen kurumlar için TCO ve risk açısından çoğunlukla en uygun seçenektir. Stack Overflow Developer Survey verileri geliştiricilerin yönetilen veritabanı hizmetlerini yıldan yıla daha fazla tercih ettiğini ortaya koyuyor.
Container ve Kubernetes operatörleri
Kubernetes ortamlarında PostgreSQL operatörleri (Zalando, CrunchyData, CloudNative-PG) yaygın kullanılır. Bu operatörler veritabanı yaşam döngüsünü Kubernetes Custom Resource olarak yönetir: provisioning, failover, backup ve scale operasyonları manifest dosyalarıyla tanımlanır.
Container mimarisi modern DevOps ekipleri için doğal bir tercih; ancak stateful veritabanı yönetiminin Kubernetes karmaşıklığı eklediğini ve mature operatör seçiminin kritik olduğunu unutmamak gerekir.
Yüksek erişilebilirlik (HA) ve replikasyon
Streaming replication
PostgreSQL'in yerleşik HA mekanizması streaming replication'dır. Primary sunucu WAL kayıtlarını sürekli olarak standby sunuculara akış olarak gönderir. Standby sunucular read-only erişim için kullanılabilir (read replica), failover senaryosunda primary'ye yükseltilebilir.
Synchronous replication, primary'nin commit'i ancak standby onayladıktan sonra başarılı saymasını sağlar; veri kaybı önler ama gecikme ekler. Asynchronous replication ise gecikme yok, ama küçük bir veri kaybı penceresi tolere edilir.
Logical replication ve multi-master senaryoları
Logical replication, satır düzeyinde değişiklikleri replikatif olarak aktarır; major version upgrade, partial replication ve heterogenous senaryolar için kullanışlıdır. Multi-master replikasyon yerel olarak desteklenmez; BDR (Bi-Directional Replication) gibi üçüncü taraf çözümlerle mümkündür ancak operasyonel karmaşıklığı yüksektir.
Patroni ve etcd ile failover kümeleri
Patroni, PostgreSQL HA için endüstri standardı bir orkestrasyon aracıdır. etcd, Consul veya ZooKeeper ile birlikte çalışarak otomatik failover yönetir. Primary kaybedildiğinde standby'lardan biri otomatik olarak primary'ye yükseltilir; uygulama tarafı tipik olarak HAProxy veya PgBouncer üzerinden bağlantı yönlendirmesi alır.
Üretim ortamında 3 düğümlü Patroni kümesi (1 primary + 2 standby + 3 etcd düğümü) klasik konfigürasyondur ve %99,95+ SLA hedefini destekler.
PgBouncer ile bağlantı havuzlama
PostgreSQL her bağlantı için ayrı bir backend process açar; binlerce eşzamanlı bağlantı sunucuyu zorlar. PgBouncer, bağlantı havuzlama proxy'si olarak uygulamadan gelen binlerce kısa ömürlü bağlantıyı az sayıda kalıcı PostgreSQL bağlantısı üzerinden çoğullar. Yoğun OLTP iş yüklerinde performans için kritiktir.
Yedekleme ve felaket kurtarma
pg_dump ve pg_basebackup
pg_dump, mantıksal yedek üretir: SQL veya özel format dosya. Küçük-orta veritabanları için, version geçişlerinde ve seçici geri yükleme için uygundur. Büyük veritabanlarında saatler alabilir ve restore süresi de uzundur.
pg_basebackup, fiziksel yedek üretir: data directory'nin tam kopyası. Büyük veritabanları için hızlı yedek ve restore sağlar; PITR'nin temelini oluşturur.
WAL arşivleme ve Point-in-Time Recovery
WAL (Write-Ahead Log) kayıtları sürekli arşivlenerek, taban yedeği (base backup) üzerine uygulanabilir ve geri yükleme istediğiniz dakikaya kadar yapılabilir. Bu, "kullanıcı 14:23'te yanlış UPDATE çalıştırdı" gibi senaryolarda 14:22:55'e geri dönmenize olanak tanır.
PITR (Point-in-Time Recovery) modern PostgreSQL altyapısının olmazsa olmazıdır; pgBackRest, Barman ve WAL-G gibi araçlar bu yetenekleri operasyonel olarak ölçeklendirir.
Coğrafi yedeklilik
Üretim veritabanı için yedeklerin coğrafi olarak ayrı bir veri merkezinde tutulması felaket kurtarma için kritik. Yedekleri farklı bölgede S3 uyumlu nesne depolamada saklamak, hem fiziksel hem regülatif risk yönetimi sağlar.
Performans optimizasyonu ve indeksleme
B-tree, GIN, BRIN indeksleri
PostgreSQL birden çok indeks tipi sunar. B-tree varsayılan ve en yaygın indekstir, eşitlik ve sıralama sorguları için optimaldir. GIN (Generalized Inverted Index) JSONB, array ve full-text search için tasarlandı; çoklu değer içeren sütunlarda hızlı arama sağlar. BRIN (Block Range Index) sıralı veri (timestamp, sıralı ID) için çok düşük boyutlu indeks sunar; time-series ve büyük tablolarda etkili.
İndeks seçimi sorgu modellerine bağlıdır. Her sütuna indeks koymak yanlıştır; gereksiz indeks yazma performansını düşürür ve disk kullanımını artırır.
pg_stat_statements ile yavaş sorgu analizi
pg_stat_statements extension'ı, sistemde çalışan tüm sorguların istatistiklerini tutar: çağrı sayısı, toplam süre, ortalama süre, satır sayısı. Yavaş sorguları tespit etmek ve optimize etmek için temel araç. Üretim ortamında her zaman etkin tutulması önerilir.
EXPLAIN ve EXPLAIN ANALYZE komutları, sorgu planlayıcısının nasıl çalıştığını gösterir; yavaş sorguları analiz etmek için klasik araçtır.
VACUUM ve autovacuum ayarları
VACUUM, MVCC sonucu oluşan ölü satırları temizler ve indeks istatistiklerini günceller. Autovacuum bunu arka planda otomatik yapar; ancak yoğun update/delete iş yüklerinde varsayılan ayarlar yetersiz kalabilir. autovacuum_vacuum_scale_factor, autovacuum_vacuum_cost_limit gibi parametrelerin iş yüküne göre tuning'i gereklidir.
VACUUM FULL ise tabloyu tamamen yeniden yazar; disk alanını geri kazanır ama ACCESS EXCLUSIVE kilit alır. Üretim ortamında dikkatli planlanmalıdır.
shared_buffers, work_mem yapılandırması
shared_buffers PostgreSQL'in dahili cache boyutudur; tipik öneri toplam RAM'in %25'i. work_mem her sorgu için sıralama ve hash join operasyonlarında kullanılan bellek; çok küçükse diske dökülme olur, çok büyükse total bellek tüketimi patlar (her bağlantı work_mem kadar kullanabilir).
Tuning, iş yüküne ve donanım kapasitesine bağlıdır. pgtune, PGConfig gibi araçlar başlangıç parametrelerini önerir.
PostgreSQL güvenliği ve KVKK uyumu
Rol bazlı erişim kontrolü (RBAC)
PostgreSQL detaylı RBAC sistemi sunar: rol oluşturma, GRANT/REVOKE ile yetkilendirme, satır düzeyi güvenlik (Row-Level Security, RLS), kolon düzeyi yetkilendirme. RLS özellikle multi-tenant uygulamalarda her kullanıcının yalnızca kendi verisini görmesini garantilemek için güçlüdür.
Veri şifreleme (at-rest, in-transit)
In-transit şifreleme TLS (SSL) ile sağlanır; tüm üretim bağlantıları zorunlu olarak TLS olmalıdır. At-rest şifreleme PostgreSQL'in kendisinde yerleşik değildir; LUKS (disk düzeyi) veya pg_crypto extension (kolon düzeyi) kullanılır. Yönetilen hizmetlerde at-rest şifreleme tipik olarak sağlayıcı tarafında otomatik etkindir.
Audit log ve pgAudit eklentisi
Standart PostgreSQL log'u temel olayları kaydeder; ancak detaylı denetim için pgAudit extension'ı kullanılır. pgAudit hangi kullanıcının ne zaman hangi sorguyu çalıştırdığını yapılandırılabilir ayrıntıda kayıt eder. KVKK ve sektörel denetim gereksinimleri için kritik bir bileşendir.
KVKK kapsamında veri saklama
KVKK kapsamında veri saklama süresi politikası, silme prosedürleri ve veri ihlali bildirimi tanımlanmalıdır. PostgreSQL düzeyinde retention policy'leri partition tabanlı tasarlanabilir; partition'lar süre dolunca DROP edilir. Veri silme talepleri için anonymization veya pseudonymization stratejileri uygulanır.
Yerli veri merkezinde tutulan PostgreSQL, sınır ötesi aktarım dokümantasyonunu ortadan kaldırır ve KVKK denetim süreçlerini basitleştirir.
Self-hosted vs Managed PostgreSQL: TCO karşılaştırması
Yönetim, yama ve yedek maliyetleri
Self-hosted PostgreSQL için DBA zamanı, izleme altyapısı, yedekleme aracı, HA orkestrasyonu ve patch yönetimi iç maliyettir. 1 DBA aylık maliyeti tek başına çoğu küçük-orta kurum için yönetilen hizmetin tüm yıllık ücretinden yüksek olabilir.
Yönetilen hizmette tüm bu kalemler tek aylık ücrete dahildir; sağlayıcı uzman ekipleri tüm operasyonu üstlenir.
SLA ve uptime garantisi
Self-hosted'da SLA kurum içi disiplinin sonucudur; %99,9 SLA'yı yıllık 8,7 saat altı kesinti ile sürdürmek için 7/24 nöbet ve olgun incident response süreçleri gerekir. Yönetilen hizmette SLA sağlayıcı sözleşmesinde tanımlı; ihlali halinde kredi mekanizması işler.
100/500/1000 QPS senaryoları
| Senaryo | Self-hosted gereksinim | Managed avantajı |
|---|---|---|
| 100 QPS (küçük uygulama) | 1 VM + manuel yedek | DBaaS dakikalar içinde başlatma |
| 500 QPS (orta CRM/ERP) | Patroni HA + PgBouncer + 0,3 DBA | HA + bağlantı havuzu hazır |
| 1000+ QPS (büyük platform) | 3 düğüm Patroni + read replica + 0,5-1 DBA | Multi-replica + auto-tuning |
Tüm senaryolarda managed seçeneği TCO ve risk açısından çoğunlukla daha avantajlıdır; sadece çok özel performans veya kontrol gereksinimleri olan büyük platformlarda self-hosted düşünülmelidir.
Sıkça sorulan sorular (SSS)
PostgreSQL ücretsiz mi?
Evet, PostgreSQL tamamen ücretsiz ve açık kaynaktır; PostgreSQL Lisansı ticari kullanım, dağıtım ve modifikasyon serbestliği tanır. Üretim ortamında lisans maliyeti yoktur. Ek destek isteyen kurumlar EnterpriseDB veya yerli sağlayıcılardan ticari destek alabilir.
Major version upgrade nasıl yapılır?
İki standart yöntem vardır: pg_upgrade ile in-place upgrade (dakikalar sürer ancak dikkatli planlama gerektirir) ve logical replication ile zero-downtime upgrade. Logical replication yöntemi yeni sürümlü standby kurar, sync eder ve switch yapar. Production veritabanları için her major upgrade öncesi mutlaka test pencerelerinde doğrulanmalı ve tam yedek alınmalıdır.
Mevcut veritabanımı buluta nasıl taşırım?
Küçük-orta veritabanları için pg_dump + pg_restore tipik yöntemdir; büyük veritabanları için pgcopydb, AWS DMS veya logical replication ile kesintisiz geçiş mümkündür. Managed hizmet sağlayıcıları genellikle migration danışmanlığı sunar. Migration penceresi öncesi tam yedek ve restore testi zorunludur.
Oracle'dan PostgreSQL'e geçiş mümkün mü?
Evet, ancak Oracle'dan PostgreSQL'e geçiş tamamen otomatik değildir; Ora2Pg gibi araçlar şema ve veri taşıma sürecini büyük ölçüde otomatize eder. PL/SQL stored procedure'lerin PL/pgSQL'e çevrilmesi, Oracle-özel veri tipleri ve hint'lerin uyarlanması manuel emek gerektirir. Tipik projeler birkaç hafta ile birkaç ay arasıdır.
Cloud DBaaS güvenli mi?
Evet, kurumsal DBaaS hizmetleri genellikle self-hosted'tan daha güvenlidir; otomatik şifreleme, otomatik yedek, hızlı yamalama, audit log ve SOC ekibi standart hizmetin parçasıdır. KVKK için kritik kriter sağlayıcının veri merkezi konumu ve sözleşme şartlarıdır. Yerli sağlayıcı bu kriterleri doğal olarak karşılar.
Cloud4U Türkiye DBaaS ile PostgreSQL'i dakikalar içinde başlatın
İstanbul veri merkezi ve KVKK uyumu
Cloud4U Türkiye'nin Database-as-a-Service hizmeti, İstanbul Tier III veri merkezinde KVKK uyumlu PostgreSQL kümeleri sunar. Tüm veri yurt içinde tutulur; sınır ötesi aktarım dokümantasyonu gerekmez. Sözleşme şartlarıyla garanti edilen KVKK uyumu, denetim süreçlerini basitleştirir.
Otomatik yedek, PITR ve HA kümesi
- Otomatik günlük yedek + WAL arşivleme ile PITR
- Patroni tabanlı HA küme (primary + standby + otomatik failover)
- Şifreleme: TLS 1.3 in-transit, AES-256 at-rest
- 7/24 Türkçe DBA destek ve hesap yöneticisi
TRY faturalama ve ücretsiz deneme
Kendi iş yükünüze özel PostgreSQL DBaaS boyutlandırması ve şeffaf TRY fiyat teklifi için Cloud4U Türkiye Database as a Service sayfasını ziyaret edin. Uzman ekibimiz mevcut Oracle, MySQL veya PostgreSQL ortamınızı analiz eder, migrasyon planı çıkarır ve ücretsiz POC ile sistemi gerçek veri üzerinde test etmenize olanak tanır.