PostgreSQL從菜鳥到專家 歷史和架構

          現在是時候告訴你到底PostgreSQL是什麼了。它是一個包含關係模型和支持SQL標準查詢語言的DBMS(數據庫管理系統)。

  PostgreSQL也非常先進和可靠,並且性能非常高。它基本上可以在任何UNIX平臺上運行,包含類UNIX系統,比如FreeBSD、Linux和Mac OS X。它也可以在Microsoft Windows NT/2000/2003服務器版本上運行,甚至可以在Windows XP上進行開發。並且,就像本章開始提及的,它免費且開源。

  PostgreSQL可以與其他DBMS媲美。它基本上包含其他所有商業的或開源的數據庫中你能找到的功能,甚至一些你找不到的功能。

  PostgreSQL 包含以下功能(在PostgreSQL FAQ裏面列出的):

  l 事務

  l 子查詢

  l 視圖

  l 外鍵參照完整性

  l 複雜的鎖

  l 用戶自定義類型

  l 繼承

  l 規則

  l 多版本併發控制

  從版本6.5開始,PostgreSQL就非常的穩定,這通過針對每個發佈版本都通過大量的迴歸測試得以保證。7.x發佈版比以前版本更接近SQL92標準,並去掉了令人討厭的行數限制。

  本書中使用的PostgreSQL,8.x版本,增加了以下新功能:

  l Microsoft Windows原生支持

  l 表空間

  l 可以修改列類型

  l 時間點恢復

  PostgreSQL被證實在使用中非常可靠。每次發佈都被嚴格控制,BETA都經過至少一個月的測試。通過龐大的用戶社區和普及的源碼訪問,BUGs很快就被修復了。

  PostgreSQL的性能在每次發佈都有提升,最新的基準測試顯示在某些條件下,它可以同商業產品相媲美。一些非全功能的數據庫系統性能會比它高出一些,因爲這些數據庫在沒有全功能帶來的性能損耗。當然,對於足夠簡單的應用,可以使用扁平文件的數據庫系!

  PostgreSQL歷史簡介

  PostgreSQL可以回溯它的家族樹到1977年的加州大學伯克利分校(University of California at Berkeley,UCB)。一個叫做Ingres的關係數據庫由UCB在1977到1985年開發。Ingres是一個著名的UCB產出,在很多學院和研究團體的UNIX計算機上嶄露頭角。爲了服務於商業市場,Ingres的源碼由Relational Technologies/Ingres公司加以改良併成爲第一個商用RDBMS。

  注:今天,Ingres已經變成了CA-INGRES II,一個Computer Associates公司的產品。它最近也變成了開源產品。

  同時,在UCB,從1986到1994年,一個名叫Postgres的關係數據庫服務器被繼續開發。同樣,這份代碼被Illustra公司拿去發展成一個商業化的產品(Illustra 公司後來被 Informix 公司併購,程序則整合到 Informix的 Universal Server 去了)。在1994年,Postgres被添加了SQL功能,且被易名爲Postgres95。

  到1996年,Postgres開始變得非常流行,開發人員決定開放它的開發到一個郵件列表,成功的實現了志願者驅動的Postgres發展。這時候,Postgres經歷了它的最後一次更名,替換“95”標記爲更恰當的“SQL”,反映出它現在支持的查詢語言標準。PostgreSQL誕生了。

  現在,一個因特網上的開發團隊使用其他開源軟件像Perl,Apache和PHP的同樣的方法開發着PostgreSQL。用戶可以訪問源碼並貢獻修復代碼、增強功能和建議新功能。PostgreSQL的官方發佈網站爲http://www.postgresql.org。

  已經有很多公司提供商業支持了。例如EnterpriseDB公司,期網站地址爲:http://www.enterprisedb.com。

PostgreSQL架構

  PostgreSQL強壯的一個原因源於它的架構。和商業數據庫一樣,PostgreSQL可以用於C/S(客戶/服務器)環境。這對於用戶和開發人員有很多好處。

  PostgreSQL安裝核心是數據庫服務端進程。它允許在一個獨立服務器上。需要訪問存儲在數據庫中的數據的應用程序必須通過數據庫進程。這些客戶端程序無法直接訪問數據,即使它們和服務程序在同一臺機器上。

  注:PostgreSQL還不具有一些企業級商業數據庫的負載均衡和提供擴展的可伸縮性和可恢復性的HA(High-Availability,高可用性)功能。在http://gborg.postgresql.org有一些PostgreSQL認可的項目針對增加這些功能在進行中,同時也有一些商業解決方案存在。

  這種分開爲客戶端和服務器端的方式可以讓應用程序分佈式允許。你可以使用網絡來分隔你的客戶端和服務端,使開發的客戶端程序適合用戶的使用環境。例如,你可以在UNIX上實現數據庫並建立運行在在Microsoft Windows上的客戶端程序。圖1-3顯示一個典型的分佈式PostgreSQL應用。

  

