Daha ileri bölümleri okumadan önce, PostgreSQL'in temel sistem mimarisini anlamanızda yarar var. PostgreSQLTM 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.
PostgreSQLTM, veritabanı dilinde sunucu/istemci temeline dayanan bir sistem kullanmaktadır. Bir PostgreSQLTM 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 web sunucusu veya özelleşmiş bir veritabanı onarım aracı. Bazı istemci uygulamaları PostgreSQLTM 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 olurlar. Böyle bir durumda birbileri ile TCP/IP ağ bağlantısı üzerinden haberleşirler. 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 (“fork”). Bu noktada, istemci ve yeni sunucu süreci özgün postmaster süreciyle etkileşime girmeden haberleşebilirler. 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.)