標籤:資料庫設計 postgresql 資料庫系統
近期工作重點一直放在資料庫設計方面,藉助這次機會抽時間整理了一些我對PostgreSQL資料庫的理解,同時也是對近段時間學習的一個總結。對於很多人而言或許沒有聽說過這個資料庫,通常我們耳邊伴隨的都是Oracle、MySQL、Microsoft SQL Server一類的關係型資料庫。
但看下資料庫熱門排行榜,或許更能直觀的認識到PostgreSQL資料庫的強大與普遍
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/8A/DE/wKioL1g-LCKwF6STAAHQ0cc7IsE238.png-wh_500x0-wm_3-wmp_4-s_1014127460.png" title="11111.png" alt="wKioL1g-LCKwF6STAAHQ0cc7IsE238.png-wh_50" />
既然PostgreSQL排行這麼高,那為何在國內名氣不如其他資料庫呢?這其中我認為重點在於兩點:一、市場推廣力度的問題;二、應用情境與國內大多數公司情境不符合造成的。詳細等後續再進行分析。
PostgreSQL可以說是世界上可以獲得的最先進的開放源碼的資料庫系統,它包括了豐富的資料類型的支援,其中有些資料類型可以說連商務資料庫都不具備,比如 IP 類型和幾何類型等;它提供了多版本並發控制,支援幾乎所有 SQL構件(包括子查詢,事務和使用者自訂類型和函數),並且可以獲得非常廣闊範圍的(開發)語言綁定(包括 C,C++,Java,perl,tcl,和 python);PostgreSQL整體設計採用了C/S (client/server)結構,幾乎支援了所有類型的資料庫用戶端介面。其次PostgreSQL因其開源特性,形成了一個龐大的開源服務團隊,其相關的開源組件多種多樣(tablefunc、dict_xsyn、fuzzystrmatch、pg_trgm、cube),能滿足大多數情境下的需求。當然還有人稱其是曆史最悠久、實戰經驗最豐富的資料庫系統,它的擴充包括自然語言解析、多維索引、地理查詢、自訂資料類型等。
PostgreSQL資料庫雖然整體非常強大,但也是存在缺陷的。從市場人員角度上來講,之前在國內基本沒有大規模的使用經驗與架構設計,大多數停留在找個文檔折騰下的程度。這直接導致了該資料庫在國內市場的低迷,同樣的Mysql資料庫在這方面就較為領先了。MySQL在國內互連網行業積累了大量的高可用架構,分布式架構與災備經驗,但是PostgreSQL幾乎為0,但放眼國際網,不難看出PostgreSQL的一片天地的。其次在去IOE方面PostgreSQL因語言支援的全面化、資料對接遷移、去Oracle難度相比其他都簡單了很多,當然MySQL現在對去Oracle有更好的支援了。
其次在安全方面PostgreSQL事務符合ACID,確保你的提交是完全原子的、一致的、隔離的和持久的。
總結:
PostgreSQL是一個BSD協議的全開來源資料庫,其強大的查詢最佳化工具、豐富的資料類型提供了完善的關係資料存放區(支援部分非關聯式資料庫儲存)。有豐富的開源cluster軟體支援,可應用各種情境下的不同的需求。相比使用MySQL,其核心InnoDB一直被Oracle控制,無法達到最大化的發揮,其國內使用MySQL資料庫作為產品核心庫的大多數都是中小型項目,其原因雖是綜合對比導致,但相比PostgreSQL在中大型項目中的如魚得水,不得不說我更傾向於使用PostgreSQL。
備忘:下節談一下MySQL與PostgreSQL的對比優劣勢與使用情境。
本文出自 “華少” 部落格,請務必保留此出處http://huashao.blog.51cto.com/5279975/1878005
淺談PostgreSQL資料庫