PostgreSQL Veri Tabanı Mimarisi

PostgreSQL, istemci-sunucu modeline dayalı, çoklu süreç (multi-process) mimarisi kullanan ve ACID (transaction ve işlem) uyumluluğu sağlayan bir ilişkisel veri tabanı yönetim sistemidir. Bu mimari, PostgreSQL’in yüksek performans, veri tutarlılığı ve ölçeklenebilirlik gibi kritik özellikleri sunmasını mümkün kılar.


PostgreSQL’in mimarisi üç ana bileşenden oluşur:

1. Hafıza (Memory) Mimarisi
2. Proses (Process) Mimarisi
3. Depolama Yapısı (Storage Architecture)

1. Hafıza Mimarisi

Hafıza mimarisi, PostgreSQL’in sorgu işleme ve veri depolama performansını optimize etmek için kullanılan bellek yapılarını içerir. Bu yapıların temel amacı, disk erişimini azaltarak veri işleme hızını artırmaktır.

a. Shared Buffers (Paylaşılan Bellek)

  •  PostgreSQL’deki tüm bağlantılar tarafından paylaşılan bir bellek havuzudur.
  •  Tablolar, indeksler ve diğer sık kullanılan veriler burada saklanır.
  •  Disk I/O işlemlerini azaltarak performansı artırır.

b. Work Memory (Çalışma Belleği)

  •  Sorgu sıralama ve hash işlemleri gibi operasyonlar için geçici bir bellek alanıdır.
  •  Her bağlantı için ayrı bir alan olarak tahsis edilir.

c. Maintenance Work Memory (Bakım Belleği)

  • VACUUM, ANALYZE ve indeks oluşturma gibi büyük veri işlemleri sırasında kullanılan bellektir.

d. WAL Buffers (Write-Ahead Logging Belleği)

  • Veri değişikliklerini geçici olarak saklayan bir bellek alanıdır.
  • Bu veriler daha sonra WAL dosyalarına yazılır.

e. Temporary Buffers (Geçici Bellek)

  • Geçici tablolar ve işlemler için ayrılmıştır.
  • Bağlantı bazında dinamik olarak tahsis edilir.

2. Proses Mimarisi

PostgreSQL’in proses mimarisi, çoklu süreç modeline dayanır. Her istemci bağlantısı için ayrı bir süreç oluşturulur ve bu süreçler birbirinden bağımsız olarak çalışır.

a. Postmaster Süreci

  • PostgreSQL’in ana sürecidir.
  • İstemci bağlantılarını dinler ve yeni bağlantılar için süreçler oluşturur.

b. Arka Plan Süreçleri

1. WAL Writer

  • WAL buffer içeriğini diske yazar.

2. Background Writer

  • Paylaşılan bellekteki kirli sayfaları düzenli aralıklarla diske yazar.

3. Checkpointer

  • Bellekteki tüm veriyi diske yazarak kontrol noktaları (checkpoints) oluşturur.

4. Autovacuum Daemon

  • Tabloların şişkinliğini (bloat) azaltır ve istatistikleri günceller.

5. Stats Collector

  • Sorgu optimizasyonu için performans istatistiklerini toplar.

c. İstemci Süreçleri

  • Her istemci bağlantısı için ayrı bir sunucu süreci (server process) oluşturulur.

3. Depolama Yapısı

PostgreSQL, disk üzerinde verileri güvenilir ve optimize bir şekilde depolamak için bir dizi yapı kullanır.

a. Write-Ahead Logging (WAL)

  • Veri kaybını önlemek ve veri bütünlüğünü sağlamak için değişiklikleri önce WAL dosyalarına yazar.

b. Heap Tabloları

  • Tablolardaki veriler, satır bazında heap yapısında saklanır.
  • Güncelleme sırasında eski veriler silinmez; yeni veriler eklenir.

c. TOAST (The Oversized-Attribute Storage Technique)

  • Büyük veri türlerini (örneğin, uzun metinler veya dosyalar) ana tablo dışında ayrı bir tabloya aktarır.

d. FSM (Free Space Map) ve Visibility Map

  • FSM: Tablolardaki boş alanları takip eder.
  • Visibility Map: Görünür olan satırları izler ve optimize sorgu planlaması yapar.

Sonuç

PostgreSQL’in mimarisi, yüksek performans ve veri bütünlüğü için optimize edilmiştir. Hafıza mimarisi, sorguların hızlı işlenmesini sağlarken; proses mimarisi, çoklu kullanıcı desteği sunar. Depolama yapısı ise verilerin güvenli ve verimli bir şekilde saklanmasını garanti eder. Bu esnek yapı, PostgreSQL’i hem küçük hem de büyük ölçekli uygulamalar için uygun hale getirir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir