天天看點

PostgreSQL修煉之道:從小工到專家. 1.1什麼是PostgreSQL

<b>1.1什麼是postgresql</b>

<b>1.1.1postgresql概述</b>

postgresql資料庫是目前功能最強大的開源資料庫,支援豐富的資料類型(如json和jsonb類型、數組類型)和自定義類型。而且它提供了豐富的接口,可以很容易地擴充它的功能,如可以在gist架構下實作自己的索引類型等,它還支援使用c語言寫自定義函數、觸發器,也支援使用流行的語言寫自定義函數,比如其中的pl/perl提供了使用perl語言寫自定義函數的功能,當然還有pl/python、pl/tcl,等等。

<b>1.1.2postgresql的發展曆史</b>

前身ingres:postgresql的前身是伯克利源于1977 年的 ingres 項目。這個項目是由著名的資料庫科學家michael stonebraker上司的。1982年,michael stonebraker離開伯克利大學,把ingres商業化,使之成為 relational technologies 公司的一個産品。後來 relational

tecchnologies被computer associates(ca)收購。ingres 是一個非關系型的資料庫。

伯克利的 postgres 項目:20世紀80年代,資料庫系統中的一個主要問題是資料關系維護。在1985年michael stonebraker回到伯克利後,為了解決ingres中的資料關系維護問題,啟動了一個後ingres(post-ingres)的項目,這就是 postgres 的開端。 postgres項目是由防務進階研究項目局(darpa)、陸軍研究辦公室(aro)、國家科學基金(nsf)

以及 esl公司共同贊助的。從1986年開始,michael stonebraker 教授發表了一系列論文,探讨了新的資料庫的結構設計和擴充設計。第一個“示範性”系統在 1987 年便可使用了,并且在 1988 年的資料管理國際會議(acm-sigmod)上展出。1989年6月釋出了版本 1給一些外部的使用者使用。由于源代碼維護的時間日益增加,占用了太多本應用于資料庫研究的時間,為減少支援的負擔,伯克利的postgres 項目在版本 4.2 時正式終止。

postgres95:在 1994 年,來自中國香港的兩名伯克利的研究所學生andrew yu 和 jolly chen 向 postgres 中增加了現在sql 語言的解釋器,将postgres改名為 postgres95,随後将 postgres95 源代碼釋出到網際網路上供大家使用。它成為一個開放源碼的postgres 代碼的繼承者。

postgresql6.x:到了 1996 年,很明顯地看出“postgres95”這個名字已經經不起時間的考驗。于是起了一個新名字 postgresql,為postgres與sql的縮寫,即增加了sql功能的postgres的意思。同時版本号也沿用伯克利 postgres 項目的順序,從6.0開始。

postgresql7.1:postgresql 7.1是繼6.5版本之後又一個有巨大變化的版本,首先它引入了預寫式日志的功能。這樣,事務就擁有了完善的日志機制,可以提供更好的性能,還可以實作更優良的備份和災難恢複的能力(比如聯機熱備份和當機後的自動恢複)。其次是不再限制文本類型的資料段長度,這從很大程度上解決了postgresql大對象的問題。

postgres8.x:該版本可以在windows下運作,它具有一些新的特性。比如具有事務儲存點功能、改變字段的類型、表空間、即時恢複(即時恢複允許對伺服器進行連續的備份。既可以恢複到失敗那個點,也可以恢複到以前的任意事務)等功能。并且開始支援perl 伺服器端程式設計語言。

postgresql9.x:進入9.x版本,辨別着postgresql進入了黃金發展階段。2010年9月20日釋出了postgresql

9.0,大大增強了複制的功能(replication),比如增加了流複制功能(stream replicaction)和hot standby功能。從9.0開始,可以很友善地搭建主從資料庫。2011年9月12日釋出了postgresql9.1,在該版本中增加了同步複制功能(synchronous replication);2012年9月10釋出了postgresql9.2,增加了級連複制的功能。

<b>1.1.3 postgresql資料庫的優勢</b>

postgresql有以下優勢:

postgresql資料庫是目前功能最強大的開源資料庫,它是最接近工業标準sql92的查詢語言,并且正在實作新的功能以相容最新的sql标準:sql2003。

穩定可靠:postgresql是唯一能做到資料零丢失的開源資料庫。有報道稱國外的部分銀行也在使用postgresql資料庫。

開源省錢: postgresql資料庫是開源的、免費的,而且是bsd協定,在使用和二次開發上基本沒有限制。

支援廣泛:postgresql 資料庫支援大量的主流開發語言,包括c、c++、perl、python、java、tcl,以及php等。

postgresql社群活躍:postgresql基本上每三個月推出一個更新檔版本,這意味着已知的bug很快會被修複,有應用場景的需求也會及時得到響應。

<b>1.1.4 postgresql應用現狀和發展趨勢</b>

postgresql目前在國外很流行,特别是近幾年使用postgresql資料庫的公司越來越多。比如,日本電信(ntt)

大量使用postgresql替代oracle資料庫,并且在 postgresql之上二次開發了postgres-xc,postgres-xc是對使用者完全相容postgresql接口的share-nothing 架構的資料庫叢集。網絡電話公司skype 也大量使用postgresql,并貢獻了一些與postgresql資料庫配套的開源軟體:

pl/proxy:postgresql中的資料水準拆分軟體 

pgq:使用postgresql的消息隊列軟體

londiste:用c語言實作的在postgresql資料庫之間進行邏輯同步的軟體

全球最大的crm軟體服務提供商salesforce也開始使用postgresql,并招募了postgresql核心開發者tom lane。

2012年,美國聯邦機構全面轉向postgresql陣營;法國也正積極推動政府機構采用postgresql資料庫,進而取代商業資料庫。

在國内,越來越多的公司開始使用postgresql,如斯凱網絡(股票代碼:mobi)的背景資料庫基本使用的都是postgresql資料庫,去哪兒網(qunar.com)也大量使用了postgresql資料庫。

主流的雲服務提供商如亞馬遜、阿裡雲的rds(關系型資料庫服務)同樣提供了postgresql的支援。