圖1-3 PostgreSQL 架構

  在途1-3中,你可以看到幾個客戶端通過網絡連接到服務器。對於PostgreSQL,這需要是一個TCP/IP網絡——一個局域網(local area network,LAN)或者甚至是因特網。客戶端連接到數據庫主進程(在圖1-3中叫做postmaster),主進程爲這個客戶端的訪問請求專門建立一個新的服務端進程提供服務。

  服務器專注於數據處理,而不是嘗試控制很多客戶端訪問服務器上共享目錄中存儲的數據,這讓PostgreSQL高效的管理數據的完整性,即使在存在大量的用戶的情況下。

  客戶端程序使用專有協議連接到PostgreSQL。然而,通過在客戶端安裝軟件而爲應用程序提供一個標準的接口是可能的,例如開放式數據庫連接(ODBC,Open Database Connectivity)標準或者Java程序的Java數據庫連接(JDBC)標準。ODBC驅動的存在運行很現存的應用程序使用PostgreSQL作爲一個數據庫,包括的微軟的Office產品例如Excel和Access。你將在第三、第五和第十三到十八章瞭解不同的PostgreSQL連接方法。

  PostgreSQL的C/S架構允許任務分工。非常適合於存儲和訪問大量數據的服務器主機可以用作安全的數據儲存庫。可以爲客戶端開發複雜的圖形界面程序。另外,基於網頁的前端可以通過建立網頁模式的結果集到瀏覽器訪問數據,而不需要另外的客戶端軟件。我們將在第五章和十五章回頭討論這些想法。

  通過PostgreSQL訪問數據

  通過PostgreSQL,你可以通過好幾種方法訪問你的數據:

  l 通過命令行程序執行SQL。本書自始至終都會用到這種方法。

  l 直接嵌入SQL到你的應用程序(使用嵌入式SQL)。我們將在14章討論怎樣在C程序中使用它。

  l 大量不同的程序語言使用功能調用(APIs)準備和執行SQL,掃描結果集以及執行更新。13章將覆蓋PostgreSQL的C語言API。

  l 通過ODBC(參考第3章)或者JDBC(參考17章)標準的驅動間接訪問PostgreSQL數據庫,或者使用標準庫,例如Perl的DBI庫(參考16章)。

  什麼是開源?

  21世紀開始的時候,開源軟件提供了大量的東西,PostgreSQL就是一個很好的例子。但是開源到底意味着什麼呢?開源的條款在施加到軟件上時有非常明確的意義。這意味着軟件在提供的時候,同時提供了源碼。這並不意味着沒有其他條件被施加到軟件的使用上。在某些情況下使用(開源)軟件,一樣需要得到許可。

  開源許可賦予你使用、修改和重新發布它而不需要付許可費用的權力。這意味着你可以在你的機構中覺得合適的地方使用PostgreSQL。

  如果你的開源軟件有一些問題,因爲你有源碼,你既可以自己修復它,也可以將代碼交給別人來幫忙修復。有很多商業公司提供對開源軟件的支持,所以如果你選擇使用開源產品,你不必感到被忽視。

  有很多種開源許可的變種,一些比其他的更自由。但所有的都支持提供源碼和允許重新發布。

  最自由的是BSD軟件許可(Berkeley Software Distribution),它提供“隨便你怎麼處置這個軟件。”

  最寬容的許可是伯克利軟件分發(BSD,Berkeley Software Distribution)許可,它實際上說“用這個軟件做任何你想做的。但不提供任何擔保”。PostreSQL使用的軟件許可(http://www.postgresql.org/about/licence)響應BSD軟件許可的精神並套用它的說法,“允許以任何目的使用、拷貝、修改和重新發布這套軟件以及文檔,不需要任何費用,不需要簽訂任何書面協議,提供以上的版權通告以及這段和以下兩個段落的文字在所有的拷貝中”。緊接着的段落時免責聲明和保證書。

  相關資源

  有很多關於數據庫的以及關於PostgreSQL的進一步信息的印刷的和在線資源。

  對於更對的關於數據庫的理論,可以查看位於http://www.frick-cpa.com/ss7/default.htm的David Frick的網站的數據庫理論的章節。

  PostgreSQL的官方網站位於http://www.postgreSQL.org,在這裏你可以找到更多的關於PostgreSQL的歷史,下載PostgreSQL的拷貝,瀏覽官方文檔以及更多的東西(包括學習怎樣發佈PostgreSQL)。

  PostgreSQL也是Red Hat Database的基礎,也就是PostgreSQL- Red Hat版。你可以在在Red Hat的網站的http://sources.redhat.com/找到更多的關於PostgreSQL以及Red Hat爲它開發的工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章