2.1. Mimarinin Temelleri

Daha ileri bölümleri okumadan önce, PostgreSQL'in temel sistem mimarisini anlamanızda yarar var. PostgreSQL bölümlerinin birbirleri ile nasıl ilişki içinde olduğunu anlamanız yönünde bu kısım bir derece de olsa yararlı olacaktır.

PostgreSQL, veritabanı dilinde sunucu/istemci temeline dayanan bir sistem kullanmaktadır. Bir PostgreSQL oturumu birbirleriyle ilişkili çalışan şu süreçlerden oluşur:

  • Veritabanı dosyalarını yöneten bir sunucu süreci istemci uygulamalarından gelen bağlantıları kabul eder ve istenilen işlemleri onlar adına gerçekleştirir. Veritabanı sunucu uygulamasının ismi postmaster'dır.

  • Kullanıcının istemci uygulaması veritabanında sorgulamanın gerçekleşmesini isteyen uygulamadır. İstemci uygulamaları çok çeşitlidir: salt metin (text) tabanlı bir istemci aracı, grafiksel arayüzlü bir uygulama, veritabanına bağlanıp ilgili HTML sayfaları olarak göstercek bir HTTP sunucusu veya özelleşmiş bir veritabanı onarım aracı. Bazı istemci uygulamaları PostgreSQL dağıtımları ile sağlanmakta olup çoğu da kullanıcılar tarafından geliştirilmektedir.

Genellikle, sunucu/istemci uygulamalarında, sunucu ve istemci ayrı makinelerde olur. Böyle bir durumda birbileri ile TCP/IP ağ bağlantısı üzerinden haberleşir. Bir istemci makinenin erişebildiği dosyaların veritabanı sunucusu olan makine üzerinde erişilebilir olamayabileceğini (ya da farklı bir dosya ismi ile erişilebilineceğini) aklınızdan çıkarmayın.

PostgreSQL sunucusu çoklu istemci bağlantılarına izin verebilmektedir. Bu amaçla her yeni bağlantı için yeni bir süreç başlatır. Bu noktada, istemci ve yeni sunucu süreci özgün postmaster süreciyle etkileşime girmeden haberleşebilir. Bu arada, postmaster istemci bağlantılarını bekler, istemcileri ilgili sunucu süreci ile ilişkilendirmeye çalışır. (Tabii ki, bunların hepsi kullanıcıdan habersiz olarak artalanda gerçekleşir. İşlemin nasıl gerçekleştiğini bilin istedik.)