İçeriğe geç
PostgreSQL

PostgreSQL, SQL ile çalışan, özgür ve açık kaynak bir nesne-ilişkisel veritabanı yönetim sistemidir. Transaction, ilişkisel kısıtlar, MVCC, JSONB ve farklı indeks türleriyle uygulama verisini yönetir. Resmi proje özeti özellikleri; PostgreSQL License ise kullanım ve dağıtım koşullarını açıklar.

Uzantılar; coğrafi veri, vektör arama veya başka özel iş yükleri için motorun yeteneklerini genişletebilir. Ancak her uzantının lisansı, desteklenen PostgreSQL sürümü ve yükseltme yolu ayrıdır. Çekirdeğin lisansı bütün ekosisteme otomatik uygulanmaz.

PostgreSQL mi MySQL mi?

İki motor da ilişkisel uygulamalarda kullanılabilir. Seçim yalnız özellik sayısına veya genel bir hız sıralamasına dayanmamalıdır.

Karar alanıDeğerlendirme
Hazır uygulamaUygulama üreticisinin desteklediği motor ve sürüm önceliklidir.
Veri modeliİlişkisel kısıtlar, JSON sorguları, özel veri türleri ve gerekli uzantılar karşılaştırılır.
Mevcut SQLFonksiyonlar, veri türleri, collation, transaction davranışı ve ORM sorguları pilotta sınanır.
PerformansAynı veri, indeks, donanım ve eşzamanlılıkla gerçek sorgular ölçülür.
İşletimEkibin yetkinliği, yama süreci, HA ve geri yükleme araçları birlikte değerlendirilir.

MariaDB / MySQL altyapısından PostgreSQL’e geçiş yalnız bağlantı adresini değiştirmek değildir. Stored procedure, sorgu planı, sequence ve karakter karşılaştırma davranışları uygulama açısından ele alınmalıdır.

PostgreSQL kurulumu öncesi kararlar

Resmi indirme sayfasından işletim sistemine uygun paket kaynağı seçilir. Bu sayfa adım adım kurulum komutları yerine üretim hazırlığına odaklanır.

  • Sürüm: Destek süresi, işletim sistemi ve uzantı uyumu doğrulanır; otomatik olarak “en yeninin bir altı” seçilmez.
  • Erişim: TLS, kimlik doğrulama, rol yetkileri ve pg_hba.conf kuralları birlikte tasarlanır. Uygulama superuser hesabıyla çalıştırılmaz.
  • Bağlantı: Uygulama havuzu ve gerekiyorsa PgBouncer pooling modu belirlenir. Sabit bir bağlantı tasarruf oranı vaat edilmez.
  • Depolama: Veri, WAL, geçici dosya ve yedek büyümesi ayrı ölçülür.
  • İzleme: Sorgu gecikmeleri, lock beklemeleri, bağlantılar, autovacuum ve replikasyon sağlığı izlenir.

Replikasyon ve Patroni’nin rolü

PostgreSQL streaming replication, değişiklik kayıtlarını içeren WAL‘ı (Write-Ahead Log) primary’den standby sunuculara aktarır. Fiziksel replikasyonda standby aynı verinin kopyasını tutar; bu, veriyi parçalara dağıtan sharding değildir. Patroni ise lider seçimi ve failover yönetimini üstlenir; yedekleme veya bağlantı havuzu yerine geçmez.

PostgreSQL replikasyon belgesine göre asenkron aktarımda henüz replica’ya ulaşmamış işlemler failover sırasında kaybolabilir. Senkron aktarımda beklenen onay seviyesi ayrıca önemlidir: WAL’ın alınması, diske yazılması ve sorgulara görünür hâle gelmesi aynı aşama değildir. remote_apply ilgili senkron standby’da uygulanmayı bekler; rastgele bir read replica için genel read-after-write garantisi vermez.

Backup, restore ve PITR

Mantıksal backup, veri ve veritabanı nesnelerini yeniden oluşturulabilir biçimde dışa aktarır; fiziksel backup veritabanı dosyalarını esas alır. Bunlar farklı kurtarma ve taşıma ihtiyaçlarına yanıt verir. PITR, uygun bir base backup ve hedef ana kadar kesintisiz WAL zinciri gerektirir. Yalnız pg_dump almak aynı kurtarma imkânını sağlamaz.

Yedek sıklığı ve saklama süresi RPO/RTO hedeflerine göre belirlenir. Başarılı yedek komutu yeterli kanıt değildir: izole ortamda geri yükleme, veri kontrolü ve uygulama açılışı denenir. Ana sürüm yükseltmesinde pg_upgrade, dump/restore veya uygun replikasyon yöntemi; uzantı uyumu ve geri dönüş koşullarıyla birlikte seçilir.

Yaygın sorunlarda ilk kontrol

  • Bağlantı sayısı artıyor: Havuz sızıntısı, uzun transaction ve uygulama eşzamanlılığı incelenir; yalnız limiti yükseltmek çözüm değildir.
  • Sorgu yavaşlıyor: Sorgu planı, istatistikler, indeksler ve lock beklemeleri ayrılır; bütün tablolara aynı tuning değeri uygulanmaz.
  • Tablo şişiyor: Uzun transaction, autovacuum ilerlemesi ve ölü satır birikimi kontrol edilir.
  • Replica geride kalıyor: WAL üretimi, ağ, disk ve standby replay beklemeleri birlikte incelenir.
  • WAL diski doluyor: Arşivleme hatası ve slot’ların tuttuğu WAL araştırılır; pg_wal dosyaları elle silinmez.

İlgili hizmetlerimiz

Sıkça sorulan sorular

PostgreSQL ücretsiz mi?
PostgreSQL, serbest kullanım ve dağıtıma izin veren PostgreSQL License ile yayımlanır. Uzantılar, yönetilen hizmet ve ticari destek aynı lisans veya maliyet kapsamına dahil değildir; ayrıca değerlendirilir.
JSON verisi için MongoDB şart mı?
Hayır. PostgreSQL JSON ve JSONB veri türlerini destekler. İlişkisel kısıtlarla birlikte doküman alanlarına ihtiyaç varsa aynı motor yeterli olabilir. Belge modeli, sorgular ve ölçekleme ihtiyacı test edilerek MongoDB gibi ayrı bir motorla karşılaştırılır.
Replica gecikmesi yalnız raporlamayı mı etkiler?
Hayır. Replica’dan yapılan okumaların güncelliğini, failover’da veri kaybı penceresini ve toparlanma süresini etkileyebilir. Replication slot kullanan bir replica geride kalır veya bağlantısı kesilirse, slot için tutulan WAL primary üzerinde disk birikimine yol açabilir. Slot bir bağlantı değil, gerekli WAL’ın erken silinmesini önleyen durum kaydıdır.
PgBouncer transaction mode her uygulamada kullanılabilir mi?
Hayır. Bağlantı her transaction sonunda havuza döner. Oturuma bağlı SET, LISTEN, geçici tablo ve prepared statement kullanımı; istemci, PgBouncer sürümü ve ayarlarıyla birlikte kontrol edilmelidir.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.