PostgreSQL Nedir?
PostgreSQL; ACID uyumlu işlem modeli, gelişmiş query planner’ı, zengin veri tipleri (JSON/JSONB, Array,
HStore, Range), MVCC eşzamanlılık, genişletilebilir fonksiyon/uzantı mimarisi (ör. PostGIS
,
pg_stat_statements
) ve güçlü replikasyon seçenekleriyle kurumsal ölçekte kullanılan bir ilişkisel veritabanıdır.
Avantajları
- Güvenilirlik: Write-Ahead Logging (WAL) ve point-in-time recovery (PITR) desteği.
- Performans & Ölçeklenebilirlik: Paralel query, index çeşitleri (B-Tree, GIN, BRIN, GiST), partitioning.
- Genişletilebilirlik: Kullanıcı tanımlı fonksiyonlar, türler ve uzantılar.
- JSON/JSONB: Belge tabanlı sorgu esnekliği ve GIN index ile hızlı arama.
- Güçlü Ekosistem: PostGIS, TimescaleDB, FDW’ler (harici tablo) ve zengin sürücüler.
- Açık Kaynak: Lisans maliyeti yok; bulutta yönetilen sürümlerle hızlı devreye alma.
NUVIA Yaklaşımı
NUVIA olarak PostgreSQL’i; yüksek erişilebilirlik (HA) mimarileri, otomatik yedekleme stratejileri, gözlemlenebilirlik (monitoring & tracing) ve sıkı güvenlik politikalarıyla işletiriz. Çevik teslimat süreçlerinde, altyapıyı kodla (IaC) yönetir; CI/CD hatlarıyla şema değişikliklerini güvenli biçimde sunarız.
Mimari
- Primary/Standby replikasyon (asenkron/yarı-senkron)
- Patroni/pgPool-II ile otomatik failover
- Read replica ile okuma ölçekleme
Güvenlik
- Network segmentation, TLS,
pg_hba.conf
sıkılaştırma - RBAC,
SECURITY DEFINER
gözden geçirme - At-rest & in-transit şifreleme
Gözlemlenebilirlik
- Metrics:
pg_stat_statements
,pgBadger
, Exporter → Prometheus/Grafana - Log rotasyonu ve yavaş sorgu günlükleri
- Uyarı eşikleri & SLO takibi
Kullanım Senaryolarımız
OLTP Kurumsal Uygulamalar
Bankacılık, e-ticaret, ERP ve faturalama sistemleri için güçlü bütünlük kısıtları ve yüksek güvenilirlik.
- Yüksek eşzamanlılık için MVCC ve doğru indexleme
- Partitioning ile sıcak/soğuk veri ayrımı
Analitik & Karma İş Yükleri
JSONB + ilişkisel model hibrit yapıları; materialized view’lerle hızlı içgörü.
- BRIN indeksleriyle geniş zaman-serisi tabloları
- FDW ile veri gölü/harici kaynaklara erişim
Coğrafi Uygulamalar
PostGIS ile gelişmiş mekânsal sorgular, mesafe/çakışma analizleri, index destekli hızlı aramalar.
Olay Günlükleri & Telemetri
Zaman-serisi verilerde yazma hızı ve sıkıştırma için TimescaleDB veya native partitioning.
Hızlı Başlangıç
# Docker ile başlatma (örnek)
docker run --name pg -e POSTGRES_PASSWORD=secret -p 5432:5432 -d postgres:16
# psql bağlantısı
psql -h localhost -U postgres
# Örnek DB ve kullanıcı
CREATE DATABASE appdb;
CREATE USER app WITH ENCRYPTED PASSWORD 'app-pass';
GRANT ALL PRIVILEGES ON DATABASE appdb TO app;
-- Basit tablo ve index örneği
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
status TEXT NOT NULL,
payload JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- JSONB alanına GIN index\CREATE INDEX idx_orders_payload_gin ON orders USING GIN (payload);
-- Sık sorgulanan alanlara B-Tree index
CREATE INDEX idx_orders_user_status ON orders (user_id, status);
Yönetim & İşletim Notları
Yedekleme / Geri Dönüş
# Mantıksal yedek
pg_dump -Fc -d appdb > appdb.dump
pg_restore -d appdb_restored appdb.dump
# Fiziksel yedek (PITR için WAL arşivleme önerilir)
# postgresql.conf: archive_mode=on, archive_command, wal_level=replica
Performans İpuçları
- Yavaş sorgu günlüğü:
log_min_duration_statement
- Otomatik istatistik:
autovacuum
parametrelerini izleyin - Bağlantı havuzu: pgbouncer
- Konfigürasyon başlangıcı: shared_buffers, effective_cache_size, work_mem, maintenance_work_mem