Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

PostgreSQL, verileri güvenli, tutarlı ve yüksek performanslı şekilde saklamak ve yönetmek için kullanılan açık kaynaklı, gelişmiş bir ilişkisel veritabanı sistemidir.
PostgreSQL (kısaca Postgres), açık kaynak, yüksek güvenilirlikli ve kurumsal seviyede kullanılan bir ilişkisel veritabanı yönetim sistemidir.
Ama PostgreSQL’i “sadece tablo tutan bir veritabanı” olarak düşünmek eksik olur.
PostgreSQL;
veri bütünlüğü,
yüksek eşzamanlılık,
karmaşık sorgular,
büyük veri hacimleri
için tasarlanmış bir altyapıdır.
Birçok sistemde PostgreSQL tercih edilmesinin temel sebepleri şunlardır:
Bunları tek tek, sözlü şekilde açalım.
ACID, veritabanlarının olmazsa olmazıdır:
PostgreSQL, her transaction’ı Write-Ahead Logging (WAL) ile diske yazar.
Yani elektrik kesilse bile:
“Ben bu veriyi yazmıştım” diyebilir.
BEGIN;
UPDATE accounts
SET balance = balance - 1000
WHERE id = 1;
UPDATE accounts
SET balance = balance + 1000
WHERE id = 2;
COMMIT;
Eğer ortada bir hata olursa:
ROLLBACK;
➡️ Para asla yarım taşınmaz.
Çoğu kişi PostgreSQL’i sevdikten sonra şunu söyler:
“Aynı anda yüzlerce kişi sorgu atıyor ama sistem kilitlenmiyor.”
Bunun sebebi MVCC (Multi-Version Concurrency Control).
Yani:
- Sen eski veriyi okurken
- Başkası yeni veriyi yazabilir
Bu da yüksek trafikli sistemlerde PostgreSQL’i çok güçlü yapar.
İndeks yoksa:
PostgreSQL tüm tabloyu satır satır gezer.
İndeks varsa:
Aradığını direkt bulur.
CREATE INDEX idx_users_email
ON users(email);
=<, >BETWEENiçin idealdir.
CREATE INDEX idx_users_meta
ON users
USING GIN (metadata);
JSON içinde arama yapıyorsan olmazsa olmaz.
CREATE INDEX idx_active_users
ON users(email)
WHERE is_active = true;
Sadece aktif kullanıcılar için indeks oluşturur.
Daha az disk, daha hızlı sorgu.
PostgreSQL, JSON’u sadece saklamaz.
İçinde sorgu da yapar.
SELECT *
FROM users
WHERE profile->>'city' = 'Ankara';
JSONB kullanırsan:
Bu yüzden:
PostgreSQL = SQL + NoSQL hibriti gibi çalışır.
PostgreSQL’de iş mantığını sadece backend’e yazmak zorunda değilsin.
CREATE OR REPLACE FUNCTION update_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_update_timestamp
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION update_timestamp();
Artık backend unuttuysa bile
veritabanı seni kurtarır.
Gerçek dünyadan örnekler:
Sebep net:
Veri kaybına tahammülü olmayan sistemler
Kurumsal bir projede:
“İşler büyüyebilir” diyorsan
PostgreSQL güvenli limandır.
Şu sorulardan biri bile “evet” ise:
➡️ PostgreSQL doğru seçimdir.