?
This document uses PHP Chinese website manual Release
在我們開(kāi)始講解之前,我們應(yīng)該先了解PostgreSQL 系統(tǒng)的基本體系。理解PostgreSQL的組件之間的相 互關(guān)系將會(huì)使本節(jié)顯得更清晰一些。
按照數(shù)據(jù)庫(kù)術(shù)語(yǔ)來(lái)說(shuō),PostgreSQL使用一種客戶 端/服務(wù)器的模式。一次PostgreSQL會(huì)話由下列相關(guān)的進(jìn)程(程序)組成:
一個(gè)服務(wù)器進(jìn)程,它管理數(shù)據(jù)庫(kù)文件,接受來(lái)自客戶端應(yīng)用與數(shù)據(jù)庫(kù)的連接, 并且代表客戶端在數(shù)據(jù)庫(kù)上執(zhí)行操作。數(shù)據(jù)庫(kù)服務(wù)器程序叫postgres。
那些需要執(zhí)行數(shù)據(jù)庫(kù)操作的用戶客戶端(前端)應(yīng)用。客戶端應(yīng)用可能本身 就是多種多樣的:它們可以是一個(gè)字符界面的工具,也可以是一個(gè)圖形界面 的應(yīng)用,或者是一個(gè)通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)來(lái)顯示網(wǎng)頁(yè)的web服務(wù)器,或者是一個(gè) 特殊的數(shù)據(jù)庫(kù)管理工具。一些客戶端應(yīng)用是和PostgreSQL 發(fā)布一起提供的,但絕大部分是用戶開(kāi)發(fā)的。
和典型的客戶端/服務(wù)器應(yīng)用(C/S應(yīng)用)一樣,這些客戶端和服務(wù)器可以在不同 的主機(jī)上。這時(shí)它們通過(guò)TCP/IP網(wǎng)絡(luò)連接通訊。你應(yīng)該記住的是,在客戶機(jī) 上可以訪問(wèn)的文件未必能夠在數(shù)據(jù)庫(kù)服務(wù)器機(jī)器上訪問(wèn)(或者只能用不同的文件 名進(jìn)行訪問(wèn))。
PostgreSQL服務(wù)器可以處理來(lái)自客戶端的多個(gè)并發(fā)請(qǐng)求。因此,它為每個(gè)請(qǐng)求 啟動(dòng)("forks")一個(gè)新的進(jìn)程。從這個(gè)時(shí)候開(kāi)始,客戶端和新服務(wù)器進(jìn)程就不再 經(jīng)過(guò)最初的postgres進(jìn)程進(jìn)行通訊。因此,主服務(wù)器總是在運(yùn)行,等待連接, 而客戶端及其相關(guān)聯(lián)的服務(wù)器進(jìn)程則是起起停停。當(dāng)然,用戶是肯定看不到這 些事情的。我們?cè)谶@兒談這些主要是為了完整。